text:
# test plan and test output

## High Level Test Plan

| Test ID | Description | Exp I/P | Exp O/P |	Actual Output |
| --- | --- | --- | --- | --- |
|HR01|Customers can check for availability of rooms and book the rooms.|choosing option|You have Booked the room|You have Booked the room|
|HR02|Customer can check for the availability of hall and book.|Technical|You have booked the hall|You have booked the hall|
|HR03|System should save the customer data.|Customer data |save data in structure|save data in structure|
|HR03|Customers can book the programs Conducted by hotel.|choosing options(Y/N)|program has been choosen|program has been choosen|
|HR04|System should display the Customers data with bill.|Type of booking|Bill generation with the status of booking|Bill generation with the status of booking|

## Low level Test plan
| Test ID | Function name | Description | Return type | Valid Input |	Output|Type of Test | Status (PASS/FAIL) |
| --- | --- | --- | --- | --- | --- | --- | --- |
|LR01|book_room|check if choice type entered is valid |Int|1|500|unit test|PASS|
|LR02|book_room|check if choice type entered is valid |Int|2|800|unit test|PASS|
|LR03|book_room|check if choice type entered is valid |Int|3|1000|unit test|PASS|
|LR04|book_hall|check if choice ch2 entered is valid |Int|1|1000|unit test|PASS|
|LR05|book_hall|check if choice ch2 entered is valid |Int|2|15000|unit test|PASS|
|LR06|program|check if choice ch entered is valid |Int|1|500|unit test|PASS|
|LR07|program|check if choice ch entered is valid |Int|2|800|unit test|PASS|


text:
# @empty

`@empty` directives may be used as convenient shortcuts for their respective PHP functions:

---

```blade
@empty($records)
    // $records is "empty"...
@endempty
```

license: MIT

repository: thinkryan/dotfiles

branch_name: refs/heads/master

extension: md

gha_language: VimL

license_type: permissive

repo_name: thinkryan/dotfiles


text:
FxTC Core integration/staging tree
==================================

[![Build Status](https://travis-ci.org/fxtc/fxtc.svg?branch=0.18)](https://travis-ci.org/fxtc/fxtc)

https://fixedtradecoin.org

Linux Build Instructions and Notes
==================================

Dependencies
----------------------
1.  Update packages

        sudo apt-get update

2.  Install required packagages

        sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils libboost-all-dev

3.  Install Berkeley DB 4.8

        sudo apt-get install software-properties-common
        sudo add-apt-repository ppa:bitcoin/bitcoin
        sudo apt-get update
        sudo apt-get install libdb4.8-dev libdb4.8++-dev

4.  Install QT 5

        sudo apt-get install libminiupnpc-dev libzmq3-dev
        sudo apt-get install libqt5gui5 libqt5core5a libqt5dbus5 qttools5-dev qttools5-dev-tools libprotobuf-dev protobuf-compiler libqrencode-dev

Build
----------------------
1.  Clone the source:

        git clone https://github.com/fxtc/fxtc.git

2.  Build FxTC Core:

    Configure and build the headless FxTC Core binaries as well as the GUI (if Qt is found).

    You can disable the GUI build by passing `--without-gui` to configure.

        ./autogen.sh
        ./configure
        make

3.  It is recommended to build and run the unit tests:

        make check

Mac OS X Build Instructions and Notes
=====================================
See (doc/build-osx.md) for instructions on building on Mac OS X.

Windows (64/32 bit) Build Instructions and Notes
=====================================
See (doc/build-windows.md) for instructions on building on Windows 64/32 bit.

repository: fxtc/fxtc

gha_license_id: MIT

repo_name: fxtc/fxtc


text:
# Proof-of-Concept OpenID Connect Provider

This is just a simple POC for OpenID Connect provider implementation to log user in.

Created for a quick demo purpose. Has only one user.

# URLs

| URL                      | Description                                       |
| ------------------------ | ------------------------------------------------- |
| `GET /oauth2/authorize`  | Login form                                        |
| `POST /oauth2/authorize` | Check user credentials + redirect to redirect URI |
| `POST /oauth2/token`     | The URL where ID token is fetched from            |

# Installing dependencies

```bash
yarn install
```

# RS256 version

## Running

```bash
node server_rs256.js
```

# Generating a new key to sign ID toekn using RS256 algorithm

Demo key is provided in `rs256/jwt-rs256-key.key`.

```bash
openssl genrsa -out rs256/jwt-rs256-key.key 4096
```

## Environment variables

| Name             | Default value           | Description                       |
| ---------------- | ----------------------- | --------------------------------- |
| PORT             | 3000                    | Web server port                   |
| CLIENT_ID        | clientid0123456789      | OpenID Connect provider client ID |
| PRIVATE_KEY_FILE | rs256/jwt-rs256-key.key | Path to private key file          |
| USER_LOGIN       | test                    | User login                        |
| USER_PASS        | pass                    | User password                     |

# HS256 version

## Running

```bash
node server.js
```

## Environment variables

| Name          | Default value      | Description                       |
| ------------- | ------------------ | --------------------------------- |
| PORT          | 3000               | Web server port                   |
| CLIENT_ID     | clientid0123456789 | OpenID Connect provider client ID |
| CLIENT_SECRET | secret0123456789   | OpenID Connect provider secret    |
| USER_LOGIN    | test               | User login                        |
| USER_PASS     | pass               | User password                     |

repository: salemove/examples

gha_language: Ruby

repo_name: salemove/examples


text:
# ProductSKU

[![CI Status](https://img.shields.io/travis/peiZheng1/ProductSKU.svg?style=flat)](https://travis-ci.org/peiZheng1/ProductSKU)
[![Version](https://img.shields.io/cocoapods/v/ProductSKU.svg?style=flat)](https://cocoapods.org/pods/ProductSKU)
[![License](https://img.shields.io/cocoapods/l/ProductSKU.svg?style=flat)](https://cocoapods.org/pods/ProductSKU)
[![Platform](https://img.shields.io/cocoapods/p/ProductSKU.svg?style=flat)](https://cocoapods.org/pods/ProductSKU)

## Example

To run the example project, clone the repo, and run `pod install` from the Example directory first.

## Requirements

## Installation

ProductSKU is available through [CocoaPods](https://cocoapods.org). To install
it, simply add the following line to your Podfile:

```ruby
pod 'ProductSKU'
```

## Author

peiZheng1<EMAIL_ADDRESS>
## License

ProductSKU is available under the MIT license. See the LICENSE file for more info.


text:
---
layout: page
title: About
---

Hello, my name is Tyler Van Schaick. I am a support developer at [We Are Underground](https://weareunderground.com) where I assist merchants who are using our Shopify themes. I am a front end web developer with experience in WordPress, Jekyll and Shopify theme development. I have been a support developer since November 2019 and a front-end developer before then.

I use this site as a portfolio site, more or less used for learning about Git, GitHub and theme development and occasionally make blog posts related to front end development.

## About the site

The site uses the [Hyde theme](http://hyde.getpoole.com/) built by [@mdo](https://twitter.com/mdo) and is used as a starting point from which I have extended with some custom modifications.

gha_language: HTML


text:
---
name: Feature request
about: Suggest an idea for ipython-nord-theme
title: 'Feature Request:'
---

- [ ] I have checked the [Issue tracker](../issues) and as far as I can tell, this is not a duplicate issue
- [ ] I am using the latest version of ipython-nord-theme

**Is your feature request related to a problem?  Please describe.**

A clear and concise description of what the problem is - e.g. ... is frustrating.

**Describe the solution you would like**

A clear and concise description of what you want ot happen.

**Describe alternatives you've considered**

A clear and concise description of any alternative solutions or features you've considered.

**Additional information and context**

Any other information and context which might be of relevance.

repository: lewisacidic/ipython-nord-theme

repo_name: lewisacidic/ipython-nord-theme


text:
---
title: Contact DeepMI
layout: default
group: contact
---

# Contact

Martin Reuter

  Director, Medical Image Analysis

  DZNE, Bonn, Germany

  email: martin.reuter (at) dzne.de

  tel: +49 228 43302 380

  Assistant Professor of Radiology

  Assistant Professor of Neurology

  Harvard Medical School, Boston, USA

  Martinos Center for Biomedical Imaging, MGH, Boston, USA

  email: mreuter (at) nmr.mgh.harvard.edu

  tel: +49 228 43302 380

# Addresses

DZNE Office Address

German Center for Neurodegenerative Diseases (DZNE)

Venusberg-Campus 1, Gebäude 99

53127 Bonn, Germany

MGH Office Address

Martinos Center for Biomedical Imaging

Massachusetts General Hospital

149 13th St, Office 10119

Charlestown, MA 02129, USA

### The DZNE Campus can be reached:
[Map DZNE Building](https://g.page/dzne_de)
* #### by public transportation:
  * Take Bus 601 (e.g. from Bonn central station) to the endpoint "Uniklinikum Süd"
  * Walk straight, left at the roundabout, after 100 m the DZNE will be on your right (bldg. with green/orange panels)
  * Talk to the receptionist and someone will pick you up.
* #### by car:
  * Enter Uniklinikum, keep right at 1st roundabout, park at Parkhaus Süd
  * From there walk left and the DZNE building is on the right

### Martinos Center MGH Charlestown Campus:
[Map Martinos Center](https://goo.gl/maps/sPu64zgHfiWZkf4E7)
* #### by public transportation:
  * Take the red line to Charles/MGH
  * Walk through or around MGH main campus to where the shuttle busses stop
  * Take the Charlestown shuttle to the last stop (Building 149)
  * Check in with reception, ID (drivers license or passport required)
* #### by car:
  * There is a parking garage right next to building 149
  * From there cross 13th street, enter bldg. 149
  * Check-in with reception, ID (drivers license or passport required)

gha_language: TeX


text:
---
layout: archive
title: ''
permalink: /teaching/
author_profile: true
---

{% include base_path %}

## Quantitative Reasoning and Statistical Methods

 **Head Teaching Assistant**, (2019, 2022): The course is focused on statistical theory and causal inference - including interpretation, finite sample results, and large sample properties. The students are introduced to causal inference. Topics include: randomized trials, regression, instrumental variables and Wald estimators, differences-in-differences, regression discontinuity design, and logistic regression.

 * **Overall rating (2019)**: 7.0/7.0


text:
Git
====

What is Git?
------------

Git is a source control management solution.

Some people think source control is about backups and not loosing things.

It is not (just) about that.

It is about:

- Keep a history of what happened and who did what.
- Experiment often.
- Rollback, revert and merge changes.
- Asynchronous development of several features.
- Maintaining several versions.
- Find which change introduced that nasty bug.
- Much, much more...

Why?
----

This is not just another thing to add to the stuff developers need to know.

If used correctly, it could improve your entire workflow.

1. Offline/Locally
   With its offline capabilities Git enables you not only to work when you are
   not connected to the internet. It actually gives you the power of local
   revision control before you have shared anything with other people.
   You could experiment all the time with commits and branches without caring if
   your work would be seen by others before it's ready.

2. Fast

repository: hkdobrev/development-workflow

repo_name: hkdobrev/development-workflow


text:
# Changelog

## 1.2.0

- Added support for propagation of arbitrary attributes on the replacing image. Instead of creating a new Img dom element, one is instead instantiated from the content of the noscript tag.

## 1.1.1

- Preserve width and height attributes if given to `image_tag` and propagate them to the placeholder svg as well.

## 1.1.0

- Adds support for providing a custom placeholder svg.

## 1.0.1

Initial version.

repository: mmorast/lazy-images-rails

repo_name: mmorast/lazy-images-rails


text:
# About
This is a simple bot that sits in a slack channel and will look up card information for either Android: Netrunner and A Game of Thrones (depending on configuration).

# Setup
To use this bot you will need a nodejs server and git to clone this repo.

1. From this project's directory type: npm install
2. Add a slack bot to your server.
3. Edit the config.json so that CARD_DB_URL is set to http://netrunnerdb.com or http://thronesdb.com.
4. Edit the config.json so that SLACK_BOT_TOKEN is set to your slack bot's API key.
5. From this project's directory type: node app.js

# Usage
Simply type the name of a card surrounded by square brackets anywhere in your message and the bot will attempt to look it up (ie \[ttidfl\]). Acronyms and partial matches work!

# Todo

# License
Copyright (c) 2016 Eamon White Licensed under the MIT license.


text:
## `stencila/convert` : Stencila converters

![Experimental](https://img.shields.io/badge/stability-experimental-orange.svg)
[![NPM](http://img.shields.io/npm/v/stencila-convert.svg?style=flat)](https://www.npmjs.com/package/stencila-convert)
[![Build status](https://travis-ci.org/stencila/convert.svg?branch=master)](https://travis-ci.org/stencila/convert)
[![Build status](https://ci.appveyor.com/api/projects/status/f1hx694pxm0fyqni?svg=true)](https://ci.appveyor.com/project/nokome/convert)
[![Code coverage](https://codecov.io/gh/stencila/convert/branch/master/graph/badge.svg)](https://codecov.io/gh/stencila/convert)
[![Dependency status](https://david-dm.org/stencila/convert.svg)](https://david-dm.org/stencila/convert)
[![Community](https://img.shields.io/badge/join-community-green.svg)](https://community.stenci.la)
[![Chat](https://badges.gitter.im/stencila/stencila.svg)](https://gitter.im/stencila/stencila)

### Use

This package is integrated into the Stencila command line tool [`stencila/cli`](https://github.com/stencila/cli). That's the most convenient way to use converters e.g.

```bash
stencila convert document.md document.jats
```

But you can also use this package directly e.g.

```bash
npm install stencila-convert -g
stencila-convert import document.md document.jats.xml
```

Many of the `Document` converters rely on a recent version of Pandoc. This package will use an existing installation of Pandoc if it is new enough. If not, it will automatically download the required Pandoc version to the Stencila directory in your home folder. See [`pandoc.json`](src/helpers/pandoc.json) for the necessary Pandoc version and download URLs. At times it may be necessary to use our custom Pandoc build available at https://github.com/stencila/pandoc/releases.

API documentation is available at https://stencila.github.io/convert.

### Status

The following table lists the status of converters that have been developed, are in development, or are being considered for development. We'll be developing converters based on demand from users. So if you'd like to see a converter for your favorite format, +1 the relevant issue, or create an issue if there isn't one yet. Or, send us a pull request!

Format          | Import                                                           | Export
--------------- | :--------------------------------------------------------------: | :--------------------------------------------------------------:
**Documents**   |                                                                  |
Markdown        |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
RMarkdown       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |
Latex           |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
Jupyter Notebook|![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |
HTML            |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
PDF             |-                                                                 |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
**Sheets**      |                                                                  |
CSV             |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
CSVY            |                                                                  |
Tabular Data Package |                                                             |
Excel `.xlsx`   |![alpha](https://img.shields.io/badge/status-alpha-red.svg)       |![alpha](https://img.shields.io/badge/status-alpha-red.svg)
Open Document Spreadsheet `.ods`|![alpha](https://img.shields.io/badge/status-alpha-red.svg)|![alpha](https://img.shields.io/badge/status-alpha-red.svg)

### Develop

1. Clone the repo

    ```bash
    git clone https://github.com/stencila/convert.git
    ```

2. Install dependencies

    ```bash
    npm install
    ```

#### Testing

Run the test suite:

```bash
npm test # or make test
```

Or, run a single test file:

Run the test suite:

```bash
npm run test-one -- tests/document/DocumentJupyterConverter.test.js
```

To get coverage statistics:

```bash
npm run cover # or make cover
```

Or, manually test conversion using the bin script:

```bash
./bin/stencila-convert.js tests/document/fixtures/paragraph/md/paragraph.md temp.pdf
```

You can also test using Docker (e.g. so you can test under Linux):

```bash
docker build --tag stencila/convert .
docker run stencila/convert
```

repository: arinbasu/convert

repo_name: arinbasu/convert


text:
[gulp](http://gulpjs.com)-markdown-to-json
==========================================

[![CircleCI Status][circleci-badge]][circleci]
[![Semistandard Style][semistandard-badge]][semistandard]

> Parse Markdown + YAML, compile Markdown to HTML, wrap it in JSON.

The neutral format of JSON opens new possibilities for your handcrafted content. Send it onward to other plugins such as [gulp-hb][hb]. When their powers combine, you get a static site generator! Pipe to [request][request] to send it to a [search index][algolia] or [import into a CMS][contentful]. Write a plugin to [tap into the stream][plugin] if you need a client library.

Table of Contents
-----------------

- [Install](#install)
- [Usage](#usage)
- [API](#api)
- [Contribute](#contribute)
- [License](#license)

Install
-------

```bash
npm install gulp-markdown-to-json --save-dev
```

### Dependencies

This plugin does not bundle any Markdown parser to keep your options open. BYOM!

Pick one of these or write a new parser for fun!

- [commonmark.js][commonmark.js]
- [markdown-js][markdown-js]
- [markdown-it][markdown-it] ← the best
- [marked][marked]
- [remark][remark]
- [remarkable][remarkable]

Install, configure, and pass a rendering method to this plugin with a source string as its first argument. Output goes straight into the JSON file’s `body` property. If your parser requires instantiation pass a context to call it with by defining `context` in the config object. If yet more hoop jumping is required, write a wrapper function such as this example for remark:

```js
function render (string) {
  const remark = require('remark');
  const html = require('remark-html');
  return remark().use(html).process(string).toString();
}
```

> **Note:**
> YAML frontmatter blocks are stripped and handled before Markdown rendering with [front-matter][front-matter]

Usage
-----

**`/gulpfile.js`**

```javascript
const gulp = require('gulp');
const markdownToJSON = require('gulp-markdown-to-json');
const marked = require('marked');

marked.setOptions({
  pedantic: true,
  smartypants: true
});

gulp.task('markdown', () => {
  gulp.src('./content/**/*.md')
    .pipe(markdownToJSON(marked))
    .pipe(gulp.dest('.'))
});
```

Transformed source files flow onward to the destination of your choice with directory structure preserved. Any valid JSON files matched by your `gulp.src` glob passthrough.

**`/blog/posts/bushwick-artisan.md`**

```md
---
slug: bushwick-artisan
title: Wes Anderson pop-up Bushwick artisan
layout: centered
---

## YOLO
Chia quinoa meh, you probably haven't heard of them sartorial Holowaychuk pickled post-ironic. Plaid ugh vegan, Sixpoint 8-bit sartorial artisan semiotics put a bird on it Mission bicycle rights Club-Mate vinyl.
```

**`/blog/posts/bushwick-artisan.json`**

```json
{
  "slug": "bushwick-artisan",
  "title": "Wes Anderson pop-up Bushwick artisan",
  "layout": "centered",
  "body": "<h2 id=\"yolo\">YOLO</h2>\n<p>Chia quinoa meh, you probably haven't heard of them sartorial Holowaychuk pickled post-ironic. Plaid ugh vegan, Sixpoint 8-bit sartorial artisan semiotics put a bird on it Mission bicycle rights Club-Mate vinyl.</p>",
  "updatedAt": "1970-01-01T00:00:00Z"
}
```

### Consolidated Output

Gather Markdown files before piping with [list-stream][] to combine output into a single JSON file. Directory structure is preserved and represented as nested JSON for iteration with [Handlebars.js][handlebars-iterate] and friends. This is handy for navigation and other global content. Valid JSON files are included in the object if matched by your `gulp.src` glob.

The consolidated file is named **`content.json`** by default and optionally renamed.

```javascript
const gulp = require('gulp');
const ListStream = require('list-stream');
const markdownToJSON = require('gulp-markdown-to-json');
const marked = require('marked');

gulp.task('markdown', () => {
  gulp.src('./content/**/*.md')
    .pipe(ListStream.obj())
    .pipe(markdownToJSON(marked, 'blog.json'))
    .pipe(gulp.dest('.'))
});
```

**`blog.json`**

```json
{
  "blog": {
    "blog": {
      "title": "ipsum dipsum",
      "body": "<p>From west to \"east\"!</p>",
      "updatedAt": "1970-01-01T00:00:00Z"
    },
    "posts": {
      "bushwick-artisan": {
        "slug": "bushwick-artisan",
        "title": "Wes Anderson pop-up Bushwick artisan",
        "layout": "centered",
        "body": "<h2 id=\"yolo\">YOLO</h2>\n<p>Chia quinoa meh, you probably haven't heard of them sartorial Holowaychuk pickled post-ironic. Plaid ugh vegan, Sixpoint 8-bit sartorial artisan semiotics put a bird on it Mission bicycle rights Club-Mate vinyl.</p>",
        "updatedAt": "1970-01-01T00:00:00Z"
      }
    }
  },
  "mission": {
    ...
  }
}
```

Specify `flattenIndex: true` in the config object to unwrap home page/index-style content and merge it into the parent object. Name these files `index` or the same as a parent directory.

```json
{
  "blog": {
    "title": "ipsum dipsum",
    "body": "<p>From west to \"east\"!</p>",
    "updatedAt": "1970-01-01T00:00:00Z",
    "posts": {
      ...
    }
  },
  "mission": {
    ...
  }
}
```

This avoids redundant-feeling `blog.blog` scenarios when iterating and selecting from this content.

### Title Extraction and Stripping

Define titles as `title` in the YAML frontmatter. Text of the first `<h1>` is assigned to `title` automatically if this is not specified.

Specify `stripTitle: true` in the config object to remove the first `<h1>` from the body. Use this if you are displaying the title outside of the body, in a page header for example.

**`/blog/posts/bushwick-artisan.md`**

```md
Wes Anderson pop-up Bushwick artisan
====================================

## YOLO
Chia quinoa meh, you probably haven't heard of them sartorial Holowaychuk pickled post-ironic. Plaid ugh vegan, Sixpoint 8-bit sartorial artisan semiotics put a bird on it Mission bicycle rights Club-Mate vinyl.
```

**`/blog/posts/bushwick-artisan.json`**

```json
{
  "title": "Wes Anderson pop-up Bushwick artisan",
  "body": "<h2 id=\"yolo\">YOLO</h2>\n<p>Chia quinoa meh, you probably haven't heard of them sartorial Holowaychuk pickled post-ironic. Plaid ugh vegan, Sixpoint 8-bit sartorial artisan semiotics put a bird on it Mission bicycle rights Club-Mate vinyl.</p>",
  "updatedAt": "1970-01-01T00:00:00Z"
}
```

### Transforms

To change or add to the JSON data for each file, specify a transform function and return your desired object. This function is passed the default data and the [Vinyl file object][vinyl] for the source file.

For example:

```js
gulp.src('./content/**/*.md')
  .pipe(ListStream.obj())
  .pipe(markdownToJSON(marked, 'blog.json', (data, file) => {
    delete data.body;
    data.path = file.path;
    return data;
  }))
  .pipe(gulp.dest('.'))
```

API
---

### `markdownToJSON((renderer: Function, name?: String, transform?: Function) | config: Object) => TransformStream`

`config`

- `renderer` `Function` accepts Markdown source string, returns an escaped HTML string. **Required**
- `context` `Object` to use when calling `renderer`
- `name` `String` to rename consolidated output file, if using. Default: `content.json`
- `flattenIndex` `Boolean` unwrap files named `index` or after parent dirs in consolidated output. Default: `false`
- `stripTitle` `Boolean` strips the first `<h1>` from body, if extracted as title. Default: `false`
- `transform` `Function` to access and change the JSON data for each file before outputting

Contribute
----------

Pull requests accepted!

License
-------

**[MIT](LICENSE)**
Copyright © 2017 Sparkart Group, Inc.

[circleci]: https://circleci.com/gh/sparkartgroup/gulp-markdown-to-json
[circleci-badge]: https://circleci.com/gh/sparkartgroup/gulp-markdown-to-json.png?style=shield&circle-token=8bf33da398b8ab296fe670c81b3fecbae1471e25

[semistandard]: https://github.com/Flet/semistandard
[semistandard-badge]: https://img.shields.io/badge/code%20style-semistandard-brightgreen.svg?style=flat

[marked]: https://github.com/chjj/marked
[markdown-js]: https://github.com/evilstreak/markdown-js
[remarkable]: https://github.com/jonschlinkert/remarkable
[markdown-it]: https://github.com/markdown-it/markdown-it
[remark]: https://github.com/wooorm/remark
[commonmark.js]: https://github.com/jgm/commonmark.js
[front-matter]: https://github.com/jxson/front-matter

[hb]: https://github.com/shannonmoeller/gulp-hb
[request]: https://github.com/request/request
[algolia]: https://www.algolia.com/
[contentful]: https://www.contentful.com
[plugin]: https://git.io/v6t5d

[list-stream]: https://github.com/rvagg/list-stream
[handlebars-iterate]: http://handlebarsjs.com/#iteration

[vinyl]: https://github.com/gulpjs/vinyl


text:
---
layout: service-detail
title:  Coaching - TDD
lang: en
permalink: "/services/coaching/tdd_en/"
lang_ref: services_coaching_tdd
previous: services_coaching_devops
next: services_coaching_agile_planning
---
I have successfully used [Test Driven Development](https://en.wikipedia.org/wiki/Test-driven_development) (TDD for short) for a couple of years now.
Especially for backend systems, where no pesky GUI is involved, it can work very well.
That said, I am more than willing to expand that notion.

### What I can do for you
Depending on where you are with TDD, I can help you out in various ways:
- Curious but don't know where to start?
: I can give a little crash course to a meeting-room sized audience.
- Kind of into it but want do dive deeper?
: I can pair up with your developers and get diving, or we do a little workshop.
- Have an area in your code where you are sure TDD does NOT work (but you would like it to)?
: We can take it on together and see what we can learn.


text:
# What is rubberDEL

## Disclaimer! Go to release tab for newest version!!!
_______________________________________________
  - Its a Rubber Ducky (HAK5) File Manager
  - Delete .bin files like magic
  - Look Kool
  - Easy as 1 Enter Enter!
  - Constant Updated!

# New Features! 10/26/17

   - Unmount your USB directly from the software
   - A little faster
   - Auto Installer
   -Better Manual Installer
   -Fixed password issues
   -more stable (exept for the auto installer)

##### New Features! 10/5/17(old)

  - New Custome file deleter
  - Faster than before

### Installation

```bat
//The Password to extract the zip file is
DeDogeGod514
```

You can use the NEW Auto installer but if you perfer to manually install it its quite easy.

Open cmd and type

```bat
Xcopy C:\Users\Your User\ Where the rubberDEL folder is\rubberDEL.bat C:\Users\Your User\
Xcopy C:\Users\Your User\ Where the rubberDEL foder is\$rubberpro$\ C:\Users\Your User\
exit
```

To uninstall

```bat
del /f rubberDEL.bat
del /f $rubberpro$
```

### Usage

First open cmd (perferably GUI R) and type rubberDEL or rubberDEL.bat. Simple as that.

repository: DeDogeGod/rubberDEL

repo_name: DeDogeGod/rubberDEL


text:
# Netchannel Data
## NetChannel Packet Header

| Name           | Type   | Description                              | Value       |
|----------------|--------|------------------------------------------|-------------|
| Sequence       | `long` | The sequence number                      | *Varies*    |
| Sequence ack   | `long` | The sequence number acked                | *Varies*    |
| Flags          | `byte` | A series of flags that change the header | *Varies*    |
| Checksum       | `u16`  | A checksum of the message                | *See below* |
| Reliable State | `byte` | Reliable state of 8 subchannels          | *Varies*    |

### Checksum

**TODO**: Document the checksum

### Flags

#### `PACKET_FLAG_CHOKED` = `1 << 4`

| Name   | Type   | Description                   | Value             |
|--------|--------|-------------------------------|-------------------|
| Choked | `byte` | The number of packets choked? | `Number Choked & 0xFF` |

#### `PACKET_FLAG_CHALLENGE` = `1 << 5`

| Name      | Type   | Description                               | Value    |
|-----------|--------|-------------------------------------------|----------|
| Challenge | `long` | A challenge to verify the client identity | *Varies* |

#### `PACKET_FLAG_RELIABLE` = `1 << 0`
##### Reliable Data Structure

| Name            | Type        | Description                                      | Value    |
|-----------------|-------------|--------------------------------------------------|----------|
| Bit             | `3 bits`    | The bit to flip in reliable state (1 << this)    | *Varies* |
| SubChannel Data | *See below* | Data for a subchannel (Repeats 2 times)          | *Varies* |

##### SubChannel Data (Single Block)

| Name              | Type                     | Description                                                                                | Value                |
|-------------------|--------------------------|-------------------------------------------------------------------------------------------------|----------------------|
| Exists            | `1 bit`                  | If there is data to read for the subchannel (Determines if the rest of this structure is there) | *It is binary*       |
| Single Block?     | `1 bit`                  | If the data is in a single block or multiple                                                    | `0` means **single** |
| Compressed?       | `1 bit`                  | If the data is compressed                                                                       | *It is binary*       |
| Uncompressed size | `26 bits`                | The uncompressed size of the data. **Only read if the packet is compressed**                    | *Varies*             |
| Bytes             | `VarInt32`               | The size of the file.                                                                           | *Varies*             |
| Data              | `bytes+(1 << 8)-1 bytes` | The data being sent.                                                                            | *Varies*             |

##### SubChannel Data (Multi-Block)
###### First Block

| Name                | Type                     | Description                                                       | Value                         |
|---------------------|--------------------------|-------------------------------------------------------------------|-------------------------------|
| Single Block?       | `bit`                    | If the message is a single block                                  | `1` means **multiple blocks** |
| Start Fragment      | `26 - 8 bits`            | The start fragment of the packet                                  | *Varies*                      |
| Number of fragments | `3 bits`                 | The number of fragments in a packet.                              | *Varies*                      |
| Is file?            | `1 bit`                  | If the message contains a file                                    | *Its binary*                  |
| Transfer ID         | `u32`                    | The transfer ID of the file. **Only read if is a file**           | *Varies*                      |
| Filename            | `string`                 | The filename of the file. **Only read if is a file**              | *Varies*                      |
| Is compressed?      | `1 bit`                  | If the message is compressed.                                     | *Its binary*                  |
| Uncompressed size   | `26 bits`                | The uncompressed size of the data. **Only read if is compressed** | *Varies*                      |
| Bytes               | `26 bits`                | The size of the entire file in bytes.                             | *Varies*                      |
| Data                | `bytes+(1 << 8)-1 bytes` | The data being sent.                                              | *Varies*                      |

###### Following Blocks

| Name                | Type                             | Description                          | Value                         |
|---------------------|----------------------------------|--------------------------------------|-------------------------------|
| Single Block?       | `bit`                            | If the message is a single block     | `1` means **multiple blocks** |
| Start Fragment      | `26 - 8 bits`                    | The start fragment of the packet     | *Varies*                      |
| Number of fragments | `3 bits`                         | The number of fragments in a packet. | *Varies*                      |
| Data                | `Number of fragments * (1 << 8)` | The data being sent                  | *Varies*                      |

## NetChannel Commands (Follow SubChannel Data)

### Basic structure

| Name    | Type     | Description                              | Value    |
|---------|----------|------------------------------------------|----------|
| Command | `6 bits` | The command being issued                 | *Varies* |
| Data    | *Varies* | The command body, could be none or some. | *Varies* |

#### NetChannel Commands

##### Control Commands

###### net_NOP = `0x00`

This message has no body, it is padding

###### net_Disconnect = `0x01`

| Name   | Type     | Description               | Value    |
|--------|----------|---------------------------|----------|
| Reason | `string` | The reason for disconnect | *Varies* |

###### net_File = `0x02`

| Name        | Type     | Description                     | Value        |
|-------------|----------|---------------------------------|--------------|
| Transfer ID | `u32`    | The transfer ID of the file     | *Varies*     |
| File name?  | `string` | The name of the file requested? | *Varies*     |
| Deny?       | `bit`    | Denies the transfer if not 1    | *Its binary* |

repository: NicksWorld/australium

repo_name: NicksWorld/australium


text:
# Contributing

Please take a moment to review our main
[CONTRIBUTING.md](.github/CONTRIBUTING.md) for an extensive overview of core
ideas, conventions and information on submitting a PR

## Creating a new template

Slice layout templates sit within their own named directory within the `/templates`
directory. The Components take functions as `props` (render props) that pass
configuration objects to consumers of Slice layout. The configuration objects are
generated is from `config.js`. The objects manage JS properties _and_
responsive CSS class names for web, that provide a suggested layout and format
for the children that will be laid out in each template.

<pre>

### How it works

+----------------------------------------------------------+
|  Slice layout                                                   |
|                                                          |
|                     renderProp                           |
|  +              <-------------------+                    |
|  |                                  |                    |
|  |                                  |                    |
|  |                                  |                    |
|  |                    +-----------------------------+    |
|  |                    |  Consumer   |               |    |
|  |                    |             |               |    |
|  |                    |             |               |    |
|  |                    |             +               |    |
|  |                    -                             |    |
|  | renderProp(config)                               |    |
|  +---------------------------------->               |    |
|                       +-----------------------------+    |
|                                                          |
+----------------------------------------------------------+

</pre>

### Folder structure

An example template looks like this:

```
.
└── standard
    ├── config.js
    ├── index.js
    ├── proptypes.js
    └── responsive.js
```

### Image placeholder rules

For slices that show articles, it is important to follow the rules around
showing images:

If an article has no image available (either as the lead image or generated from
the associated video), display a new generic Times / ST logo, NOT one that is
specific to the publication (The Times / The Sunday Times)

This should not apply in the following scenarios:

- Any homepage slices
- When the article page is missing it's lead image

repository: newsuk/times-components

gha_language: JavaScript

repo_name: newsuk/times-components


text:
## Info

[![Gem Version](https://badge.fury.io/rb/orphic.svg)](https://badge.fury.io/rb/orphic)

## Installation

You'll need Ruby and Rubygems installed for this to work. [Google is your friend](https://lmgtfy.com/?q=install+ruby+and+rubygems). If those steps are complete, you can install the gem locally with `gem install orphic`. To build from source, clone the repo, access the directory and run `bundle install`.

# Example commands:

## `bundle exec exe/orphic help`
Commands:
  orphic hello NAME            # This will greet you
  orphic help [COMMAND]        # Describe available commands or one specific command
  orphic map DISTRICT ...ARGS  # View map for a district
  orphic media TYPE            # Interface with various media types
  orphic node COMMANDS         # Node.JS Commands

## `orphic map`

  orphic map createDistrict  # Create a new district with <createDistrict>
  orphic map district        # Commands for a specific district
  orphic map help [COMMAND]  # Describe subcommands or one specific subcommand

## `orphic createDistrict`

[wuubi@archVM orphic]$ bundle exec exe/orphic map help createDistrict
Usage:
  orphic map createDistrict

Options:
  [--awake=AWAKE]
  [--grow=GROW]
  [--discover=DISCOVER]
  [--trust=TRUST]
  [--truth=TRUTH]
  [--magic=MAGIC]
  [--poetry=POETRY]
  [--drive=DRIVE]
  [--will=WILL]
  [--loyal=LOYAL]
  [--enthuse=ENTHUSE]
  [--clarity=CLARITY]

Description:
  Create a new district with createDistrict. Base map includes the following options for branching:

  --AWAKE - The entrypoint. Create command line interfaces, web portals, and related tech.
  --GROW - User Interfaces and Experiences, projects here relate to front-end like React, CSS, and prototypes.
  --DISCOVER - Your current location. Educate your peers or yourself.
  --TRUST - Create authorization, cyphers, and cryptography-related projects.
  --TRUTH - The gateway. Can be used to verify authorizations and is often tied to the Trust District.
  --MAGIC - Let the magic begin! Here you can create ephemeral changes and middleware.
  --POETRY - The poet, the lover, and the coder are of imagination all compact... Code as art.
  --DRIVE - Real-time commands that will effect a concurrent stream or processes.
  --WILL - Databases and permanence.
  --LOYAL - The gauntlet. Test your loyalty with user or unit testing.
  --ENTHUSE - Live events and promotions.
  --CLARITY - The endgame, from your command-line, through staging and production.

## `orphic node`

[wuubi@archVM orphic]$ bundle exec exe/orphic node help
Commands:
  orphic node deploy SITE     # Deploy a Node.JS instance
  orphic node help [COMMAND]  # Describe subcommands or one specific subcommand

## `bundle exec exe/orphic media createMedia new --mp3`
┏━━ Orphic Developer Experience ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃┏━━ Ruby CLI ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃┃ The Orphic Ruby CLI utilizes the Thor gem for self-documenting commands and cli-ui gem for UI.
┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (0.0s) ━━
┃ Great minds never think alike.
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (0.01s) ━━
MP3 file created
┏━━ Map :: Media : Create new ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ new

## `bundle exec exe/orphic media createMedia new --red`
┏━━ Orphic Developer Experience ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃┏━━ Ruby CLI ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃┃ The Orphic Ruby CLI utilizes the Thor gem for self-documenting commands and cli-ui gem for UI.
┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (0.0s) ━━
┃ Great minds never think alike.
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (0.0s) ━━
ERROR: "orphic media createMedia" was called with arguments ["new", "--red"]
Usage: "orphic media createMedia"

repository: wuubi/ruby-orphic-cli

branch_name: refs/heads/main

gha_license_id: NOASSERTION

repo_name: wuubi/ruby-orphic-cli


text:
# Creating a "Fade" Transition with the CSS Transition Property

Now we wanna fade our `alert` in and out. To do that in our `<style>` part we'll use a `fade-enter` css class. Remember that here we should set our initial state we want to have. Since we wanna fade it in it should initially be transparent, therefore we will set the `opacity` to zero and this is it. We wouldn't set any `transition` here, cos remember this class will immediately be removed after one frame. The place to set up a `transition` is in `fade-enter-active` class. Here we would transition our `opacity` over 1 second. For leaving we could set `opacity` to `1` (in `fade-leave` class), but we shouldn't cos this is default. For `fade-leave-active` though we again should setup the `transition`, and here is important to set up the `opacity` to `0`. Remember the default already is `1`, that's why we set both the `transition` and the `opacity` to `0`, we tell it "yes, animate it whenever the opacity changes, and look here it changes to `0`".

**App.vue**

```html
<template>
    <div class="container">
        <div class="row">
            <div class="col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
                <h1>Animations</h1>
                <hr>
                <button class="btn btn-primary" @click="show = !show">Show Alert!</button>
                <br><br>
                <transition name="fade">
                <div class="alert alert-info" v-if="show">This is some Info</div>
                </transition>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        data() {
            return {
             show: false
            }
        }
    }
</script>

<style>
.fade-enter{        /*set initial state here*/
 opacity: 0;
}
.fade-enter-active{
transition: opacity 1s;            /*set transition here*/
}
.fade-leave{
/*opacity:1 - is the default state*/

}
.fade-leave-active{
    transition: opacity 1s;           /*set transition here*/
    opacity: 0;              /*set opacity to 0 here*/
}
</style>
```

Now VueJS is able to sniff these `CSS classes`, finds out that the `transition length` is 1 second, and it does the same for the leaving.

url: https://raw.githubusercontent.com/anmud/learntocode/7a7fcd3f4922f3029c74fba1596d20f9181f7c06/Udemy. Vue/14_Adding Animations and Transitions/005_Creating a "Fade" Transition with the CSS Transition Property.md

repository: anmud/learntocode

repo_name: anmud/learntocode


text:
# genesis-app-api
Project management app api source code

Problem:
Setup a project using Django Rest Framework and Django Rest Auth, that has users and projects.
A user must be authorized in order to view or make any changes to the database. Projects have the following fields - title, description, status (Active, On Hold, Completed), start date, end date.
Any number of users can be assigned to projects. Projects should be able to be filtered by any number of params (ex. title, assigned users, etc.).
If more than one param is input, all params should be accounted for when filtering. The filtering functionality should also accommodate a search term that should take into account all fields of a project, including assigned users.
Project and Users should be serialized and returned as JSON in a list format.
When a single project is retrieved it should include full serialization of associated users.

Solution:

The project implements above features using djangorestframework and django-rest-auth[with_social] (with social is used to add registration functionality)
Required packages can be installed using requirements.txt. Alternately, we can run below commands:
pip install django
pip install djangorestframework
pip install django-rest-auth[with_social]

To access the api base url is projects/

Filter usage examples:
http://<IP_ADDRESS>:8000/projects/?title=chatbot
http://<IP_ADDRESS>:8000/projects/?description=python
http://<IP_ADDRESS>:8000/projects/?status=Active
http://<IP_ADDRESS>:8000/projects/?users=John
http://<IP_ADDRESS>:8000/projects/?end_date=2021-12-31
http://<IP_ADDRESS>:8000/projects/?start_date=2020-01-01
http://<IP_ADDRESS>:8000/projects/?end_date=2021-12-31&status=Active [Combination of filters]
http://<IP_ADDRESS>:8000/projects/?search=completed  [Search filter]

Assumption:
All users can get all projects by default if they have view permissions.
If users are required to access only their assigned projects, the last line in views.py can be changed to:
return queryset.filter(users=self.request.user)

Things to note:
1. Superusers will be able to add a new project
2. If a user doesn't have view permissions, it will not be able to get list of projects
3. Unauthenticated users will not be able to perform any operation
4. Registration url: [Email is not required]
http://<IP_ADDRESS>:8000/rest-auth/registration/
5. Login url:
http://<IP_ADDRESS>:8000/rest-auth/login/
6. Logout url:
http://<IP_ADDRESS>:8000/rest-auth/logout/

repository: akshay-web/genesis-app-api

repo_name: akshay-web/genesis-app-api


text:
# Docker Startup
Docker LAMP container configured for a Symfony 3+ projects but it can be easily adjusted for any PHP based framework.

## Included software
- PHP 7.3.1
- MySQL (latest)
- Apache 2.4.25
- MailDev 1.0.0-rc3

## Installation
- Clone this into your project root directory
- To start new Symfony project run `composer create-project symfony/website-skeleton web` or `symfony new --full web`.
- If you use framework that does have `index.php` file in your project root, instead of `/public` or uses other structure:
    - Create `/web/public` directory and place your framework into `/web/public` if your framework doesn't separate public code from framework.
    - Create `/web` directory and modify line `4` of `.docker/apache/vhosts/site.conf` to match your framework structure.
- Run `docker-compose build`

## Usage
### How to start server
`docker-compose run`
### How to login into containers console
- Apache: `docker container exec -it apache_container bash`
- PHP: `docker container exec -it php_container bash`
- MySQL: `docker container exec -it mysql_container bash`
- PHPMyAdmin: `docker container exec -it phpmyadmin_container bash`
- MailDev: `docker container exec -it maildev_container bash`
### Server URL's
- Webserver (main) http://localhost
- PHPMyAdmin http://localhost:8080
- MailDev http://localhost:8081

repository: bestproject/startup

repo_name: bestproject/startup


text:
# openvidu-fault-tolerance

This project exemplifies the fault tolerance capabilities of an application making use of an OpenVidu cluster, whether it is an OpenVidu Pro cluster or an OpenVidu Enterprise cluster. It demonstrates how to automatically rebuild any Session affected by a node crash, so final users do not have to perform any action to reconnect to a crashed Session.

## Compile and run the app

This is a SpringBoot application. Prerequisites:

| Dependency    | Check version   | Install                                 |
| ------------- | --------------- |---------------------------------------- |
| Java 11 JDK    | `java -version` | `sudo apt-get install -y openjdk-11-jdk` |
| Maven         | `mvn -v`        | `sudo apt-get install -y maven`         |

To compile and run the app:

```
git clone git@github.com:OpenVidu/openvidu-tutorials.git
cd openvidu-tutorials/openvidu-fault-tolerance
mvn clean package
java -jar target/openvidu-fault-tolerance*.jar --openvidu.url=OPENVIDU_PRO_DOMAIN --openvidu.secret=OPENVIDU_SECRET
```

### Example
- `OPENVIDU_PRO_DOMAIN` = `https://example-openvidu.io`
- `OPENVIDU_SECRET` = `MY_SECRET`
```
git clone git@github.com:OpenVidu/openvidu-tutorials.git
cd openvidu-tutorials/openvidu-fault-tolerance
mvn clean package
java -jar target/openvidu-fault-tolerance*.jar --openvidu.url=https://example-openvidu.io --openvidu.secret=MY_SECRET
```

## Test the reconnection capabilities

### Media Node failure

A Session hosted in a Media Node suffering a crash will be automatically re-created and re-located in a different Media Node, without intervention of the final user. For this to work, the OpenVidu cluster must have at least 2 running Media Nodes. To test the reconnection capabilities of the application:

1. Make sure your OpenVidu cluster has at least 2 different Media Nodes.
2. Connect 2 different users to the same session. They should both send and receive each other's video.
3. Find out in which Media Node the session was located. You can call REST API method [GET Media Nodes](https://docs.openvidu.io/en/stable/reference-docs/REST-API/#get-all-medianodes) to do so.
4. Terminate the Media Node hosting the session.
5. After 3~4 seconds both users will automatically re-join the same session, successfully re-establishing the video streams.

### Master Node failure (OpenVidu Enterprise HA)

A session managed by a Master Node suffering a crash will be automatically re-created and re-located in a different Master Node, without intervention of the final user. For this to work, the OpenVidu Enterprise HA cluster must have at least 2 running Master Nodes. To test the reconnection capabilities of the application:

1. Make sure your OpenVidu cluster has at least 2 different Master Nodes.
2. Connect 2 different users to the same session. They should both send and receive each other's video.
3. Find out in which Master Node the session was located. To do so you will need to consume REST API method [GET Sessions](https://docs.openvidu.io/en/stable/reference-docs/REST-API/#reference-docs/REST-API/#get-all-sessions) directly from inside the Master Node machine. Connect to one of them and consume the REST API using directly openvidu-server-pro URI (`http://localhost:5443`), to skip the proxy that unifies the response from every Master Node. For example with cURL: `curl -X GET http://localhost:5443/openvidu/api/sessions -u OPENVIDUAPP:<YOUR_SECRET>`. The Master Node that returns a non-empty response is the one hosting the session.
4. Terminate the Master Node hosting the session.
5. Users will detect the crash and will rejoin the session automatically, successfully re-establishing the video streams. A very short amount of time will elapse from the detection of the crash and the re-joining to the session.

repository: OpenVidu/openvidu-tutorials

repo_name: OpenVidu/openvidu-tutorials


text:
# aiochannels

Python 3.6+

Adds inspired by Golang channels interface for asyncio tasks.

## About
Aiochannels connect concurrent asyncio tasks via go-like channel interface.
You can asynchronously send and receive data through aiochannels senders and getters which can be attached and detached from channel any time.
Library aditionally provides AiterableDeque class which is an asynchronous deque implementation that can be changed during iteration.

## Install
Clone from git and install via setup.py.
Or `pip install -U https://github.com/isanich/aiochannels/archive/master.zip`.

## Documentation
Look at example below. Aiterable_deque module has no documentation but you can take a look at its tests if needed.

```python
import asyncio
from aiochannels import Channel, aenumerate

async def simple_pinger(ch):
    sender = await ch.new_sender()
    while sender.is_attached:
        # sender can be detached from Channel with `sender.detach`
        await sender.send('ping')

async def simple_ponger(ch):
    sender = await ch.new_sender()
    while sender.is_attached:
        await (sender << 'pong')  # another variant of `sender.send`

async def main():
    channel = await Channel(buffer_size=10)
    # Channel without buffer_size argument or buffer_size=1 leads to Go-like behavior
    # meaning that senders can send only if getters have already received previously sent
    # data with `getter.get` or `getter.get_forever`. buffer_size>1 behavior is also similar to Go.
    pinger_task = loop.create_task(simple_pinger(channel))
    ponger_task = loop.create_task(simple_ponger(channel))

    # pinger and ponger are created with asyncio.Task and will be running asynchronously until their tasks
    # are cancelled or senders detached (you should reference those senders elsewhere for this).
    getter = await channel.new_getter()

    # getters can receive with `getter.get` manually
    print(await getter.get())  # ping
    print(await getter.get())  # pong
    print(await getter.get())  # ping

    # and with async generator `getter.get_forever`
    async for ix, data in aenumerate(getter.get_forever()):  # aenumerate is async `enumerate` analogue
        if ix >= 5:
            # await getter.detach() - could cause to similar effect as `break`, but getter will no longer receive
            break
        print(f'Received from `getter.get_forever` - {data}')

    # Sync/async callbacks are supported too
    def cb_1(msg):
        print(f'Sync callback got - {msg}')

    async def cb_2(msg):
        print(f'Async callback got - {msg}')

    getter.add_callback(cb_1)
    getter.add_callback(cb_2)
    # If you getter is not `silent` (see `silent_getter` below) callbacks should be
    # triggered with `getter.get` or `getter.get_forever`
    await getter.get()  # `cb_1` fired and `cb_2` task is put into asyncio loop
    await asyncio.sleep(0)  # let async callback fire
    getter.remove_callback(cb_1)
    getter.remove_callback(cb_2)

    await getter.detach()  # getter can be detached and will no longer receive
    # await getter.attach() - and attached again

    silent_getter = await channel.new_getter(silent=True)
    # You can pass silent=True argument to `new_getter()` if you are planning to use this getter with
    # callbacks only without explicit `getter.get` or `getter.get_forever`).
    silent_getter.add_callback(cb_1)
    print('Calbacks from silent getter:')
    await asyncio.sleep(0.1)  # callbacks will be triggered during sleep
    await silent_getter.detach()
    # As Channel buffer_size is 10 and there is no more getters
    # pinger/ponger tasks are asleep now, but we can cancel them anyway.
    pinger_task.cancel()
    ponger_task.cancel()

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
```

repository: iissme/aiochannels

repo_name: iissme/aiochannels


text:
# prometheus-reconfig
Reconfigure a prometheus instance via API

Uses the [IceCube Token Service](https://github.com/WIPACrepo/token-service) for authorization.

## Env Variables

PROMETHEUS_*_CONFIGFILE : The service to be updated, named by the wildcard.
  This should be a Prometheus SD target file.

TOKEN_SERVICE : The url for the IceCube Token Service.

## Run

Run the script by doing (for example):

    PROMETHEUS_SD_CONFIGFILE=/etc/prometheus/sd.conf \
      TOKEN_SERVICE=https://tokens.icecube.wisc.edu \
      python prometheus_reconfig.py

## Docker

Docker can be used to run as well:

    docker run --rm -v /etc/prometheus/sd.conf:/etc/prometheus/sd.conf \
      -e PROMETHEUS_SD_CONFIGFILE=/etc/prometheus/sd.conf \
      -e TOKEN_SERVICE=https://tokens.icecube.wisc.edu \
      wipac/prometheus-reconfig

repository: WIPACrepo/prometheus-reconfig

gha_language: Python

repo_name: WIPACrepo/prometheus-reconfig


text:
# txttools

Simple command-line scripts for manipulating text files.

Using:

```bash
git clone https://github.com/gordonbrander/txttools
cd txttools
pip3 install -e .
```

## Commands

- [txt_clean_whitespace](txttools/bin/clean_whitespace.py): clean up junk whitespace.
- [txt_combine](txttools/bin/combine.py): combine contents of files with a separator.
- [txt_ext](txttools/bin/ext.py): assign a new file extension to a batch of files.
- [txt_textiness](txttools/bin/textiness.py): filter chunks of text based on "textiness". Meant for cleaning out junk text after scraping.
- [txt_unwrap](txttools/bin/unwrap.py): unwrap text in a file.
- [txt_sep](txttools/bin/sep.py): add separators between each chunk of stdin

Do `<cmd> --help` for usage info on each.

TODO

- txt_filter_files: some way of filtering file names based on contents inside. Use for running reports, combining, etc.

repository: gordonbrander/txttools

repo_name: gordonbrander/txttools


text:
# Chapter 2. end to end project
## Configure environment
install:
- jupyter
- numpy
- matplotlib
- pandas
- scipy
- scikit-learn

Create jupyter notebook
Download housing price data from https://raw.githubusercontent.com/ageron/handson-ml/master/datasets/housing/housing.tgz
Look at the data using pandas
pd.head() displays sample of data rows
pd.info() displays column info
pd.describe() displays statistical info about data
pd['row'].value_counts() useful to view categorical data
plot data with scatter (x lang, y lat)
plot data with scatter
prepare data (via transformation function). using functions have multiple advatages
- can work on new data (fresh data set)
- can be used to preprocess data at production
- build a library of transformation function to use with other projects
- easier to try different combinations of transformations

preprocessing pipeline

repository: barmag/HandsOnML

repo_name: barmag/HandsOnML


text:
---
title: "React Native"
subtitle: "SDK for screen recording and analytics for React Native."
description: "This SDK offers several options to developers and/or companies."
---

## What you can do

* Replay session recordings in our web player
* Capture all of the user interactions and find ones you can about in the Events manager
* Set your own custom analytics event and do complex funnels/queries in the dashboard
* Collect referrer value and source of installation per visitor

## Getting started

Install the Smartlook RN bridge:

1. `$ npm install smartlook-react-native-wrapper --save`
2. only for RN before version 0.60.0: `$ react-native link smartlook-react-native-wrapper`

### First upgrade to RN 0.60.0 or higher

1. Make sure to make way to [autolinking](https://facebook.github.io/react-native/blog/2019/07/03/version-60#native-modules-are-now-autolinked) by calling `$ react-native unlink smartlook-react-native-wrapper`
2. on iOS, change Smartlook bridge linking to Cocoapods (see below)

## Android

1. Open `android/build.gradle`
2. Update gradle version to `classpath 'com.android.tools.build:gradle:3.1.0'` in case you are using older React native version
3. Add our maven repository:

```android
allprojects {
  repositories {
    maven {
      url "https://sdk.smartlook.com/android/release"
    }
  }
}
```

Also edit `gradle-wrapper.properties` so you are using: `gradle-4.4-all.zip` -> This step is not needed in newer React native versions.

## iOS

### Cocoapods (RN 0.60.0 and higher)

Cocoapods seems to be [the way to integrate third party modules with native iOS components](https://facebook.github.io/react-native/blog/2019/07/03/version-60#cocoapods-by-default) into React Native apps now.

The following steps create a test app with integrated Smartlook:

```shell
# create test app
npx react-native init SLTest01
cd SLTest01/

# install Smartlook plugin
npm install smartlook-react-native-wrapper --save

# change dir to your ios project, open Podfile and add the line above
# install the pods
cd ios
pod install

# should print out:
#    Installing Smartlook (x.y.z)
#    Installing smartlook-react-native-bridge (x.y.z)
```

Then add Smartlook initialization to the `App.js` and run the app
```js
// Smartlook initialization
var Smartlook = require("smartlook-react-native-wrapper");
Smartlook.setupAndStartRecording("API_KEY");
```

using these commands
```shell
# open App.js and add Smartlook initialisation there
open ../App.js

# open the Xcode workspace
open SLTest01.xcworkspace

# finally run the Xcode project
```

#### Cocoapods troubleshooting (RN 0.60.0 and higher)

When you are using Cocoapods, you cannot use ~`react-native link`~.

To make sure the module is not linked the old way, call `$ react-native unlink smartlook-react-native-wrapper`

When upgrading from an older, non-cocoapods version, make also sure there is no older version of `Smartlook.framework` bundled in your app. To check it out,
1. remove the smartlook-related line from your Podfile
2. run `$ pod install` in your app `ios` directory to remove smartlook bridge from your app
3. manually remove any `Smartlook.framework` that you find in your app Xcode project.
4. clear all caches as described below and add the smartlook reference to your `Podfile` again

It aways helps to reset the environment by
- cleaning caches: `$ watchman watch-del-all; rm -rf ~/Library/Developer/Xcode/DerivedData`
- killing the Metro Bundler

### Legacy iOS framework linking (RN before 0.60.0)

The native `Smartlook.framework` is no longer part of the installed bridge.

If you need it for creating your own bridge, or if the traditional `$ react-native link  smartlook-react-native-wrapper` works for you, [download the latest version here](https://smartlook.github.io/docs/sdk/ios/#manual-installation) and add it manually to your iOS Xcode project. This makes you also responsible for its updates to latest versions.

The RN bridge files that proxy the native SDK into React Native and the native framework header files are still distributed as part of the installed bridge.

Please note that `$ react-native link  smartlook-react-native-wrapper` may or may not work depending on many factors like React Native version etc. and may require some additional Xcode project tweaking which depends on your particular toolchain setup.

## Usage

```js
var Smartlook = require('smartlook-react-native-wrapper');
Smartlook.setupAndStartRecording("KEY");
```

Description of additional public SDK methods can be found in Android and iOS docs section. Please note that `initIrregular` methods **are not available** in React native Android version.


text:
# Do Automation

Wrapper around [dopy](https://github.com/Wiredcraft/dopy) to help in quickly creating new droplets and execute common actions.

The project, as of now, is developed with personal use in mind; no documentation is provided and the default settings are highly subjective.

A list of available commands can be seen by running
```
    ./do.py
```

while help on a single command can be read by running
```
    ./do.py help [command_substring]
```


text:
---
title: Contribution Quickstart
layout: article
key: contribute-quickstart
---

## New Page

To add a page, follow these steps:

1. Fork [this](https://github.com/purdue-arc/wiki) repository.
2. Add a copy of `wiki/contributing/template.md` to the project folder of interest in the `wiki` folder
3. Write your page in [markdown](https://www.markdownguide.org/cheat-sheet). Some recommended methods:

- Connect [Prose.io](http://prose.io/) to your Github account and write from your browser
- Clone the repository to your device. We recommend using the Atom editor with the Markdown-Writer and Markdown-Image-Helper packages.

4. Rename the .md file to a [kebab-case](https://textcaseconvert.com/blog/kebab-case/) version of your title (e.g `this-is-an-example.md`)
5. Link your article in `_data/navigation.yml` under the `wiki` heading
6. If you added your name as the author, add yourself to the \_data/authors.yml page to get some credit for your work
7. Before you submit changes, view them by running them locally (directions in next section)
7. Submit a pull request to the ARC wiki GitHub
8. Editors may request changes. After that, it will be accepted and reflected on the website

### Using GitPod

#### Forking and Setting Up GitPod

1. Fork [this](https://github.com/purdue-arc/wiki) repository (top right button) to add it to your GitHub account.
2. Install the [GitPod Extension](https://chrome.google.com/webstore/detail/gitpod-dev-environments-i/dodmmooeoklaejobgleioelladacbeki?hl=en).
3. Go to the forked repository, connect GitPod to your GitHub account, and open the repository in GitPod.
4. Open the terminal:
      - Set up forked repository and call it upstream\*: `git remote add upstream https://github.com/whoever/whatever.git`
      - Install all packages necessary:  `bundle install`
      - Pull new changes in from GitHub: `git fetch upstream` → `git checkout master` → `git rebase upstream/master`

> \* These commands are not needed once the forked repository is set up the first time you use GitPod.

#### Writing the Page:

1. Create your file under the folder of interest in the `wiki` folder.
2. Use [kebab-case](https://textcaseconvert.com/blog/kebab-case/) to appropriately name your file under a self-describing name (e.g `this-is-an-example-page.md`).
3. Write your page in [markdown](https://www.markdownguide.org/cheat-sheet). The formatting can be viewed in the [wiki template]({% link wiki/contributing/template.md %}) provided.
4. Link your article in `_data/navigation.yml` under the `wiki` heading.
5. If you added your name as the author, add yourself to the \_data/authors.yml page to get some credit for your work.
6. Before committing your changes to GitHub, view them in the browser by running `jekyll serve` in the terminal.

#### Comitting and Opening a PR

1. Stage the files to commit: `git add .`
2. Commit all files to GitHub: `git commit -m "Write comments here"`
3. Push changes into local repository: `git push`
4. Submit a [pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request) from your forked repository to ARC wiki on GitHub and let a member of the Leadership Team know. Changes may be requested before final submission.

## Running Locally

If you want to check your changes on a local, development server you can either use Docker or Ruby.

### Docker

1. [Install Docker](https://docs.docker.com/install/).

2. Generate _Gemfile.lock_:
```bash
docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.6 bundle install
```

3. Build Docker image:
```bash
docker-compose -f ./docker/docker-compose.build-image.yml build
```

4. Run Docker image:
```bash
docker-compose -f ./docker/docker-compose.default.yml up
```

### Ruby

Check out this [tutorial](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/testing-your-github-pages-site-locally-with-jekyll).


text:
# Python Basics

Python is an interpreted, high-level, general-purpose programming language. It is designed to be highly readable, and to be easy to learn. As an object-oriented language, Python also provides a lot of flexibility and power.

## Intro Tutorial Links:

- []()
- []()
- []()

repository: Bailey-Man/Reference

repo_name: Bailey-Man/Reference


text:
##FreeDns client

This client is a JVM (scala) client that sniffs your teredo address and pushes it to freedns.afraid.org

##Why?

Where I live routable ip4 addresses are few and far between.  And there's no IPv6 infrastructure either...

freedns.afraid.org will sniff your address if you curl or wget them _but they don't have an ip6 address!_

I couldn't get inadyn-mt to compile properly. Then I started looking through inadyn-mt's source -- big and complicated...

The source code for this client is about 10 lines.  Less than the readme.

##Similar Alternatives

You might try the service offered by [dyndnsix.org](https://dyndnsix.org).  It's an ip6 curl or wget driven ddns service which is pretty cool.  If I'd known about it I wouldn't have bothered to write this client (although it was also an exercise in scala). Cool features:

* Free.
* Registration free (or optional). No traditional username/password!
* Optionally secure.
* Excellent function to complexity ratio.

##Binary

Check the target directory or [this link](https://github.com/milo-minderbender/teredo-ddns-client/raw/master/target/FreeDns-assembly-1.01.jar)

##How to build

Run `sbt compile assembly` from the root of the directory.  This will package the scala library and the ddns client into FreeDns-assembly-1.0.jar.  If you don't want to build you can just copy the jar file.

The project includes paulp/optional as source crudely hacked to compile with sbt 0.12 and scala 2.9.2.  the compile/assembly task will compile this project too.

##Binary

If you don't want to build you can download the FreeDns-assembly-1.0.jar from the target directory.

You can obtain your hashcode by inspecting the _direct url_ link given to you by freedns.afraid.org.  Scala is not required to run this client -- only to build it.

####Optional arguments:

--url the url you want to 'hit' with `%1$s` substituting for the hashcode and `%2$s` substituting for the ip address.  (You can probably make this client work with any ddns service using this.)  The default url is `http://freedns.afraid.org/dynamic/update.php?%1$s&address=%2$s`

 * %1$s - hashcode
 * %2$s - ip  address

--address: the ipaddress you want to send to freedns (defaults to your teredo address).

--verbose:  shows your sniffed ip address and the outgoing http get url.

If that appears to work for you then put the command into your /etc/cron.hourly directory or into your crontab (or set it up as a job to run when the teredo interface appears)

sample /etc/cron.hourly/ddns file:

```java -jar /usr/sbin/FreeDns-assembly-1.01.jar --hashCode saudhyuiew64784fYTU5uiyuo878ygIUT87tGygFYRTGh=```

sample /etc/miredo/client-hook file

<pre># various stuff at the beginning unchanged...

# run our ddns job when the interface comes up....
# hopefully we have an ipv6 address now...

sh /etc/cron.hourly/ddns

exit 0
</pre>

Edit: you can edit your /etc/miredo/client-hook and

Note:  I'm using paulp/optional to parse the arguments.  Optional is out of date for current versions of scala and incorrectly reports the syntax as `FreeDns <hashCode>` when in fact it only accepts `FreeDns --hashCode hashcode`

##Licence

The Apache Licence 2.0.  Or if that's not permissive enough for you ask for it to be released under another licence.

repository: marklister/teredo-ddns-client

repo_name: marklister/teredo-ddns-client


text:
iTunesSearch [![Build status](https://ci.appveyor.com/api/projects/status/qoe200t6mxxwieic?svg=true)](https://ci.appveyor.com/project/danesparza/itunessearch) [![NuGet](https://img.shields.io/nuget/v/iTunesSearch.svg)](https://www.nuget.org/packages/iTunesSearch/)
============

A .NET wrapper to the iTunes search API

### Quick Start

Install the [NuGet package](https://www.nuget.org/packages/iTunesSearch/) from the package manager console:

```powershell
Install-Package iTunesSearch
```

### Examples

##### Get TV episodes for a show name:
```csharp
//  Arrange
iTunesSearchManager search = new iTunesSearchManager();
string showName = "Modern Family";

//  Act
var items = search.GetTVEpisodesForShow(showName, 200).Result;

//  Assert
Assert.IsTrue(items.Episodes.Any());
```

##### Group episodes for a season:
```csharp
//  Arrange
iTunesSearchManager search = new iTunesSearchManager();
string showName = "Modern Family";

//  Act
var items = search.GetTVEpisodesForShow(showName, 200).Result;
var seasons = from episode in items.Episodes
              orderby episode.Number
                 group episode by episode.SeasonNumber into seasonGroup
                 orderby seasonGroup.Key
                 select seasonGroup;

//  Assert
foreach(var seasonGroup in seasons)
{
    Debug.WriteLine("Season number: {0}", seasonGroup.Key);

    foreach(TVEpisode episode in seasonGroup)
    {
        Debug.WriteLine("Ep {0}: {1}", episode.Number, episode.Name);
    }
}
```

##### Get TV seasons for a show:
```csharp
 //  Arrange
iTunesSearchManager search = new iTunesSearchManager();
string showName = "Modern Family";

//  Act
var items = search.GetTVSeasonsForShow(showName).Result;

//  Assert
Assert.IsTrue(items.Seasons.Any());
```

##### Get TV seasons for a given show name and country code:
```csharp
 //  Arrange
iTunesSearchManager search = new iTunesSearchManager();
string showName = "King of the Hill";
string countryCode = "AU"; /* Australia */

//  Act
var items = search.GetTVSeasonsForShow(showName, 20, countryCode).Result;

//  Assert
Assert.IsTrue(items.Seasons.Any());
```

##### Get podcasts for a given name:
```csharp
//  Arrange
iTunesSearchManager search = new iTunesSearchManager();
string showName = "Radiolab";

//  Act
var items = search.GetPodcasts(showName, 200).Result;

//  Assert
Assert.IsTrue(items.Podcasts.Any());
```

repository: danesparza/iTunesSearch

gha_language: C#

repo_name: danesparza/iTunesSearch


text:
---
uuid: 2598c80e-f914-483c-98b4-9c8b6d6df6d3
layout: speaking
title: "Cracking JWT tokens: a tale of magic, Node.js and parallel computing"
slug: "cracking-jwt-tokens-codemotion-milan"
date: 2017-11-10T00:00:00.000Z
author: Luciano Mammino
author_slug: luciano-mammino
header_img: null
status: published
language: en_US
meta_title: null
meta_description: null
event_name: Codemotion Milan
event_link: "https://milan2017.codemotionworld.com/conference/"
event_location: "Base - Via Bergognone 34, Milan, Italy"
event_location_gps: "45.451784,9.16234099999997"
event_city: "Milan"
event_days: "November 8-11 2017"
is_workshop: false
slides_link: "http://loige.link/cracking-jwt-codemotion"
video_link: "https://www.youtube.com/watch?v=_wXQW-dIyL8"
with: []
---

Learn how you can use some JavaScript/Node.js black magic to crack JWT tokens and impersonate other users or escalate privileges.

Just add a pinch of ZeroMQ, a dose of parallel computing, a 4 leaf clover, mix everything applying some brute force and you'll get a powerful JWT cracking potion!


text:
###Installation of a Minecraft Server on Ubuntu

### Ubuntu Server
This will be installed on sootsplash.csci2461.com, a server hosted by Digital Ocean.

###Login to your server

 Via using ssh: ssh<EMAIL_ADDRESS>
### Download Java
Minecraft requires Java to run. We will download the latest Oracle Java.
We will change to the /opt directory, use wget to download and accept Oracle agreements and then extract contents to the opt folder. The following command will help us;
- `cd /opt`
- `wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u161-b12/2f38c3b165be4555a1fa6e98c45e0808/jdk-8u161-linux-x64.tar.gz`
- `tar -zxvf jdk-8u161-linux-x64.tar.gz`
### Configuration of Java
We will configure the Java environment to permit our our system access the java binary and compiler necessary in building our minecraft server.
We will use the following commands;
- `sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_161/bin/java 1`
- `sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_161/bin/javac 1`

We will then set this java version as the default versions. Select the right version option.
- `sudo update-alternatives --config java`
- `sudo update-alternatives --config javac`

We will then check our java version
- `java -version`
- `javac -version`

### Setting Up Minecraft environment

Lets update and upgrade our system
- `sudo apt-get update && sudo apt-get -y upgrade`
Install git
- `sudo apt-get install git`

Lets install screen to assist us run the minecraft server console while logged out of pi.
- `sudo apt-get install screen`

### Installing Minecraft

We will install the [Spigot Minecraft Server build](https://www.spigotmc.org).
Lets create a folder

`cd /opt`

`sudo mkdir minecraft`

`cd minecraft`

We will download the buildtools
- `wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar`

Then build our server. This compilation process takes close to 45 minutes on this server.
- `sudo java -jar BuildTools.jar --rev 1.12.2`

### Configuring the Spigot server
Once the compilation is completewe should ensure we are in the minecraft directory and run the server for the first time.
- `sudo java -Xms1024M -Xmx2048M -jar /opt/minecraft/spigot-1.12.2.jar nogui`

Xms1024M and Xms2048M are parameters telling java to start with 1GB of ram as a minimum for the spigot jar file and grow to 2GB maximum.
We will then accept the EULA agreement after the server stops running.
- `sudo nano eula.txt`

Inside the eula.txt, change the line _eula=false_ to `_eula=true_`

Let us now change the server properties
- `sudo nano server.properties`

The following properties are recommended for a start, but you can change server.properties following its Wiki.

- Minecraft server properties
- spawn-protection=16
- generator-settings=
- force-gamemode=true
- allow-nether=true
- gamemode=0
- enable-query=false
- player-idle-timeout=0
- difficulty=2
- spawn-monsters=true
- op-permission-level=4
- announce-player-achievements=true
- pvp=true
- snooper-enabled=true
- level-type=DEFAULT
- hardcore=false
- enable-command-block=false
- max-players=10
- network-compression-threshold=256
- resource-pack-sha1=
- max-world-size=29999984
- server-port=25565
- debug=false
- server-ip=
- spawn-npcs=true
- allow-flight=false
- level-name=world
- view-distance=10
- resource-pack=
- spawn-animals=true
- white-list=false
- generate-structures=true
- online-mode=true
- max-build-height=256
- level-seed=
- prevent-proxy-connections=false
- use-native-transport=true
- motd=My Minecraft Server
- enable-rcon=false

Now lets rerun our server
`sudo java -Xms1024M -Xmx2048M -jar /opt/minecraft/spigot-1.12.2.jar nogui`

### Script to Run server
Lets make the minecraft server to run from a script.
 - `cd /opt && sudo mkdir scripts`
   - `cd scripts`
   - `nano minecraft.sh`
Inside our minecraft.sh, we will add the following scripts.

`#!/bin/bash`

   ` cd /opt/minecraft/ && sudo java -Xms1024M -Xmx2048M -jar /opt/minecraft/spigot-1.12.2.jar nogui`

We will save the file and make it executable
- `chmod u+x minecraft.sh`
Lets start the server
- `screen`   <---hit enter at the message that appears.
- `sudo /opt/scripts/minecraft.sh`

To exit the screen session hit _CTRL AD_

### Configure Minecraft to start on bootup
We will edit the /etc/rc.local file
- `sudo nano /etc/rc.local`

Insert the following before the last line _exit 0_
- `screen -dm -S minecraft /opt/scripts/minecraft.sh`

### After bootup the following can be run
- `sudo screen -r minecraft`

### Creating Backup
This will permit restoring the minecraft server
- `cd /opt`
- `tar -zcvf minecraft_backup.tar.gz minecraft`

We can now copy this zip file to a safe location or server. Restoration should be done regularly considering we have to entertain others and their achievements. This is the area which needs technical support in great details.

repository: grenack/Code-Blockers

repo_name: grenack/Code-Blockers


text:
# MMPhotoLibrary

[![CI Status](http://img.shields.io/travis/Moosa Mir/MMPhotoLibrary.svg?style=flat)](https://travis-ci.org/Moosa Mir/MMPhotoLibrary)
[![Version](https://img.shields.io/cocoapods/v/MMPhotoLibrary.svg?style=flat)](http://cocoapods.org/pods/MMPhotoLibrary)
[![License](https://img.shields.io/cocoapods/l/MMPhotoLibrary.svg?style=flat)](http://cocoapods.org/pods/MMPhotoLibrary)
[![Platform](https://img.shields.io/cocoapods/p/MMPhotoLibrary.svg?style=flat)](http://cocoapods.org/pods/MMPhotoLibrary)

## Example

To run the example project, clone the repo, and run `pod install` from the Example directory first.

## Requirements

## Installation

MMPhotoLibrary is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:

```ruby
pod 'MMPhotoLibrary'
```

## Author

Moosa Mir<EMAIL_ADDRESS>
## License

MMPhotoLibrary is available under the MIT license. See the LICENSE file for more info.


text:
# Change Log

All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.

# [0.5.0](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.7...v0.5.0) (2018-02-21)

### Bug Fixes

* zipkin needs to be at the beginning ([dd712bd](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/dd712bd))

### Features

* include appmetrics-zipkin ([8f6b601](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/8f6b601))

## [0.4.7](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.6...v0.4.7) (2018-02-01)

### Bug Fixes

* **development:** added ENV NODE_HEAPDUMP_OPTIONS nosignal to handle signal conflict ([653e6d4](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/653e6d4))

## [0.4.6](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.5...v0.4.6) (2018-01-29)

### Bug Fixes

* **shell:** make file executable and fix syntax errors ([2ed5351](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/2ed5351))

## [0.4.5](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.4...v0.4.5) (2018-01-25)

### Bug Fixes

* **shell:** copy run-dev from template to destionation path ([6f80d18](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/6f80d18))

## [0.4.4](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.3...v0.4.4) (2018-01-24)

### Bug Fixes

* **scripts:** added comments to scripts and added run-debug to support --inspect and --debug ([9676b8d](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/9676b8d))

## [0.4.3](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.2...v0.4.3) (2018-01-12)

## [0.4.2](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.1...v0.4.2) (2018-01-12)

## [0.4.1](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.4.0...v0.4.1) (2018-01-11)

### Bug Fixes

* create node_modules_linux directory to avoid container permission failure under idt build ([3253e07](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/3253e07))

# [0.4.0](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.3.1...v0.4.0) (2017-12-08)

### Features

* **node:** add updated success page for running app and add routes for 404 and 500 errors ([1fc8eb8](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/1fc8eb8))

## [0.3.1](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.3.0...v0.3.1) (2017-12-07)

# [0.3.0](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.2.1...v0.3.0) (2017-11-29)

### Features

* added option to use docker-compose if appType is MEAN ([9c98ea5](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/9c98ea5))

## [0.2.2](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.2.1...v0.2.2) (2017-11-29)

### Bug Fixes

* move nodemon to devDependency ([54b7528](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/54b7528))

## [0.2.1](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.2.0...v0.2.1) (2017-11-28)

### Bug Fixes

* move run-dev to bin folder ([b9b1d85](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/b9b1d85))

# [0.2.0](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.1.0...v0.2.0) (2017-11-28)

### Features

* add run-dev script ([83b6df4](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/83b6df4))

# [0.1.0](https://github.com/ibm-developer/generator-ibm-core-node-express/compare/v0.0.75...v0.1.0) (2017-11-16)

### Bug Fixes

* **travis:** remove autogenerated pull request into master ([54bc94d](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/54bc94d))
* **travis:** use committer configuration when committing new breanch ([938fcc4](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/938fcc4))

### Features

* added standard version ([bf76819](https://github.com/ibm-developer/generator-ibm-core-node-express/commit/bf76819))


text:
## 📣  Push Notifications
Exponea allows you to easily create complex scenarios which you can use to send push notifications directly to your customers. The following section explains how to enable push notifications.

## Quick start

For push notifications to work, you'll need to setup a few things:
- create an Apple Push Notification service(APNs) key
- integrate push notifications into your application
- set the APNs key in the Exponea web app

We've created a [Quick start guide](./Guide/PUSH_QUICKSTART.md) that will guide you through these steps.

## Deprecating Automatic push notifications
Previous versions of the SDK used method swizzling to automatically register for push notifications. In our experience swizzling causes more problems than it solves, so we chose to move away from it. [Quick start guide](./Guide/PUSH_QUICKSTART.md) contains list of delegates your application needs to implement in order to properly process push notifications.

## Handling push notification opening
Exponea SDK allows you to set a delegate that will be called when push notification is opened, or when silent push notification is received. Delegate will be called with information about action that was selected on the push notification and payload setup in the Exponea web app.
```swift
import ExponeaSDK
import UserNotifications

@UIApplicationMain
class AppDelegate: ExponeaAppDelegate {

    var window: UIWindow?

    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

extension AppDelegate: PushNotificationManagerDelegate {
    func pushNotificationOpened(
        with action: ExponeaNotificationAction,
        value: String?,
        extraData: [AnyHashable : Any]?
    ) {
        // app open, browser, deeplink or none(default)
        print("push action: \(action)")
        // deeplink url, nil for open app action
        print("value for action: \(value)")
        // data payload you specified in Exponea web app
        print("extra payload specified: \(extraData)")
    }

    // this function is optional
    func silentPushNotificationReceived(extraData: [AnyHashable: Any]?) {
        // data payload you specified in Exponea web app
        print("extra payload specified: \(extraData)")
    }
}
```

## Tracking delivered notifications
Notification service extension is required for tracking push notification delivery. This extension is part of Rich notifications setup described in [Quick start guide](./Guide/PUSH_QUICKSTART.md).

Calling of ExponeaNotificationService.process is allowed before SDK initialization in case that previous initialization process was done. In such a case, ExponeaNotificationService.process will track events with configuration of last initialization. Please consider to do SDK initialization in application(_:didFinishLaunchingWithOptions:) in case of update of your application to apply a fresh new configuration.

## Silent push notifications
Exponea SDK supports both regular "alert" push notifications and silent push notifications(Background Updates). To receive a notification, you need to track your push token to Exponea backend. When push notification tracking is enabled and properly implemented, this will happen automatically. By default, the token is only tracked when the app is authorized to receive *alert* push notifications. You can change this by setting configuration variable `requirePushAuthorization = false`. With this setting, the SDK will register for push notifications and track the push token at application start. Push notification authorization status is tracked as customer property `apple_push_notification_authorized`.

``` swift
    Exponea.shared.configure(
        Exponea.ProjectSettings(
            projectToken: "YOUR-PROJECT-TOKEN",
            authorization: .token("YOUR-AUTHORIZATION-TOKEN"),
            baseUrl: "YOUR-BASE-URL"
        ),
        pushNotificationTracking: .enabled(
            appGroup: "YOUR-APP-GROUP",
            requirePushAuthorized: false
        )
    )
```

To respond to silent push notification, set the `Exponea.shared.pushNotificationsDelegate`. Details are described in `Handling push notification opening` section of this guide.

> Silent push notifications require `Background Modes` `Remote notifications` capability.

> Official Apple documentation states that you should not try to send more than two or three notifications per hour. https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app

## Multiple push notification sources
The SDK only handles push notifications coming from Exponea backend. If you use other servers than Exponea to send push notifications, you'll need to implement some of the logic yourself.

### Conditional processing
[Quick start guide](./Guide/PUSH_QUICKSTART.md) describes delegates/extensions required for Exponea push notification handling to work. You can use method `Exponea.isExponeaNotification(userInfo:)` in the delegate/extension implementations to check if the notification being processed is coming from Exponea servers and either call Exponea method or process the notification using implementation for other push notification source.

### Manual tracking
You can completely disable notification tracking and use methods `Exponea.shared.trackPushToken` and `Exponea.shared.trackPushOpened` to track push notification events. `trackPushOpened` expects the notification has Exponea format. You can always track `campaign` event manually with any payload you need.

> The behaviour of `trackClickedPush` may be affected by the tracking consent feature, which in enabled mode considers the requirement of explicit consent for tracking. Read more in [tracking consent documentation](./TRACKING_CONSENT.md).

## Custom Notification Actions in iOS 11 and lower
To support the action buttons that can be configured in the Exponea backend on iOS 11 and lower you will need to implement custom notification categories that are used to properly hook up the button actions and titles. ExponeaSDK provides a convenient factory method to simplify creation of such category.

> **⚠ Bear in mind that the category identifier you specify here must be identical to the one you specify in Exponea backend.**

```swift
// Set legacy exponea categories
let category1 = UNNotificationCategory(
    identifier: "EXAMPLE_LEGACY_CATEGORY_1",
    actions: [
        ExponeaNotificationAction.createNotificationAction(
            type: .openApp,
            title: "Hardcoded open app",
            index: 0
        ),
        ExponeaNotificationAction.createNotificationAction(
            type: .deeplink,
            title: "Hardcoded deeplink",
            index: 1
        )
    ],
    intentIdentifiers: [],
    options: []
)

UNUserNotificationCenter.current().setNotificationCategories([category1])
```

### Push notification token after anonymization

There is principal usage of `Exponea.shared.anonymize()` as a sign-out feature in some applications. Keep in mind that invoking of `anonymize` will remove also a Push notification token from storage. To load a current token, your application should retrieve a valid token manually before using any Push notification feature. So it may be called right after `anonymize` or before/after `identifyCustomer`, it depends on your Push notifications usage.

> Guide how to retrieve a valid Push notification token is written for [PUSH_QUICKSTART](Guide/PUSH_QUICKSTART.md).

repository: exponea/exponea-ios-sdk

branch_name: refs/heads/develop

gha_language: Swift

repo_name: exponea/exponea-ios-sdk


text:
# realsense_explorer_bot
- Autonomous environment exploration  mobile robot which has 3-DOF manipulator with Intel Realsense D435i mounted on a Tracked differential drive mobile  robot fully controlled with ROS in **Jetson Nano** board.
- The robot is capable of mapping spaces, exploration through RRT, SLAM and 3D pose estimation/localization of objects around it.
- Robot produces odometry through EKF Filter (ekf_robot_localization) which fuses the IMU (MPU9250) data and the wheel encoder odometry data.
- The custom built Robot uses ROS Realsense D435i RGB-D sensor with dexterity for perception and with Rviz visulaization of Robot State, Point Cloud and the generated map.
- The Robot uses Realtime Appearance Based Mapping (RTAB-MAP ROS package) for SLAM appliacation.
- The Robot uses Jetson Nano as its main computer interfaced with the robot hardware (Arduino,Motor-Conttrollers, IMU - MPU9250) through custom Serial interface (not ROS Serrial).

 ## Robot Representation
 ```
 roslaunch realsense_explorer_description robot_bringup.launch
 ```
![realsense_explorer](https://user-images.githubusercontent.com/24454678/141041838-f460d1d7-6816-4f1c-8b05-c221afe544ad.png)

 ## Diff Drive Robot Control Node Graph with EKF
 ```
 roslaunch realsense_explorer_control robot_control_ekf.launch
 ```
![robot_graph](https://user-images.githubusercontent.com/24454678/141041852-2e2d380f-32ec-4bdf-97c0-30d47c196c60.png)

### [Updates Coming Soon on Navigation and Mapping] ###