text:
# PromQL Service
PromQL([Prometheus Query Language](https://prometheus.io/docs/prometheus/latest/querying/basics/)) Service
exposes Prometheus Querying HTTP APIs including the bundled PromQL expression system.
Third-party systems or visualization platforms that already support PromQL (such as Grafana),
could obtain metrics through PromQL Service.

As SkyWalking and Prometheus have fundamental differences in metrics classification, format, storage, etc.
The PromQL Service supported will be a subset of the complete PromQL.

## Details Of Supported Protocol
The following doc describes the details of the supported protocol and compared it to the PromQL official documentation.
If not mentioned, it will not be supported by default.

### Time series Selectors
#### [Instant Vector Selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#instant-vector-selectors)
For example: select metric `service_cpm` which the service is `$service` and the layer is `$layer`.
```text
service_cpm{service='$service', layer='$layer'}
```
**Note: The label matching operators only support `=` instead of regular expressions.**

#### [Range Vector Selectors](https://prometheus.io/docs/prometheus/latest/querying/basics/#range-vector-selectors)
For example: select metric `service_cpm` which the service is `$service` and the layer is `$layer` within the last 5 minutes.
```text
service_cpm{service='$service', layer='$layer'}[5m]
```

#### [Time Durations](https://prometheus.io/docs/prometheus/latest/querying/basics/#time-durations)
| Unit | Definition   | Support |
|------|--------------|---------|
| ms   | milliseconds | yes     |
| s    | seconds      | yes     |
| m    | minutes      | yes     |
| h    | hours        | yes     |
| d    | days         | yes     |
| w    | weeks        | yes     |
| y    | years        | **no**  |

### Binary operators
#### [Arithmetic binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#arithmetic-binary-operators)
| Operator | Definition           | Support |
|----------|----------------------|---------|
| +        | addition             | yes     |
| -        | subtraction          | yes     |
| *        | multiplication       | yes     |
| /        | division             | yes     |
| %        | modulo               | yes     |
| ^        | power/exponentiation | **no**  |

##### Between two scalars
For example:
```text
1 + 2
```

##### Between an instant vector and a scalar
For example:
```text
service_cpm{service='$service', layer='$layer'} / 100
```

##### Between two instant vectors
For example:
```text
service_cpm{service='$service', layer='$layer'} + service_cpm{service='$service', layer='$layer'}
```

**Note: The operations between vectors require the same metric and labels, and don't support [Vector matching](https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching).**

#### [Comparison binary operators](https://prometheus.io/docs/prometheus/latest/querying/operators/#comparison-binary-operators)
| Operator | Definition       | Support |
|----------|------------------|---------|
| ==       | equal            | yes     |
| !=       | not-equal        | yes     |
| \>       | greater-than     | yes     |
| <        | less-than        | yes     |
| \>=      | greater-or-equal | yes     |
| <=       | less-or-equal)   | yes     |
##### Between two scalars
For example:
```text
1 > bool 2
```

##### Between an instant vector and a scalar
For example:
```text
service_cpm{service='$service', layer='$layer'} > 1
```

##### Between two instant vectors
For example:
```text
service_cpm{service='service_A', layer='$layer'} > service_cpm{service='service_B', layer='$layer'}
```

### HTTP API

#### Expression queries

##### [Instant queries](https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries)
```text
GET|POST /api/v1/query
```

| Parameter | Definition                                                                                | Support | Optional   |
|-----------|-------------------------------------------------------------------------------------------------------------------------------------|---------|------------|
| query     | prometheus expression                                                                                | yes     | no         |
| time      | **The latest metrics value from current time to this time is returned. If time is empty, the default look-back time is 2 minutes.** | yes     | yes        |
| timeout   | evaluation timeout                                                                                | **no**  | **ignore** |

For example:
```text
/api/v1/query?query=service_cpm{service='agent::songs', layer='GENERAL'}
```

Result:
```json
{
    "status": "success",
    "data": {
        "resultType": "vector",
        "result": [
            {
                "metric": {
                    "__name__": "service_cpm",
                    "layer": "GENERAL",
                    "scope": "Service",
                    "service": "agent::songs"
                },
                "value": [
<PHONE_NUMBER>,
                    "6"
                ]
            }
        ]
    }
}
```

##### [Range queries](https://prometheus.io/docs/prometheus/latest/querying/api/#range-queries)
```text
GET|POST /api/v1/query_range
```

| Parameter | Definition                                                                           | Support | Optional   |
|-----------|--------------------------------------------------------------------------------------|---------|------------|
| query     | prometheus expression                                                                | yes     | no         |
| start     | start timestamp, **seconds**                                                         | yes     | no         |
| end       | end timestamp, **seconds**                                                           | yes     | no         |
| step      | **SkyWalking will automatically fit Step(DAY, HOUR, MINUTE) through start and end.** | **no**  | **ignore** |
| timeout   | evaluation timeout                                                                   | **no**  | **ignore** |

For example:
```text
/api/v1/query_range?query=service_cpm{service='agent::songs', layer='GENERAL'}&start=1677479336&end=1677479636
```

Result:
```json
{
    "status": "success",
    "data": {
        "resultType": "matrix",
        "result": [
            {
                "metric": {
                    "__name__": "service_cpm",
                    "layer": "GENERAL",
                    "scope": "Service",
                    "service": "agent::songs"
                },
                "values": [
                    [
<PHONE_NUMBER>,
                        "18"
                    ],
                    [
<PHONE_NUMBER>,
                        "18"
                    ],
                    [
<PHONE_NUMBER>,
                        "18"
                    ],
                    [
<PHONE_NUMBER>,
                        "18"
                    ],
                    [
<PHONE_NUMBER>,
                        "18"
                    ],
                    [
<PHONE_NUMBER>,
                        "18"
                    ]
                ]
            }
        ]
    }
}
```

#### Querying metadata

##### [Finding series by label matchers](https://prometheus.io/docs/prometheus/latest/querying/api/#finding-series-by-label-matchers)
```text
GET|POST /api/v1/series
```

| Parameter | Definition                   | Support | Optional |
|-----------|------------------------------|---------|----------|
| match[]   | series selector              | yes     | no       |
| start     | start timestamp, **seconds** | yes     | no       |
| end       | end timestamp, **seconds**   | yes     | no       |

For example:
```text
/api/v1/series?match[]=service_traffic{layer='GENERAL'}&start=1677479336&end=1677479636
```

Result:
```json
{
    "status": "success",
    "data": [
        {
            "__name__": "service_traffic",
            "service": "agent::songs",
            "scope": "Service",
            "layer": "GENERAL"
        },
        {
            "__name__": "service_traffic",
            "service": "agent::recommendation",
            "scope": "Service",
            "layer": "GENERAL"
        },
        {
            "__name__": "service_traffic",
            "service": "agent::app",
            "scope": "Service",
            "layer": "GENERAL"
        },
        {
            "__name__": "service_traffic",
            "service": "agent::gateway",
            "scope": "Service",
            "layer": "GENERAL"
        },
        {
            "__name__": "service_traffic",
            "service": "agent::frontend",
            "scope": "Service",
            "layer": "GENERAL"
        }
    ]
}
```

**Note: SkyWalking's metadata exists in the following metrics(traffics):**
- service_traffic
- instance_traffic
- endpoint_traffic

#### [Getting label names](https://prometheus.io/docs/prometheus/latest/querying/api/#getting-label-names)
```text
GET|POST /api/v1/labels
```

| Parameter | Definition      | Support | Optional |
|-----------|-----------------|---------|----------|
| match[]   | series selector | yes     | yes      |
| start     | start timestamp | **no**  | yes      |
| end       | end timestamp   | **no**  | yes      |

For example:
```text
/api/v1/labels?match[]=instance_jvm_cpu'
```

Result:
```json
{
    "status": "success",
    "data": [
        "layer",
        "service",
        "top_n",
        "order",
        "service_instance",
        "parent_service"
    ]
}
```

#### [Querying label values](https://prometheus.io/docs/prometheus/latest/querying/api/#querying-label-values)
```text
GET /api/v1/label/<label_name>/values
```

| Parameter | Definition      | Support | Optional |
|-----------|-----------------|---------|----------|
| match[]   | series selector | yes     | no       |
| start     | start timestamp | **no**  | yes      |
| end       | end timestamp   | **no**  | yes      |

For example:
```text
/api/v1/label/__name__/values
```

Result:
```json
{
  "status": "success",
  "data": [
    "meter_mysql_instance_qps",
    "service_cpm",
    "envoy_cluster_up_rq_active",
    "instance_jvm_class_loaded_class_count",
    "k8s_cluster_memory_requests",
    "meter_vm_memory_used",
    "meter_apisix_sv_bandwidth_unmatched",
    "meter_vm_memory_total",
    "instance_jvm_thread_live_count",
    "instance_jvm_thread_timed_waiting_state_thread_count",
    "browser_app_page_first_pack_percentile",
    "instance_clr_max_worker_threads",
    ...
  ]
}
```

#### [Querying metric metadata](https://prometheus.io/docs/prometheus/latest/querying/api/#querying-metric-metadata)
```text
GET /api/v1/metadata
```

| Parameter | Definition                                  | Support | Optional |
|-----------|---------------------------------------------|---------|----------|
| limit     | maximum number of metrics to return         | yes     | **yes**  |
| metric    | **metric name, support regular expression** | yes     | **yes**  |

For example:
```text
/api/v1/metadata?limit=10
```

Result:
```json
{
  "status": "success",
  "data": {
    "meter_mysql_instance_qps": [
      {
        "type": "gauge",
        "help": "",
        "unit": ""
      }
    ],
    "meter_apisix_sv_bandwidth_unmatched": [
      {
        "type": "gauge",
        "help": "",
        "unit": ""
      }
    ],
    "service_cpm": [
      {
        "type": "gauge",
        "help": "",
        "unit": ""
      }
    ],
    ...
  }
}
```

## Metrics Type For Query

### Supported Metrics [Scope](../../../oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/enumeration/Scope.java)(Catalog)
Not all scopes are supported for now, please check the following table:

| Scope                   | Support |
|-------------------------|---------|
| Service                 | yes     |
| ServiceInstance         | yes     |
| Endpoint                | yes     |
| ServiceRelation         | no      |
| ServiceInstanceRelation | no      |
| Process                 | no      |
| ProcessRelation         | no      |

### General labels
Each metric contains general labels: [layer](../../../oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/Layer.java).
Different metrics will have different labels depending on their Scope and metric value type.

| Query Labels                     | Scope           | Expression Example                                                                             |
|----------------------------------|-----------------|------------------------------------------------------------------------------------------------|
| layer, service                   | Service         | service_cpm{service='$service', layer='$layer'}                                                |
| layer, service, service_instance | ServiceInstance | service_instance_cpm{service='$service', service_instance='$service_instance', layer='$layer'} |
| layer, service, endpoint         | Endpoint        | endpoint_cpm{service='$service', endpoint='$endpoint', layer='$layer'}                         |

### Common Value Metrics
- Query Labels:
```text
{General labels}
```

- Expression Example:
```text
service_cpm{service='agent::songs', layer='GENERAL'}
```

- Result (Instant Query):
```json
{
    "status": "success",
    "data": {
        "resultType": "vector",
        "result": [
            {
                "metric": {
                    "__name__": "service_cpm",
                    "layer": "GENERAL",
                    "scope": "Service",
                    "service": "agent::songs"
                },
                "value": [
<PHONE_NUMBER>,
                    "3"
                ]
            }
        ]
    }
}
```

### Labeled Value Metrics
- Query Labels:
```text
--{General labels}
--labels: Used to filter the value labels to be returned
--relabels: Used to rename the returned value labels
note: The number and order of labels must match the number and order of relabels.
```

- Expression Example:
```text
service_percentile{service='agent::songs', layer='GENERAL', labels='0,1,2', relabels='P50,P75,P90'}
```

- Result (Instant Query):
```json
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "service_percentile",
          "label": "P50",
          "layer": "GENERAL",
          "scope": "Service",
          "service": "agent::songs"
        },
        "value": [
<PHONE_NUMBER>,
          "0"
        ]
      },
      {
        "metric": {
          "__name__": "service_percentile",
          "label": "P75",
          "layer": "GENERAL",
          "scope": "Service",
          "service": "agent::songs"
        },
        "value": [
<PHONE_NUMBER>,
          "0"
        ]
      },
      {
        "metric": {
          "__name__": "service_percentile",
          "label": "P90",
          "layer": "GENERAL",
          "scope": "Service",
          "service": "agent::songs"
        },
        "value": [
<PHONE_NUMBER>,
          "0"
        ]
      }
    ]
  }
}
```

### Sort Metrics
- Query Labels:
```text
--parent_service: <optional> Name of the parent service.
--top_n: The max number of the selected metric value
--order: ASC/DES
```

- Expression Example:
```text
service_instance_cpm{parent_service='agent::songs', layer='GENERAL',  top_n='10', order='DES'}
```

- Result (Instant Query):
```json
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "service_instance_cpm",
          "layer": "GENERAL",
          "scope": "ServiceInstance",
          "service_instance"<EMAIL_ADDRESS>        },
        "value": [
<PHONE_NUMBER>,
          "14"
        ]
      },
      {
        "metric": {
          "__name__": "service_instance_cpm",
          "layer": "GENERAL",
          "scope": "ServiceInstance",
          "service_instance"<EMAIL_ADDRESS>        },
        "value": [
<PHONE_NUMBER>,
          "6"
        ]
      },
      {
        "metric": {
          "__name__": "service_instance_cpm",
          "layer": "GENERAL",
          "scope": "ServiceInstance",
          "service_instance"<EMAIL_ADDRESS>        },
        "value": [
<PHONE_NUMBER>,
          "5"
        ]
      }
    ]
  }
}
```

### Sampled Records

- Query Labels:
```text
--parent_service: Name of the parent service
--top_n: The max number of the selected records value
--order: ASC/DES
```

- Expression Example:
```text
top_n_database_statement{parent_service='localhost:-1', layer='VIRTUAL_DATABASE',  top_n='10', order='DES'}
```

- Result (Instant Query):
```json
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {
          "__name__": "top_n_database_statement",
          "layer": "VIRTUAL_DATABASE",
          "scope": "Service",
          "record": "select song0_.id as id1_0_, song0_.artist as artist2_0_, song0_.genre as genre3_0_, song0_.liked as liked4_0_, song0_.name as name5_0_ from song song0_ where song0_.liked>?"
        },
        "value": [
<PHONE_NUMBER>,
          "1"
        ]
      },
      {
        "metric": {
          "__name__": "top_n_database_statement",
          "layer": "VIRTUAL_DATABASE",
          "scope": "Service",
          "record": "select song0_.id as id1_0_, song0_.artist as artist2_0_, song0_.genre as genre3_0_, song0_.liked as liked4_0_, song0_.name as name5_0_ from song song0_ where song0_.liked>?"
        },
        "value": [
<PHONE_NUMBER>,
          "1"
        ]
      },
      {
        "metric": {
          "__name__": "top_n_database_statement",
          "layer": "VIRTUAL_DATABASE",
          "scope": "Service",
          "record": "select song0_.id as id1_0_, song0_.artist as artist2_0_, song0_.genre as genre3_0_, song0_.liked as liked4_0_, song0_.name as name5_0_ from song song0_ where song0_.liked>?"
        },
        "value": [
<PHONE_NUMBER>,
          "1"
        ]
      }
    ]
  }
}
```

repository: mrproliu/skywalking

repo_name: mrproliu/skywalking


text:
# Setup Module (SM): Installation & Usage Guide

----------

# Setup Module Baseline Check (SMBC): Intro

The Setup Module Basline Check (SMBC) serves to implement the following elements of our protection proposal:

* *kernel security baseline check*: Whether the current system's kernel meets our minimum security baseline.

* *application security baseline check*: Whether the target application meets our minimum security baseline.

Any kernel and (protected) applications that seek to make use of our solution should pass the SMBC.

## Installation & Usage

### Pre-Reqs

Make sure [pyelftools](https://github.com/eliben/pyelftools) is installed, eg. through [pwntools](pwntools.readthedocs.org/en/2.1.3/) or via `sudo pip install pyelftools`.

### Usage

In order to check kernel compliance run `python baselinecheck.py --system` and in order to check application compliance run `python baselinecheck.py --file target_application`.

# Setup Module FuncSpotter (SMFS): Intro

The Setup Module FuncSpotter (SMFS) serves to implement the following elements of our protection proposal:

* *Function prologue & epilogue instrumentation point identification*: Identifies functions in target binary, extracts prologues & epilogues and finds their instrumentation points.

* *Codepointer call instrumentation point identification*: Identifies codepointer calls within functions in target binary, extracts the call branch instrumentation points.

## Installation & Usage

### Pre-Reqs

Make sure to have IDA Pro 6.8 or newer installed. When installing IDA Pro make sure to install IDAPython as well and also make sure there is no other Python installation on the machine in question as these might cause conflicts.

### Usage

In order to run the SMFS on a target binary, load the binary into IDA and wait for its auto-analysis engine to finish. Now go to **File -> Script File -> select ida_funcspotter.py** and wait for it to finish running. You can see the output reporting harvesting results in the IDAPython console. A configuration file will have been auto-generated with the name `protect_config_<binary_name>.h` in the directory the loaded binary resides. The configuration file will look as follows:

```c
/*
	Hard-coded target addresses in lieu of configuration file parsing
*/

#define PROLOGUE_COUNT 5
#define EPILOGUE_COUNT 5
#define CPTRCALL_COUNT 2

arm_addr prologues[PROLOGUE_COUNT] = {0x600,0x64c,0x698,0x6e4,0x768};
arm_addr epilogues[EPILOGUE_COUNT] = {0x640,0x68c,0x6d8,0x760,0x7d0};
arm_addr cptrcalls[CPTRCALL_COUNT] = {0x724,0x794};
```

branch_name: refs/heads/master

extension: md

license_type: permissive


text:
# Terra Amino Decoder

## How to use

* Start rest server
```
$ make install
$ amino-decoder start
```
* Query with rest server
```
curl -X GET http://<IP_ADDRESS>:3000/version
curl -X POST http://<IP_ADDRESS>:3000/decode/tx  -d '{"amino_encoded_tx": "[amino_encoded_tx]"}'
```

* Directly decode amino encoded tx
```
$ amino-decoder version
$ amino-decoder decode tx [amino-encoded-tx]
```

## How to build
```
# it will create build folder and generate binary for each platform (Windows, Mac, Linux)
$ make
```

## Use docker
```
$ docker pull quay.io/terra_project/amino-decoder

# it will execute rest server
$ make dockder-run
```

repository: terra-money-geeksoft/amino-decoder

repo_name: terra-money-geeksoft/amino-decoder


text:
# type: root server

The <root server> inspectors refer to the root server that the Bes Client is currently connected to.

# host name of <root server> : string

The host (DNS) name of the BES root server that the BES Client last registered with.

# id of <root server> : integer

The DSA Server ID of the BES root server that the BES Client last registered with.

gha_language: JavaScript


text:
![logo](ext/icon.png)

# Corser

Corser WebExtension make it possible to:

* allows cross-domain request with sites which deny CORS in their headers
* allows embedding iframe of domain which restricts it by x-frame-options header

**Usage of this extension is intended for people who understand what they want to achieve. Otherwise it may compromise your security.**

[Install from addons.mozilla.org](https://addons.mozilla.org/en-US/firefox/addon/corser/)

### Usage

Imagine we want to allow of embedding some iframe page of domain which denies embedding it pages.
Then after installing in options page we must paste the following sample config

<pre>
*://our-web-page-where-we-want-iframe-to-show.com/*
-
*://domain-which-restricts-iframe-usage.com/*
</pre>

`-` is a separator between origin urls and match urls

Each URL must conform to [Match Pattern](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Match_patterns)

If you want another rule just separate it by double newline.

### Developing

In order to use you must have `web-ext` binary installed and be familiar with it. All task are described in `makefile`

### Changelog

#### 0.0.15

* fix port escaping in rules. Now "domain:4949" should match

#### 0.0.14...

there were dragons...

repository: Reeywhaar/corser

repo_name: Reeywhaar/corser


text:
# badhttp

An HTTP server that can be configured, via simple HTTP PATCH requests, to do bad things.
The server associates each configuration with a request name and internally
holds a `map[string]config` to determine what to do when a `/{request_name}`
comes in.

# Admin requests you can make

## `PATCH /admin/{request_name}/delay/{delay_in_seconds}`
Make all requests to `/{request_name}` take `{delay_in_seconds}` seconds before they return

## `PATCH /admin/{request_name}/code/{http_code}`
Make all requests to `/{request_name}` return with `{http_code}`

repository: arschles/badhttp

repo_name: arschles/badhttp


text:
---
layout: default
permalink: /architecture/
title: Architecture
redirect_from:
  - /docs/architecture.md/
  - /docs/architecture/
---

# Architecture and Internal Design

* TOC
{:toc}

`kompose` has 3 stages: _Loader_, _Transformer_ and _Outputter_. Each stage should have a well-defined interface, so it is easy to write a new Loader, Transformer, or Outputters and plug it in. Currently, only Loader and Transformer interfaces are defined.

![Design Diagram](https://raw.githubusercontent.com/kubernetes/kompose/main/docs/images/design_diagram.png)

## Loader

The Loader reads the input file now `kompose` supports [Docker Compose](https://docs.docker.com/compose) v1, v2 and converts it to KomposeObject.

Loader is represented by a Loader interface:

```go
type Loader interface {
      LoadFile(file string) kobject.KomposeObject
}
```

Every loader “implementation” should be placed into `kompose/pkg/loader` (like compose). More input formats will be supported in the future. You can take a look for more details at:

- [kompose/pkg/loader](https://github.com/kubernetes/kompose/tree/master/pkg/loader)
- [kompose/pkg/loader/compose](https://github.com/kubernetes/kompose/tree/master/pkg/loader/compose)

## KomposeObject

`KomposeObject` is Kompose internal representation of all containers loaded from input file. First version of `KomposeObject` looks like this (source: [kobject.go](https://github.com/kubernetes/kompose/blob/master/pkg/kobject/kobject.go)):

```go
// KomposeObject holds the generic struct of Kompose transformation
type KomposeObject struct {
    ServiceConfigs map[string]ServiceConfig
}

// ServiceConfig holds the basic struct of a container
type ServiceConfig struct {
    ContainerName string
    Image         string
    Environment   []EnvVar
    Port          []Ports
    Command       []string
    WorkingDir    string
    Args          []string
    Volumes       []string
    Network       []string
    Labels        map[string]string
    Annotations   map[string]string
    CPUSet        string
    CPUShares     int64
    CPUQuota      int64
    CapAdd        []string
    CapDrop       []string
    Entrypoint    []string
    Expose        []string
    Privileged    bool
    Restart       string
    User          string
}
```

## Transformer

The Transformer takes KomposeObject and converts it to target/output format (currently, there are sets of Kubernetes/OpenShift objects). Similar to the `Loader`, Transformer is represented by a Transformer interface:

```go
type Transformer interface {
     Transform(kobject.KomposeObject, kobject.ConvertOptions) []runtime.Object
}
```

If you wish to add more providers containing different kinds of objects, the Transformer would be the place to look into. Currently, Kompose supports Kubernetes (by default) and OpenShift providers. More details at:

- [kompose/pkg/transformer](https://github.com/kubernetes/kompose/tree/master/pkg/transformer)
- [kompose/pkg/transformer/Kubernetes](https://github.com/kubernetes/kompose/tree/master/pkg/transformer/kubernetes)
- [kompose/pkg/transformer/openshift](https://github.com/kubernetes/kompose/tree/master/pkg/transformer/openshift)

## Outputter

The Outputter takes the Transformer result and executes the given action. For example, action can display results to stdout or directly deploy artifacts to Kubernetes/OpenShift.

repository: kubernetes/kompose

branch_name: refs/heads/main

gha_language: Go

repo_name: kubernetes/kompose


text:
# Assessing the impact of `BEAPI`'s optimizations (RQ2 in Section 4.2 of the paper)

In this experiment, we assessed the impact of `BEAPI`'s optimizations in its performance. We provide four different ways to execute `BEAPI`: DEFAULT (SM/BLD in Section 4.2 of the paper) is `BEAPI` with state matching enabled (SM) and using identified builders (BLD); SM is `BEAPI` with only state matching (SM) enabled; BLD is `BEAPI` using identified builders (BLD); and NoOpt is `BEAPI` with both optimizations disabled.

## Running a single experiment

First, move to the scripts folder.

```
cd $BE_EXP_SRC/scripts
```

To generate inputs using `BEAPI` with a given configuration run the following script:

```
./run-testgen-beapi-optimizations.sh <benchmark> <case study> <scope> <config>
```

where `<benchmark>` is one of `0_korat`, `1_kiasan`, `2_roops`, `3_fajita`, `4_real_world`; `<case study>` is one of the case studies for `<benchmark>` (see section [Available case studies](#Available-case-studies)); `<scope>` is the maximum number of nodes and the number of integers (from 0 to scope-1) available for generation, and `<config>` is one of the four aformentioned `BEAPI` configurations: `DEFAULT`, `SM`, `BLD`, `NoOpt`.

For example, to generate inputs for `BinTree` from the `3_fajita` benchmark using `BEAPI`'s `DEFAULT` configuration with a scope of `4` execute:
```
./run-testgen-beapi-optimizations.sh 3_fajita bintree.BinTree 4 DEFAULT

```

At the end of its execution the script shows a summary of the results in CSV format:

```
************
Report
Project,Class,Technique,Budget,Time,Structures,Explored
3_fajita,bintree.BinTree,beapi/matching/builders,4,.19,51,210
************
```

where:

- **Project**: the name of the selected benchmark.
- **Class**: the name of the case study.
- **Technique**: the generation technique employed:
    - `beapi/matching/builders` is `BEAPI`'s `DEFAULT` configuration
    - `beapi/matching/no-builders` is `BEAPI`'s `SM` configuration
    - `beapi/no-matching/builders` is `BEAPI`'s `BLD` configuration
    - `beapi/no-matching/no-builders` is `BEAPI`'s `NoOpt` configuration
- **Budget**: is the scope (maximum number of nodes, integers, etc...) used for input generation.
- **Time**: is the time spent for input generation in miliseconds.
- **Structures**: the number of structures generated by `BEAPI`.
- **Explored**: the number of test sequences explored by `BEAPI`.

Notice that **Table 2** of **Section 4.2** of the paper shows only the time spent on generation for each `BEAPI` configuration (i.e. column Time in the CSV). Notice that we report runtimes in seconds in the paper, while in the CSV we report runtimes in milliseconds. The correspondence from the fully qualified name of a case study (i.e. `bintree.BinTree`) to its abbreviated name (i.e. `BinTree`) is listed below in section [Available case studies](#Available-case-studies).

A log of the output of the selected tool is saved to file:

```
$BE_EXP_SRC/scripts/results-optimizations/<benchmark>/<case study>/<technique>/<scope>/log.txt
```

For the execution above, the log for `BEAPI` is in file:

```
$BE_EXP_SRC/scripts/results-optimizations/3_fajita/bintree.BinTree/beapi/matching/builders/4/log.txt
```

The results of the (successive) executions of the script are saved in file:

```
$BE_EXP_SRC/scripts/results-optimizations/results_optimizations.csv
```

**Note**: The precomputed builder methods used to run the `BEAPI` configurations that require them (`DEFAULT` and `BLD`) in this experiment are stored in plain text in `$BE_EXP_SRC/scripts/config/<benchmark>/builders/<case study>` file. For example:

```
% cat $BE_EXP_SRC/scripts/config/3_fajita/builders/bintree.BinTree

bintree.BinTree.<init>\(\)
bintree.BinTree.add\(int\)
```

**Note**: The ***test suite*** generated by `BEAPI` is stored in the `beapi-tests` folder located inside the specified project. `BEAPI` generates suites in the JUnit testing framework. In the example above, the JUnit tests are stored in `$BE_EXP_SRC/3_fajita/beapi-tests`. For efficiency reasons, we do not serialize the objects generated by `Korat` in this experiment.

## Available case studies

- `0_korat`
  - `DoublyLinkedList`: korat.examples.doublylinkedlist.DoublyLinkedList (`DLList`)
  - `FibonacciHeap`: korat.examples.fibheap.FibonacciHeap (`FibHeap`)
  -	`BinomialHeap`: korat.examples.binheap.BinomialHeap (`BinHeap`)
  - `SearchTree`:korat.examples.searchtree.SearchTree (`BST`)
  - `SinglyLinkedList`: korat.examples.singlylinkedlist.SinglyLinkedList (`SLList`)
  - `RedBlackTree`: korat.examples.redblacktree.RedBlackTree (`RBT`)
  - `SortedList`: korat.examples.sortedlist.SortedList (`SortedList`)

- `1_kiasan`
  - `BinarySearchTree`: binarysearchtree.BinarySearchTree (`BST`)
  - `DoubleLinkedList`: doublylinkedlist.DoubleLinkedList (`DLL`)
  - `TreeSet`: redblacktree.TreeSet(`RBT`) UBICAR LOS FUENTES DONDE CORRESPONDE con el nombre correcto
  - `DisjSetsFast`: disjointSet.fast.DisjSetsFast (`DisjSetFast`)
  - `StackLi`: stack.list.StackLi (`StackList`)
  - `BinaryHeap`: binaryheap.BinaryHeap (`BHeap`)
  - `TreeMap`: redblacktree.TreeMap (`TreeMap`)
  - `DisjSet`: disjointSet.orig.DisjSets (`DisjSet`)

- `2_roops`

  - `AvlTree`: avl.AvlTree (`AVL`)
  - `NodeCachingLinkedList`: ncl.NodeCachingLinkedList (`NCL`)
  - `BinTree`: bintree.BinTree (`BinTree`)
  - `LinkedList`: linkedlist.LinkedList (`LList`)
  - `TreeSet`: rbt.TreeSet (`RBT`)
  - `FibHeap`: fibheap.FibHeap (`FibHeap`)
  - `BinomialHeap`: bheap.BinomialHeap (`BinHeap`)

- `3_fajita`
  - `BinTree`: bintree1.BinTree (`BinTree`)
  - `AvlTree`: avl1.AvlTree (`AVL`)
  - `TreeSet`: rbt.TreeSet (`RBT`)
  - `BinomialHeap`: bheap.BinomialHeap (`BinHeap`)
  - `SinglyLinkedList`: list.SinglyLinkedList (`SLList`)
  - `DoubleLinkedList`: cdlist.LinkedList (`DLList`)
  - `NodeCachingLinkedList`: cList.NodeCachingLinkedList (`NCL`)

- `4_real_world`

  - `NodeCachingLinkedList `: org.apache.commons.collections4.list.NodeCachingLinkedList (`NCL`)
  - `TreeSet`: java2.util2.treeset.TreeSet (`TSet`)
  - `TreeMap`: java2.util2.treemap.TreeMap (`TMap`)
  - `LinkedList`: java2.util2.linkedlist.LinkedList (`LList`)
  - `HashMap`: java2.util2.hashmap.HashMap (`HMap`)

Note: In parentheses are the short names used in **Table 2** of **Section 4.2** of the paper to identify each case study. The results for some case studies are not reported in the table for space reasons; these can be found online [Replication Package](https://sites.google.com/view/bounded-exhaustive-api/home).

## Running all experiments from a single benchmark (slow)

To reproduce all the experiments for a specific benchmark using all four `BEAPI` configurations, for all scopes within 3 and *maxScope* pick and run one of following commands:

```
./run-testgen-beapi-optimizations-0_korat.sh <maxScope>
./run-testgen-beapi-optimizations-1_kiasan.sh <maxScope>
./run-testgen-beapi-optimizations-2_roops.sh <maxScope>
./run-testgen-beapi-optimizations-3_fajita.sh <maxScope>
./run-testgen-beapi-optimizations-4_real_world.sh <maxScope>
```

Note: Running one of the above scripts might take a few day depending on your hardware.

## Running all the experiments (very slow)

To reproduce all the experiments for this research question run:
```
./run-testgen-beapi-optimizations-all.sh <maxScope>
```

Note: Running this script might take a few days depending on your hardware.

# Running automated builders identification (Last paragraph of Section 4.2)

An automated builders identification approach was first presented in previous work:

- P. Ponzio, V. Bengolea, M. Politano, N. Aguirre, M. Frias, *Automatically Identifying Sufficient Object Builders from Module APIs*. Fundamental Approaches to Software Engineering, FASE 2019.

Recall that the goal of this paper is to assess the impact of using builder routines for BE generation from an API, not on builder computation approaches. Anyway, below we provide scripts to replicate the results of the builders identification approach employed in our paper.

## Running a single experiment

Don't forget to move to the scripts folder.

```
cd $BE_EXP_SRC/scripts
```

To identify builder methods for a given case study, run the following script:

```
./run-builder-identification.sh <benchmark> <case study>
```

**Note**: The script uses a fixed scope of 5 for builders identification, as this was the scope we used for this experiment in the paper.

where `<benchmark>` is one of `0_korat`, `1_kiasan`, `2_roops`, `3_fajita`, `4_real_world`; `<case study>` is one of the case studies of `<benchmark>` (see section [Available case studies](#available-case-studies)).

For example, to identify builders for `BinTree` from the `3_fajita` benchmark, execute:

```
./run-builder-identification.sh 3_fajita bintree.BinTree
```

At the end of its execution the script shows a summary of the results in CSV format:

```
************
Report
Project; Class; Builders ; Time ; nMethods
3_fajita ; bintree.BinTree ; [bintree.BinTree.<init>(), bintree.BinTree.add(int)] ;  7s ; 4
************
```

where:

- **project**: the name of the selected benchmark.
- **case study**: the name of the case study.
- **builders**: the identified builders from the API of the case study. In this example:
    - `bintree.BinTree.<init>(` (parameterless BinTree constructor).
    - `bintree.BinTree.add(int)` (method to add an object to the bintree).
- **time**: the time spent for builders identification in seconds.
- **nMethods**: Number public methods in the API of the case study.

The results of the (successive) executions of the script are saved in file:

```
$BE_EXP_SRC/scripts/results-builders/results_builders.csv
```

## Running all experiments from a single benchmark

To identify builders for all case studies for a specific benchmark, pick and run one of following commands:

```
./run-builder-identification-0_korat.sh
./run-builder-identification-1_kiasan.sh
./run-builder-identification-2_roops.sh
./run-builder-identification-3_fajita.sh
./run-builder-identification-4_real_world.sh
```

The results of executing these scripts are saved in file:

```
$BE_EXP_SRC/scripts/results-builders/results_builders.csv
```

## Running all the experiments

To identify builders for all [available case studies](#available-case-studies) run:

```
./run-builder-identification-all.sh
```

The results of executing this script are saved in file:

```
$BE_EXP_SRC/scripts/results-builders/results_builders.csv
```


text:
# dcind (Docker-Compose-in-Docker) For Concourse

Alpine based image that lets you run Docker inside a Concourse task. Task must have `privileged: true` for Docker to start.

![build status](https://ci.taydev.net/api/v1/teams/main/pipelines/dcind/jobs/build-and-publish/badge) [Release Pipeline](https://ci.taydev.net/teams/main/pipelines/dcind)

## Usage

Use it in a task config:
```yaml
image_resource:
  type: registry-image
  source:
    repository: taylorsilva/dcind
```

Pull it in as a resource to use as a task image:
```yaml
resoures:
- name: dcind
  icon: docker
  type: registry-image
  source:
    repository: taylorsilva/dcind
    tag: latest

jobs:
...
  - get: dcind
  - task: doing-things
    image: dcind
    privileged: true
```

Run it locally on your machine:
```
$ docker run -it --privileged taylorsilva/dcind
Starting Docker...
waiting for docker to come up...
bash-5.1#
```

## Tags
The Docker version is used to tag releases of the image. A new image is
published everyday to ensure OS packages are up to date.

There are three kinds of tags being published, two rolling and one static.

Rolling Tags:
- `latest`: points to the latest image pushed which contains the latest versions of Docker and Docker-Compose
- `DOCKER_VERSION`: This tag is the docker version (e.g. `20.10.6`) and is republished daily. Only the latest version of docker is republished. Older versions will become stale.

Static Tag:
- `DOCKER_VERSION-YYYYmmdd`: This tag is the docker version plus the date it was published. If you want to stay on a specific version of Docker + Docker-Compose then sticking to a particular daily build will meet your needs.

## Example

Here is an example of a Concourse [job](https://concourse-ci.org/jobs.html)
that uses `taylorsilva/dcind` image to run a bunch of containers in a task, and
then runs the integration test suite. You can find a full version of this
example in the [`example`](example) directory.

Note that `docker-lib.sh` has bash dependencies, so it is important to use `bash` in your task.

```yaml
- name: integration
  plan:
  - aggregate:
    - get: code
      params: {depth: 1}
      passed: [unit-tests]
      trigger: true
    - get: redis #a registry-image resource
      params:
        format: oci
    - get: busybox #a registry-image resource
      params:
        format: oci
  - task: Run integration tests
    privileged: true
    config:
      platform: linux
      image_resource:
        type: docker-image
        source:
          repository: registry.nearbycomputing.com/ci/dcind
      inputs:
      - name: code
      - name: redis
      - name: busybox
      run:
        path: bash
        args:
        - -cex
        - |
          source /docker-lib.sh
          start_docker

          # Strictly speaking, preloading of Docker images is not required.
          # However, you might want to do this for a couple of reasons:
          # - If the image comes from a private repository, it is much easier to let Concourse pull it,
          #   and then pass it through to the task.
          # - When the image is passed to the task, Concourse can often get the image from its cache.
          docker load -i redis/image
          docker tag "$(cat redis/image-id)" "$(cat redis/repository):$(cat redis/tag)"

          docker load -i busybox/image
          docker tag "$(cat busybox/image-id)" "$(cat busybox/repository):$(cat busybox/tag)"

          # This is just to visually check in the log that images have been loaded successfully
          docker images

          # Run the container with tests and its dependencies.
          docker-compose -f code/example/integration.yml run tests

          # Cleanup.
          # Not sure if this is required.
          # It's quite possible that Concourse is smart enough to clean up the Docker mess itself.
          docker volume rm $(docker volume ls -q)
```

license: MIT

repository: nbycomp/dcind

repo_name: nbycomp/dcind


text:
User Feedback

* Wanted to make sure users could decide the size of the scrolling grid when authoring a game
* Would be cool if you could click on an image and have it like attached to your cursor so whenever you click a square after it will add the image to that grid
* Be able to load saved custom elements that you have created before
* Add a feature where if you click and drag it will highlight everything that you are dragging across
* Deselect all button, when you fill something it will be deselected
* When you save a level it should update what you are working
* Key bindings should be more intuitive
* make buttons hot keys (P for pause, etc.)
* Make sure that users can only create custom objects with properties that are relevant to the object type (i.e. a block wouldnt have moveable-ness)
* How do different components in the GUI interract
* More descriptions on the attributes that a custom element could have (what does jumpalot mean for a block??)
* Make it easier to understand what different attributes do
* allow for no power up
* Right click on an image to see what properties it has
* Could the same image have two different implementations
* Pause the game when the change key bindings window (or other windows) are opened by the user
* When people hover over pickable elements, show attributes of entity
* Use dropshadow in css for hovering over buttons and stuff

repository: julialong/voogasalad

repo_name: julialong/voogasalad


text:
perfect.env
==============

[![Build Status](https://travis-ci.org/dasilvacontin/perfect-env.svg?branch=master)](https://travis-ci.org/dasilvacontin/perfect-env)
[![Coverage Status](https://coveralls.io/repos/github/dasilvacontin/perfect-env/badge.svg?branch=master)](https://coveralls.io/github/dasilvacontin/perfect-env?branch=master)

Drop-in replacement for `process.env` that throws an `Error` if an unset environment variable is accessed.

```js
const perfect = require('perfect-env')

const { PORT, CONSUMER_KEY, CONSUMER_SECRET, APP_URL } = perfect.env
```

instead of

```js
const { PORT, CONSUMER_KEY, CONSUMER_SECRET, APP_URL } = process.env

if (PORT == null) throw new Error('\'PORT\' environment variable is not set.')
if (CONSUMER_KEY == null) throw new Error('\'CONSUMER_KEY\' environment variable is not set.')
if (CONSUMER_SECRET == null) throw new Error('\'CONSUMER_SECRET\' environment variable is not set.')
if (APP_URL == null) throw new Error('\'APP_URL\' environment variable is not set.')
```

### Exception example:

```sh
Error: 'PORT' environment variable is not set.
    at Object.get (your-project-path/node_modules/perfect-env/index.js:6:15)
    at Object.<anonymous> (your-project-path/index.js:3:9)
```

## License

MIT © [David da Silva]

[David da Silva]: https://dasilvacont.in

repository: dasilvacontin/perfect-env

repo_name: dasilvacontin/perfect-env


text:
## Changelog (Current version: 4.0.2)

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

### 4.0.2 (2018 Jun 08)

* [4bc14c8] Prepare for 4.0.2
* [4627f38] Remove ssh envs (#10)

### 4.0.1 (2018 Jun 01)

* [3b7a3a8] Prepare for 4.0.1

### 4.0.0 (2018 Jun 01)

* [54ff734] Prepare for 4.0.0
* [dee7fed] Merge pull request #9 from bitrise-io/rewrite_in_go
* [a5cb039] PR clean - fix (+8 squashed commits) Squashed commits: [842bdc7] go package_name URL fix [eb832f3] PR clean - fix [49d4a11] PR clean - fix [d7fd90c] oops.. [26ebc52] PR clean - fix [29dc4eb] PR fix - clean [d7776ad] SSH_AUTH_SOCK output export [bf3db8f] eval command removed (+11 squashed commits) Squashed commits: [4b9e53c]  - [88a3320]  - [74152b7]  - [594dd48] eval ssh-agent [9c68bd1]  - [87864f2]  - [57f5b19]  - [e282d36]  - [8d021d6] step.sh removed [93c6886] bitrise.yml update [02c6fb9] - rewrite in go :white_check_mark: - ssh_rsa_private_key will be removed after the config parse :rotating_light:
* [8a8b88c] main.go added:  - Writhe SSH RSA Private Key to file :white_check_mark:  - Merging from step.sh to main.go still in progress :construction:
* [77960f0] Merge pull request #7 from bitrise-io/update-tags
* [ca461cd] Rename ssh-key env
* [9f69b81] Update tags
* [99ff8c4] Update the quite outdated README
* [f2f96c6] `- MY_STEPLIB_REPO_FORK_GIT_URL: $MY_STEPLIB_REPO_FORK_GIT_URL`

### 3.1.1 (2016 Aug 01)

* [ba11196] v3.1.1
* [6f6eafb] minimal update
* [060a351] removed project type tags
* [6dedc0f] SSH_AUTH_SOCK title typo

### 3.1.0 (2015 Nov 26)

* [ca5c5ae] logging
* [9fae52d] instead of adding the `SSH_AUTH_SOCK` env to `~/.bashrc` this step'll now expose it with `envman`

### 3.0.3 (2015 Oct 29)

* [5c42e6f] Merge pull request #5 from bazscsa/patch-2
* [74100c4] added apt-get dependencies: git and expect
* [6c4a574] Merge pull request #4 from bazscsa/patch-1
* [abd6650] Update step.yml

### 3.0.2 (2015 Sep 03)

* [d4d437d] Merge pull request #3 from gkiki90/new_yml_format
* [221fd98] yml fix

### 3.0.1 (2015 Sep 03)

* [c493749] Merge pull request #2 from gkiki90/new_yml_format
* [9a1c4b1] required field fix

### 3.0.0 (2015 Sep 03)

* [72bafe6] Merge pull request #1 from gkiki90/new_yml_format
* [5572549] removed source
* [4ae8214] fixes
* [716991f] bitrise
* [eccb034] yml fix, gitignore
* [d58c15e] new format
* [e343bda] utils 'fail_if_cmd_error' fix

### 2.0.0 (2014 Nov 13)

* [89ae2f5] even more debug log
* [9682d04] minor debug / info log
* [9804655] input name fix: ssh rss PRIVATE key instead of public (because this is a private key, not the public key); change in how the agent reload works - ignores the case when it can't kill the already existing and functional agent, in that case it just removes all the identities from it
* [e7a9582] minor debug log revision
* [24eeab8] option to remove previously added identities before activating the new one

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

Updated: 2018 Jun 08

repository: BanyikAnna/steps-activate-ssh-key

gha_license_id: MIT

repo_name: BanyikAnna/steps-activate-ssh-key


text:
## Infrastructure templates

After your OpenStack account is linked to Cloudbreak you can start creating resource templates that describe your
clusters' infrastructure:

- templates
- networks
- security groups

When you create one of the above resources, **Cloudbreak does not make any requests to OpenStack. Resources are only
created on OpenStack after the `create cluster` button has pushed.** These templates are saved to Cloudbreak's
database and can be reused with multiple clusters to describe the infrastructure.

**Templates**

Templates describe the **instances of your cluster** - the instance type and the attached volumes. A typical setup is
 to combine multiple templates in a cluster for the different types of nodes. For example you may want to attach multiple
 large disks to the datanodes or have memory optimized instances for Spark nodes.

The instance templates can be configured on the **manage templates** panel on the Cloudbreak Dashboard.

If `Public in account` is checked all the users belonging to your account will be able to use this resource to create clusters, but cannot delete it.

repository: sequenceiq/cloudbreak-docs

repo_name: sequenceiq/cloudbreak-docs


text:
[![Build Status](https://travis-ci.org/bohdan-leonchyk/skypebot.svg?branch=master)](https://travis-ci.org/bohdan-leonchyk/skypebot)

# Skype Bot
### Sends notification into Skype when Steam friend starts playing the game

It works only with old accounts (non registered in Microsoft Skype account)

#### Fill information to run:
- _Application/steamNickname_
- _Application/steamId_
- _SteamService/API_KEY_
- _SkypeService/USERNAME_
- _SkypeService/PASSWORD_
- _SkypeService/CHAT_ID (for your group chat)_

Analyzes state every 20 seconds and send messages into skype group in a case steamId-user is currently playing.

repository: bohdan-leonchyk/skypebot

repo_name: bohdan-leonchyk/skypebot


text:
# Illustration of Reducing a Trie to SlimTrie

## Steps

### Bitrie

![](imgs/bitrie.jpg)

### Initialize Trie

![](imgs/slim-init.jpg)

### Reduce Leaf Nodes

![](imgs/slim-cut-leaf.jpg)

### Reduce Inner Single Branch

![](imgs/slim-cut-inner.jpg)

### Remove Skip from Leaf Nodes

![](imgs/slim-final.jpg)

### Remove Leaf Nodes

![](imgs/slim-no-leaf.jpg)

## Update

```
cd imgs
```

Edit `.dot` files

```
make clean
make
```

## Dependency

-   graphviz

repository: campeloguedes/slim

repo_name: campeloguedes/slim


text:
---
title: dahliaOS on x86_64 legacy systems
permalink: install/legacy.html
summary: How to run dahliaOS Linux on legacy computers
---
## dahliaOS on x86_64 legacy systems

## Installation

- dahliaOS supports a wide range of devices. This guide will tell you how to flash it on a USB and what hardware you need.

### Flash the ISO

There are two ISOs to choose from, **EFI** and **Legacy** but this guide focuses on the Legacy ones.

1. You can download the latest image [here](https://dahliaos.io/download/latest/legacy).
2. Download [Etcher (3rd party link)](https://www.balena.io/etcher/) and flash the ISO on a USB.
3.
4. Your system should boot into dahliaOS.

### Requirements

#### Minimum requirements

- You need at least **2 GB of RAM** and a **64 bit** dual core processor with **Intel HD graphics**

#### Recommended requirements

**2 GB of RAM** and **a 64 bit** quad core processor with **Intel HD graphics**

**Note: Nvidia graphics won't work well, use onboard graphics for the best result.**

repository: nmcain/documentation

repo_name: nmcain/documentation


text:
# Osqledaren.se

This is the wordpress theme + plugins running [Osqledaren.se](http://osqledaren.se)

## Install on localhost

1. Install mamp and mysequel pro (or other drivers with same purpose)
2. Create a database in mysequel.
3. Install wordpress with same version as osqledaren.se is running in your mamp-folder.
4. Run the wordpress setup and connect it to your local mysequel-database.
5. In the terminal, navigate to your wordpress-folder and clone this repository.
6. Inside wordpress-admin (in the browser), activate osqledaren theme and the right plugins.

## Setting up plugins
##### Osqledaren-advertising (in git-repo)
Since the plugin resides in this git, just navigate to plugins in WP-admin and activate it.
In your WP-admin menu you will now see a "Reklam" option that has two fields "banner" and "advertising". The info you insert here is inserted into the theme with this snippet:

``` <?php if (function_exists('osq_adv_get_ad')) osq_adv_get_ad("banner"); ?> ```

If you want to add another add-place manually open osq-advertising/osq-advertising-adminpage.php and insert the name of that location in the ```$ad_locations``` array. It will then be configurable in WP-admin and insertable into the theme with the above snippet.

##### Osqledaren podcasts (in git repo)
Activate in plugin section of wp-admin. The menu item "Podcast" gives you all the needed information to add/delete podcasts. The plugin parses the inserted RSS-feeds once per hour.

##### Advanced Custom Fields (in git repo)

Activate and configure field "cred" with Field Type "Text Area". Description for usage should be:
>Skriv typ av kred + likamedtecken + namn på en eller flera personer (separerade med kommatecken). Varje typ ska stå på egen rad. Standardtyper är "Text", "Foto", "Illustration" och "Film". Exempel:
'Text = Caroline Arkenson, Sara Edin'

This plugin is responsible for the "cred" that resides in the footer of every article.

##### post-reading-time (in git repo)
Activate in wp-admin -> plugins and it will magically just work. This plugin has been translated to swedish from the original english and is therefore not to be updated.
##### Plugins used at osqledaren.se (not in git)
* Responsive Lightbox
* Disqus

## Developing workflow
All changes should always be done on the dev branch and thereafter merged into the staging branch to be tested live on our staging server. If no bug is still found the change is to be merged into master and pulled on the master server.

**Editing on the dev-branch**

1. git checkout dev
2. git pull (make sure you're up to date on the branch)
3. Edit code with your favorite editor.
4. git add -A
5. git status (make sure all files are added and nothing looks funky)
6. git commit -m "COMMIT MESSAGE GOES HERE"
7. git push (pushes the changes to github)

**Merging changes**

1. git checkout dev
2. git pull
3. git checkout staging (switching branch to staging)
4. git pull (make sure staging is up to date aswell)
5. git merge dev (merges the dev branch into staging branch)
6. git push (pushes the changes to staging to github)

To merge changes into master the same workflow is to be used.

### Working with CSS/Javascript

**CSS:**
This repo uses codekit to process all the scss files into one big css file.

1. Install Codekit
2. Active on folder
3. Update Codekit settings with the codekit.config file.
Every time you change a scss file it will be processed and saved according to the codekit-settings.

**Javascript:** See the readme in wp-content/themes/osqledaren/assets/js


text:
# Enumerations
Here you will find a list of all the possible values for fields which accept a typed enumerated property, such as `userAgent` or `click()`

repository: flood-io/chrome

gha_language: TypeScript

repo_name: flood-io/chrome


text:
<properties
   pageTitle="Service Fabric cluster security: client roles | Microsoft Azure"
   description="This article describes the two client roles and the permissions provided to the roles."
   services="service-fabric"
   documentationCenter=".net"
   authors="mani-ramaswamy"
   manager="coreysa"
   editor=""/>

<tags
   ms.service="service-fabric"
   ms.devlang="dotnet"
   ms.topic="article"
   ms.tgt_pltfrm="NA"
   ms.workload="NA"
   ms.date="04/14/2016"
   ms.author="subramar"/>

# Role-based access control for Service Fabric clients

Azure Service Fabric supports two different access control types for clients that are connected to a Service Fabric cluster: administrator and user. Access control allows the cluster administrator to limit access to certain cluster operations for different groups of users, making the cluster more secure.

Administrators have full access to management capabilities (including read/write capabilities). Users, by default, have only read access to management capabilities (for example, query capabilities), and the ability to resolve applications and services.

You specify the two client roles (administrator and client) at the time of cluster creation by providing separate certificates for each. See [Service Fabric cluster security](service-fabric-cluster-security.md) for details on setting up a secure Service Fabric cluster.

## Default access control settings

The administrator access control type has full access to all the FabricClient APIs. It can perform any read and write operation against the Service Fabric cluster, including the following:

### Application and service operations
* **CreateService**: service creation
* **CreateServiceFromTemplate**: service creation from template
* **UpdateService**: service updates
* **DeleteService**: service deletion
* **ProvisionApplicationType**: application type provisioning
* **CreateApplication**: application creation
* **DeleteApplication**: application deletion
* **UpgradeApplication**: starting or interrupting application upgrades
* **UnprovisionApplicationType**: application type unprovisioning
* **MoveNextUpgradeDomain**: resuming application upgrades with an explicit update domain
* **ReportUpgradeHealth**: resuming application upgrades with the current upgrade progress
* **ReportHealth** : reporting health
* **PredeployPackageToNode**: predeployment API
* **CodePackageControl**: restarting code packages
* **RecoverPartition**: recovering a partition
* **RecoverPartitions**: recovering partitions
* **RecoverServicePartitions**: recovering service partitions
* **RecoverSystemPartitions**: recovering system service partitions

### Cluster operations
* **ProvisionFabric**: MSI and/or cluster manifest provisioning
* **UpgradeFabric**: starting cluster upgrades
* **UnprovisionFabric**: MSI and/or cluster manifest unprovisioning
* **MoveNextFabricUpgradeDomain**: resuming cluster upgrades with an explicit update domain
* **ReportFabricUpgradeHealth**: resuming cluster upgrades with the current upgrade progress
* **StartInfrastructureTask**: starting infrastructure tasks
* **FinishInfrastructureTask**: finishing infrastructure tasks
* **InvokeInfrastructureCommand**: infrastructure task management commands
* **ActivateNode**: activating a node
* **DeactivateNode**: deactivating a node
* **DeactivateNodesBatch**: deactivating multiple nodes
* **RemoveNodeDeactivations**: reverting deactivation on multiple nodes
* **GetNodeDeactivationStatus**: checking deactivation status
* **NodeStateRemoved**: reporting node state removed
* **ReportFault**: reporting fault
* **FileContent**: image store client file transfer (external to cluster)
* **FileDownload**: image store client file download initiation (external to cluster)
* **InternalList**: image store client file list operation  (internal)
* **Delete**: image store client delete operation
* **Upload**: image store client upload operation
* **NodeControl**: starting, stopping, and restarting nodes
* **MoveReplicaControl**: moving replicas from one node to another

### Miscellaneous operations
* **Ping**: client pings
* **Query**: all queries allowed
* **NameExists**: naming URI existence checks

The user access control type is, by default, limited to the following operations. (The admin access control also has access to these operations).

* **EnumerateSubnames**: naming URI enumeration
* **EnumerateProperties**: naming property enumeration
* **PropertyReadBatch**: naming property read operations
* **GetServiceDescription**: long-poll service notifications and reading service descriptions
* **ResolveService**: complaint-based service resolution
* **ResolveNameOwner**: resolving naming URI owner
* **ResolvePartition**: resolving system services
* **ServiceNotifications**: event-based service notifications
* **GetUpgradeStatus**: polling application upgrade status
* **GetFabricUpgradeStatus**: polling cluster upgrade status
* **InvokeInfrastructureQuery**: querying infrastructure tasks
* **List**: image store client file list operation
* **ResetPartitionLoad**: resetting load for a failover unit
* **ToggleVerboseServicePlacementHealthReporting**: toggling verbose service placement health reporting

## Changing default settings for client roles

In the cluster manifest file, you can provide admin capabilities to the client if needed. You can change the defaults by going to the **Fabric Settings** option during [cluster creation](service-fabric-cluster-creation-via-portal.md),and providing the settings described above in the **name**, **admin**, **user**, and **value** fields.

## Next steps

[Service Fabric cluster security](service-fabric-cluster-security.md)

[Service Fabric cluster creation](service-fabric-cluster-creation-via-portal.md)

repository: AzureActivationDay/DevCamp

repo_name: AzureActivationDay/DevCamp


text:
+++
title = "Organizing Data Science Projects"

# Talk start and end times.
#   End time can optionally be hidden by prefixing the line with `#`.
date = 2019-12-12T09:00:00-04:00
date_end = 2019-12-12T10:00:00-04:00
all_day = false

# Schedule page publish date (NOT talk date).
publishDate = 2019-12-12T05:00:00-04:00

# Authors. Comma separated list, e.g. `["Bob Smith", "David Jones"]`.
authors = ["Justin M Fear"]

# Location of event.
location = "NCI Shady Grove"

# Name of event and optional event URL.
event = "CBIIT/FNL Workshop"
event_url = ""

# Abstract. What's your talk about?
abstract = "Our goal as scientists is to generate and disseminate new knowledge to the public. In data science, we face several challenges, including a fast-paced working environment, constantly changing data sources and tools, project life cycles that can last weeks to years, and many times working as individuals or small teams. To make our results reproducible and understandable, we need to have an efficient and flexible organizational strategy. Here I present various techniques and pitfalls I have encountered in my ten-year career in data science. This talk is aimed at people new to the field but is a valuable discussion for veteran data scientists."

# Summary. An optional shortened abstract.
summary = ""

# Is this a featured talk? (true/false)
featured = false

# Tags (optional).
#   Set `tags = []` for no tags, or use the form `tags = ["A Tag", "Another Tag"]` for one or more tags.
tags = ["datascience"]

# Markdown Slides (optional).
#   Associate this page with Markdown slides.
#   Simply enter your slide deck's filename without extension.
#   E.g. `slides = "example-slides"` references
#   `content/slides/example-slides.md`.
#   Otherwise, set `slides = ""`.
slides = ""

# Optional filename of your slides within your talk folder or a URL.
url_slides = "http://justinfear.com/datascience_presentations/slides/organize/nci-20191212/#1"

# Projects (optional).
#   Associate this talk with one or more of your projects.
#   Simply enter your project's folder or file name without extension.
#   E.g. `projects = ["deep-learning"]` references
#   `content/project/deep-learning/index.md`.
#   Otherwise, set `projects = []`.
projects = []

# Links (optional).
url_pdf = "https://github.com/jfear/datascience_presentations/blob/master/Fear_Organizing_DataScience_Projects.pdf"
url_video = ""
url_code = ""

# Featured image
# To use, add an image named `featured.jpg/png` to your page's folder.
[image]
  # Caption (optional)
  caption = ""

  # Focal point (optional)
  # Options: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight
  focal_point = ""
+++


text:
# google-sheets-api
A little and simple probe for the use of Google Sheets API

## Installation
Clone the repository

    git clone https://github.com/aaroncadillac/google-sheets-api.git
Install dependencies

    npm install

For this test were used Google's officially supported Node.js client library for using Google APIs (**googleapis**) and the same client for using 0Auth 2.0 authorization (**google-auth-library**)

## Run the test

    node quick.js

## Content and spreadsheet support

You can customize your content to insert through the *request.json* file, the path of this file requires to be specified at runtime, you must also specify the id of the worksheet to be modified

    Enter a valid SpreadSheetID (You must have w/r permissions): HERE YOUR SPREADSHEET ID
    Enter path for JSON: ./app/request.json (For example)

  ### How to obtain Spreadsheet ID?

  Spreadsheete ID is included in the Google Sheets link, for example

  `https://docs.google.com/spreadsheets/d/`**1bhXbigMkNyTgKFVePZIwP5VZE1hN0XcvTRdeFdUSUdo**`/edit#gid=0`

The "request.json" format is declared in the Google API Documentation and is as follows

```js
{
  majorDimension: String,
  range: String
  values: [
    ["Some","Values","Separated","With","Comas"],
    [Another row],
    ...
  ]
}
```
In the example, the _majorDimension_ and _range_ fields are omitted since they are included in the addValues function

Note, the range assigned in the add Values function is "A1" since this range allows the new values to be added after the last row with data

The range assigned to "request.json" should not interfere with the one in the addValues function, or the API will return a range error, if you want to change the range, addValues must be corrected.

repository: aaroncadillac/google-sheets-api

repo_name: aaroncadillac/google-sheets-api


text:
---
description: This is the guide for upgrading existing installations in general.
---

# Upgrade your project

In this article, you will find everything you need to upgrade your Umbraco CMS project.

You will find instructions on how to upgrade to a new minor or major version as well as how to run upgrades unattended.

* [Before you upgrade](./#before-you-upgrade)
* [Upgrade to a new Major](./#upgrade-to-a-new-major)
* [Upgrade to a new Minor](./#upgrade-to-a-new-minor)
* [Run an unattended upgrade](./#run-an-unattended-upgrade)

## Before you upgrade

The following lists a few things to be aware of before initiating an upgrade of your Umbraco CMS project.

* Sometimes there are exceptions to general upgrade guidelines. These are listed in the [**version-specific guide**](version-specific/). Be sure to read this article before moving on.
* Check if your setup meets the [requirements](../requirements.md) for the new versions you will be upgrading your project to.
* Things may go wrong for different reasons. Be sure to **ALWAYS** keep a backup of both your site's files and the database. This way you can always return to a version that you know works.
* Before upgrading to a new major version, check if the packages you're using are compatible with the version you're upgrading to. On the package's download page, in the **Project compatibility** area, click **View details** to check version-specific compatibility.

{% hint style="info" %}
It is necessary to run the upgrade installer on each environment of your Umbraco site. This means that you need to repeat the steps below on each of your environments in order to complete the upgrade.
{% endhint %}

## Legacy Umbraco

The steps outlined in this article applies to moderne Umbraco from version 10 and later versions.

Are you upgrading to a minor for Umbraco 6, 7 or 8 you can find the appropriate guide below:

{% content-ref url="version-specific/minor-upgrades-for-umbraco-8.md" %} version-specific/minor-upgrades-for-umbraco-8.md {% endcontent-ref %}

{% content-ref url="version-specific/minor-upgrades-for-umbraco-7.md" %} version-specific/minor-upgrades-for-umbraco-7.md {% endcontent-ref %}

## Upgrade to a new Major

You can upgrade to a new major of Umbraco CMS directly by using NuGet.

{% hint style="warning" %}
Switching to a new major of Umbraco CMS also means switching to a new .NET version. You need to make sure that any packages used on your site are compatible with this version before upgrading.

The package compatibility can be checked on the package's download page. Locate the **Project compatibility** area and select **View details** to check version-specific compatibility.
{% endhint %}

### Choose the correct .NET version

Use the table below to determine which .NET version to upgrade to when going through the steps below.

| CMS version | .NET version        |
| ----------- | ------------------- |
| 11          | 7.0                 |
| 10          | 6.0.5               |

### Upgrade your project using Visual Studio

It's recommended that you upgrade the site offline and test the upgrade fully before deploying it to the production environment.

1. Stop your site in IIS to prevent any changes from being made while you are upgrading.
2. Open your Umbraco project in Visual Studio.
3. Right-click on the project name in the Solution Explorer and select **Properties**.
4. Select the **.NET** version from the **Target Framework** drop-down.
5. Go to **Tools** > **NuGet Package Manager** > **Manage NuGet Packages for Solution...**
6. Go to the **Installed** tab in the NuGet Package manager.
7. Choose **Umbraco.Cms**.
8. Select the correct version from the **Version** drop-down.
9. Click **Install** to upgrade your project.
10. Consult the [version specific upgrade notes for Umbraco Forms](https://docs.umbraco.com/umbraco-forms/installation/version-specific) if relevant.
11. Restart your site in IIS, build, and run your project to finish the installation.

## Upgrade to a new Minor

NuGet installs the latest version of the package when you use the `dotnet add package` command unless you specify a package version:

`dotnet add package Umbraco.Cms --version <VERSION>`

Add a package reference to your project by executing the `dotnet add package Umbraco.Cms` command in the directory that contains your project file.

Run `dotnet restore` to install the package.

{% hint style="warning" %}
If you are using SQL CE in your project you will need to run `dotnet add package Umbraco.Cms.SqlCe --version <VERSION>` too before running the `dotnet restore` command.
{% endhint %}

When the command completes, open the **.csproj** file to make sure the package reference was updated:

{% code title=".csproj" %}
```xml
<ItemGroup>
  <PackageReference Include="Umbraco.Cms" Version="x.x.x" />
</ItemGroup>
```
{% endcode %}

## Run an unattended upgrade

When upgrading your Umbraco project, it is possible to enable the upgrade to run unattended. This means that you will not need to run through the installation wizard when upgrading.

Below you will find the steps you need to take in order to upgrade your project unattended.

{% hint style="info" %}
Are you running a load balanced setup with multiple servers and environments?

Check out the section about [Unattended upgrades in a load balanced setup](./#unattended-upgrades-in-a-load-balanced-setup).
{% endhint %}

### Enable the unattended upgrade feature

1. Add the `Umbraco:Cms:Unattended:UpgradeUnattended` configuration key.
2. Set the value of the key to `true`.

{% code title="appsettings.json" %}
```json
{
    "Umbraco": {
        "CMS": {
            "Unattended": {
                "UpgradeUnattended": true
            }
        }
    }
}
```
{% endcode %}

### Run the upgrade

With the correct configuration applied, the project will be upgraded on the next boot.

#### Boot order

The Runtime level will use `Run` instead of `Upgrade` to allow the website to continue to boot up directly after the migration is run. This happens instead of initiating the otherwise required restart.

{% hint style="info" %}
The upgrade is run after Composers but before Components and the `UmbracoApplicationStartingNotification`. This is because the migration requires services that are registered in Composers and Components require that Umbraco and the database are ready.
{% endhint %}

### Unattended upgrades in a load balanced setup

Follow the steps outlined below to use unattended upgrades in a load balanced setup.

1. Upgrade Umbraco via NuGet ([see instructions above](./#upgrade-to-a-new-major))
2. Deploy to all environments.
3. Set the `Umbraco:CMS:Unattended:UpgradeUnattended` configuration key to `true` for **the Main server only**.
4. Boot the Main server and the upgrade will run automatically.
5. Wait for the upgrade to complete.
6. Boot the Read-Only servers and make sure they do not show the “upgrade required” screen.

repository: umbraco/UmbracoDocs

repo_name: umbraco/UmbracoDocs


text:
# Cafe Highland
Lightweight web app for curating knowledge within online communities

## What?
Cafe Highland is a lightweight website that lets community members ask questions and answer each others' questions by posting links. Users earn points when others upvote their links. It functions like a cross between link-sharing websites (like hacker news) and sites like reddit. There is no commenting by design.

## Who?
Anyone can clone this website and re-brand it for your own organization according to the license.

## Why?
Many organizations ineffectively curate information, resulting in poor digital resource utilization. Cafe Highland creates a community around knowledge sharing and helps communities create and share knowledge more dynamically than organizational intranets and static wikis.

## How?
Cafe Highland was built using the web2py framework.

### Authors
This website was created by [Omar Metwally](mailto:omar.metwally@gmail.com).
If you need help cloning/re-branding this application for your own use, feel free to send me a line.

## License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details

repository: osmode/cafehighland

repo_name: osmode/cafehighland


text:
# phantomjs-on-raspberry (pi 2 and 3/*wheezy and jessie*)
[Phantomjs](http://phantomjs.org/) *unofficial* binaries for raspberry pi (2 and 3) running raspbian/wheezy or jessie.

Packages were build, using docker and an armhf wheezy based image, from the PhantomJS
[source](https://github.com/ariya/phantomjs).
Each directory contains a README.md
file that discribes how binaries were build and so, how you can do it yourself
if you are not confortable with unofficial packages. Debian packages were created with
`fpm` and install `phantomjs` in `/usr/local/bin/`.

## License
see PhantomJS [license](https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD).

repository: ryanfb/phantomjs-on-raspberry

repo_name: ryanfb/phantomjs-on-raspberry


text:
This release adds a few smallish fixes and removes previous inconveniences.

 - [#12](https://github.com/sbt/sbt-boilerplate/issues/12) Literal sharp signs can now be escaped with `\#`. Thanks [@marklister](https://github.com/marklister).
 - [#15](https://github.com/sbt/sbt-boilerplate/issues/15) Include source positions when template parsing fails.
 - [#16](https://github.com/sbt/sbt-boilerplate/issues/16) Generated files include a signature and will be deleted if source file was deleted.
 - [#17](https://github.com/sbt/sbt-boilerplate/issues/17) Generate templates in the test configuration. Thanks [@nrinaudo](https://github.com/nrinaudo).
 - [#18](https://github.com/sbt/sbt-boilerplate/issues/18) Add ".scala" if template didn't include an extension
 - [#19](https://github.com/sbt/sbt-boilerplate/issues/19) sbt-boilerplate is now an AutoPlugin (but needs to be enabled manually).

## Migration notes

 - This plugin is now an AutoPlugin. Replace `settings(Boilerplate.settings :_*)` with `enablePlugins(spray.boilerplate.BoilerplatePlugin)`
   in your build.
 - The source folder is now specified using the `boilerplateSource` key instead of `sourceDirectory in boilerplateGenerate`.

repository: sbt/sbt-boilerplate

extension: markdown

gha_language: Scala

repo_name: sbt/sbt-boilerplate


text:
+++
# Custom widget.
# An example of using the custom widget to create your own homepage section.
# To create more sections, duplicate this file and edit the values below as desired.
widget = "custom"
active = true
date = 2016-04-20T00:00:00

# Note: a full width section format can be enabled by commenting out the `title` and `subtitle` with a `#`.
title = "Lecture Notes"
subtitle = ""
categories = ["Lecture Notes"]

# Order that this section will appear in.
weight = 50

+++

- [Introduction to Probability Theory and Random Processes](https://www.overleaf.com/read/fjdsbxwydcnf), with Márcio A. Diniz, Luís E. B. Salasar and Rafael B. Stern

- [Statistical Inference](https://www.overleaf.com/read/ndcxvbjgvkbx), with Rafael B. Stern (incomplete)

- [Inferência Bayesiana](https://github.com/rbstern/bayesian_inference_book/raw/gh-pages/book.pdf), com Luís Gustavo Esteves e Rafael B. Stern

- [Machine Learning sob a ótica estatística](sml): Uma abordagem preditivista para estatística com exemplos em R, com Tiago Mendonça
dos Santos.

repository: rizbicki/academic-rizbicki

repo_name: rizbicki/academic-rizbicki


text:
<!---
This is an autogenerated file!

Please do not edit this file directly, but instead make changes to the
sigs.yaml file in the project root.

To understand how this file is generated, see generator/README.md.
-->
# Testing SIG

Interested in how we can most effectively test Kubernetes. We're interested specifically in making it easier for the community to run tests and contribute test results, to ensure Kubernetes is stable across a variety of cluster configurations and cloud providers.

## Meetings
* [Tuesdays at 20:00 UTC](https://zoom.us/j/2419653117) (weekly). [Convert to your timezone](http://www.thetimezoneconverter.com/?t=20:00&tz=UTC).

Meeting notes and Agenda can be found [here](https://docs.google.com/document/d/1z8MQpr_jTwhmjLMUaqQyBk1EYG_Y_3D4y4YdMJ7V1Kk).
Meeting recordings can be found [here](https://www.youtube.com/watch?v=BbFjuxe3N4w&list=PL69nYSiGNLP0ofY51bEooJ4TKuQtUSizR).

## Leads
* [Aaron Crickenberger](https://github.com/spiffxp), Samsung SDS
* [Erick Feja](https://github.com/fejta), Google
* [Timothy St. Clair](https://github.com/timothysc), Heptio

## Contact
* [Slack](https://kubernetes.slack.com/messages/sig-testing)
* [Mailing list](https://groups.google.com/forum/#!forum/kubernetes-sig-testing)

<!-- BEGIN CUSTOM CONTENT -->

<!-- END CUSTOM CONTENT -->

repository: medinatiger/community

repo_name: medinatiger/community


text:
---
layout: post
title: "Local deal: St George's Day Game"
permalink: /archives/2011/04/local_deal_st_georges_day_game.html
commentfile: 2011-04-11-local_deal_st_georges_day_game
category: around_town
date: 2011-04-11 09:26:32
image: "/assets/images/2011/RFU_st-george_thumb.jpg"
excerpt: |
    p=. Saturday 23 April - Twickenham Stadium

    p=. LONDON WASPS V BATH RUGBY

    h4=. TWO FOR ONE TICKET OFFER

    London Wasps will be playing their Round 21 Aviva Premiership match against Bath on Saturday 23rd April, KO 5.30pm, at the home of England Rugby in honour of St George's Day, and to raise money for four special military charities.

    This fixture will be one of the biggest occasions in the Wasps calendar as the club look to combine the pride in their game with that of their country, and raise considerable funds for BLESMA, Combat Stress, the Special Boat Service Association and the Parachute Regiment Charity.

---

Saturday 23 April - Twickenham Stadium

LONDON WASPS V BATH RUGBY

#### TWO FOR ONE TICKET OFFER

London Wasps will be playing their Round 21 Aviva Premiership match against Bath on Saturday 23rd April, KO 5.30pm, at the home of England Rugby in honour of St George's Day, and to raise money for four special military charities.

This fixture will be one of the biggest occasions in the Wasps calendar as the club look to combine the pride in their game with that of their country, and raise considerable funds for BLESMA, Combat Stress, the Special Boat Service Association and the Parachute Regiment Charity.

#### Details

-   Ticket prices are £45 (Category 1), £25 (Category 2) and £15 (Category 3) with concessions from just £8 by calling the Wasps ticket office on 0844 225 2990.
-   Local Twickenham residents are being offered a special 2 for 1 ticket offer for Category 1 and 2 tickets.
-   Just quote your name, address, post code and the reference "Twickenham" to qualify.

repository: pmahnke/stmgrts

gha_language: HTML

repo_name: pmahnke/stmgrts


text:
# SortingAlgorithms
Implementations of popular sorting algorithms using C#.

For convenience, all algorithms implemented as extension methods to a standard Array class.

## Done:
 - Insertion sort
 - Bubble sort
 - Quicksort

## Todo:
 - Selection sort
 - Merge sort
 - Heapsort
 - Shellsort


text:
# DigitalDifferentialAnalyzerAlgorithmJava
A Java application (with GUI) for interpolation of variables over an interval between start and end point.

## Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

### Prerequisites
Applications/Softwares you need to install:
* [Java](https://java.com/en/download/)
* NetBeans/Eclipse/IntelliJ/or any Java IDE

## Deployment
After installing the required applications/softwares, you can now open and run these files using any Java IDE of your choosing.

## Authors
* **Ellis Evangelista** -- [ellisevangelista](https://github.com/ellisevangelista)
* **Jerome Cases** -- [casesjerome](https://github.com/casesjerome)

## License
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details.

gha_language: Java


text:
# `v1.0.5-release`

- add `sql-server-2017` database profile

# `v1.0.4-release`

- list of menu request by module and roles
- remove package `com.tabeldata.controller`
- remove package `com.tabeldata.endpoint`
- remove docs folder `docs -> wiki`
- add dependency `ojdbc6.jar:<IP_ADDRESS>`
- add `oracle-11g` database profile
- add pagination using oracle 11g
- set `web-commons:2.0.0-relase` migrate to `web-commons:2.0.1-release`

# `v1.0.3-release`

- update `server.servlet.context-path=${project.artifactId}`
- docker build on phase install
- docker tag, push on phase deploy
- maven deploy to nexus repository

# `v1.0.2-release`

- Fixing oauth client / resource id information

# `v1.0.1-release`

- Secure with JWT
- Enable deployment with docker
- Enable deployment with kubenetes and istio

# `v1.0.0-SNAPSHOT`

- Enabled sso for oauth2
    - grant type authorization code
    - grant type password
- Dynamic privileges by role
- Credential users by jdbc and encrypt by BCrypt
- Enabled resource server, url pattern => `/api/**`
- Securing Web MVC, url any pattern example `/app/**` except `/api/**`
- Fixing `authorization code` and `password` grant type from token to authentication and authorization
- Automatic testing for OAuth2 `password` grant type
- Enabled run as service / systemctl / systemd
- Enabled oauth client details with jdbc / client service
- Enabled jdbc token store
- Enabled login screen
- Enabled webjars
    - bootstrap
    - jquery
    - poper.js
    - moment
- Thymeleaf + Thymeleaf security
- Enabled oauth logout & force logout api
- Enabled history login and logout

repository: arraisi/auth-server-blud

repo_name: arraisi/auth-server-blud


text:
---
title: Batching
layout: usermanual-page.hbs
position: 4
---

Batching is the process of combining multiple mesh instances together into a single mesh instance, so that they can all be rendered in a single GPU draw call. PlayCanvas provides a handy feature on the [Model][7], [Sprite][9] and [Element][10] components that lets you assign these components to batch groups which give the engine hints on how to combine meshes to reduce the overall draw call count.

There are a variety of rules which the engine will apply to see if mesh instances are able to be combined. The primary rule is that all mesh instances must share the same material.

Common batching use cases are:

* Combine together static geometry -- e.g. environments -- into a single mesh instance or multiple large instances to reduce draw calls, but still support camera culling.
* Combine together dynamic geometry -- e.g. a set of moving objects -- into a single mesh instance with dynamic properties that are applied on the GPU.

    The use of batching is currently not compatible with runtime lightmaps due to each lightmapped object requiring its own unique lightmap texture.

## Creating Batch Groups

![Creating Batch Groups][1]

Batch Groups can be created from the Batch Groups section of the [scene settings panel][6]. Each batch group has a number of properties that are used to give the engine hints about how to create batches from this batch group.

### Batch Group Properties

* **Name**: Used to differentiate different batch groups, ideally it would describe the kinds of objects that this batch group will have. This name is available at runtime to retrieve the group.
* **Dynamic**: If enabled then objects inside the batch group can still move/rotate/scale. You can use this for objects that are similar to each other and use the same materials e.g. bullets. Static groups use less runtime resources so you should disable Dynamic if the contents of batch group will not move.
* **Max AABB size**: The maximum size of any one side of the bounding box that contains all objects in the batch group at the time when the batches are created. If the set of meshes are larger than the maximum size it will create multiple batches to be rendered. A larger bounding box will render in less draw calls, but will work less well with camera culling.

## Adding a component to a Batch Group

![Selecting Batch Groups][2]

The Model component has a Batch Group property to assign a model into a batch group.

## Rules for combining mesh instances

The rules for whether the engine can combine mesh instances are fairly complicated but a good summary is that all mesh instances that belong to a single batch must obey the following:

* Have the same Batch Group ID
* Have the same material
* Have the same shader parameters
* Be within a bounding box with no side larger than the Max AABB Size
* Be in the same layer
* Each batch has a maximum vertex count of 65535
* For dynamic batches there is a maximum number of movable mesh instances. This hardware dependent but has a maximum of 1024.

If a batch group contains components or mesh instances that do not obey all of the rules the batch group will produce multiple batches such that each individual batch contains mesh instance that follow all the rules.

## Trigger re-batching

Based on Batch Groups the engine creates an optimized version of mesh instances. Further changes to many properties of the original mesh instances are not reflected in the optimized versions. To allow for good performance by using batching, while still allowing some further updates, you can request the engine to rebatch individual Batch Groups after you make changes to the original mesh instances. This is often useful with User Interface element components, where you might want to set up batching, but still need to do infrequent updates. Note that re-batching a group is a potentially expensive operation. In many cases, the impact of rebatching can be minimized by separating elements that need updating to separate Batch Group.

Here is an example of a simple script. The script updates `textureAsset` on an element, and marks the Batch Group as dirty.

```javascript
// change textureAsset on element
element.textureAsset = this.hoverAsset;

// if this element has Batch Group set, mark it dirty to rebuild the group in the next frame
if (element.batchGroupId)
    this.app.batcher.markGroupDirty(element.batchGroupId);
```

## Example - Batching a static environment

![Western Scene][3]

In this scene we have created a static environment from 7 separate model files, some of which are repeated in the scene. For example, the road tile is used to in 50 entities to create the long road through the center of the scene.

![Western Animation][4]

You can see in the animation each draw call as it is made. In this environment the engine makes over 50 draw calls to draw each of the models individually. However, apart from the ground, all of these models use the same material and so they can be combined into batch groups.

![Western Animation Batched][5]

In this animation we have created 4 batch groups for the buildings, the cacti, the road and the ground. Notice, that the road and the ground are not combined into single draw calls because the meshes are larger than the Max AABB Size defined on the batch group.

## Terminology

* **Batch Group** - A named group, created in the Editor, that defines some hints on how mesh instances should be combined. Components are assigned to a batch group
* **Batch** - An engine object created at runtime which is the set of mesh instances that are rendered in a single draw call. A batch group may result in multiple batches depending on the properties of the mesh instances that are added to the batch group.
* **Batch Manager** - The programmatic interface for creating and updating batches at runtime. See [API documentation][8].

[1]: /images/user-manual/optimization/batching/batch-groups.jpg
[2]: /images/user-manual/optimization/batching/model-component.jpg
[3]: /images/user-manual/optimization/batching/western-scene.jpg
[4]: /images/user-manual/optimization/batching/western-animation-all.gif
[5]: /images/user-manual/optimization/batching/western-animation.gif
[6]: /user-manual/designer/settings/#batch-groups
[7]: /user-manual/packs/components/model
[8]: /api/pc.BatchManager.html
[9]: /user-manual/packs/components/sprite
[10]: /user-manual/packs/components/element

branch_name: refs/heads/dev