text:
> **Call for Help:** This article is incomplete. Want to help us improve it? [Propose edits](https://www.github.com/Stencyl/stencylpedia/edit/master/chapter-b/android-debugging.md) to this article.

## Contents

* Introduction
* Logs
* Game Won't Start
* Understanding Crashes
* Debugging Tips

## Introduction

It's rare for a game to run perfectly the first time you make it. Bugs and crashes are an inevitable part of the game development lifecycle. This guide exposes you to the various tools avilable for debugging your games.

## Logs

Your game's logs record much of what goes on while your game is running as well as any additional information you decide to add in.

#### Viewing the Logs
Turn on the Log Viewer by selecting **View > Log Viewer** from the main menu.

#### Adding Info to the Logs
To add information to the logs, use the **print block**, located under **Flow > Debug** in the palette.

![Print Block](https://static.stencyl.com/pedia2/blocks/flow/flow_debug/Print.png)

This can be particularly useful when something goes wrong and you want to know the value of an attribute, for example.

## Game Won't Start

Before your game runs, it has to compile. Compiling means translating all the blocks and code for your game into a form that the computer or device understands.

Errors in your behaviors are generally caught by Stencyl, with the offending behaviors automatically opened up. Most of the time, you're able to figure out what's wrong. That's not what we're focusing on here.

#### Why it happens

What we're focusing on are the cases where your game gets stuck in the "Compiling..." state seemingly forever. The first thing to realize is that your game isn't stuck. It hit an error that we couldn't detect for reasons like these:

* Errors with certificates.
* Errors with signing an app.
* Internal Haxe errors.
* Couldn't establish connection with device.

#### Best Practices

Although we try to scan and identify common errors, some inevitably slip through the cracks. Here's what you can do to stay informed during the process, so you aren't left waiting forever.

1. **Turn on the Log Viewer** before you run a game. (View > Log Viewer)

2. Run your game.

3. The Log Viewer **should continually spew out new lines**. It may slow down at times, but progress should be steady.

4. If it stops, scan the last page or so worth of lines for errors.

5. If you locate an error, try to **understand what it means** and search on Google. This is most useful for certificate errors where the solutions to such issues are well documented on Q&A sites such as StackOverflow.

6. If you can't figure out what's going on, [export your logs](https://www.stencyl.com/help/view/generating-logs/) and ask a question on the forums.

## Understanding Crashes

Crashes are errors in your game's logic or the Stencyl engine that cause the game to suddenly quit. Many types of errors can cause crashes. The most common ones include the following:

* Referring to something that no longer exists, such as a dead actor.
* Doing something illegal, such as dividing by 0 or attempting to grab an element from a list that does not exist.
* Performing an operation on something that doesn't support that operation.

The **Android Device Monitor** gives you visibility into the raw Android system logs. They can be daunting for an average user to go through, which is why they're filtered out by default. However, when your game crashes, they can be your main source of information.

> **Note:** This section tells you how to use the Android Device Monitor. The Debugging Tips section helps you reach the root cause of the crash.

#### How to Launch the Android Device Monitor
Select **Debug > Android > Launch Device Monitor** from the main menu.

#### How to Use It
The Android Device Monitor consists of 3 sections. The left section lets you pick what device to inspect. The center section provide advanced information geared towards programmers. The bottom section provides the raw logs. We'll mostly focus on the bottom section.

Android logs can appear complex and overwhelming at first. Here are a couple things to look out for.

* Anything starting with **I/trace** is a Stencyl-related log.
* Look out for any lines mentioning your **App ID** (the thing that usually looks like com.yoursite.gamename). These are relevant to your game.
* Crashes usually show up towards the end and are accompanied by the term **tombstone**, which refers to a process that unexpectedly quit (crashed, ran out of memory, etc.).

## Debugging Tips

Putting the elements discussed previously together, here's what you can do to debug your game when it crashes.

#### Step 1: Make the crash happen again ("repro," short for "reproduce," the problem)
This will cue you in on what actually caused the problem.

#### Step 2: Examine the game logs and Android Monitor logs for cues.
See if you can recognize your behavior names, which can sometimes be printed out in a stack trace (a "blame" list that traces all the steps leading to an error. Is it something you can trace back to your game and fix?

#### Step 3: Tinker with your game to isolate the issue
If you can't recognize the faulty behavior, disable suspicious behaviors, based on what you know causes the crash, until the game no longer crashes.

Once you've discovered the offending behavior(s), try to narrow it down to particular blocks, if possible. If you are unable to fix the issue, or if you think it's a problem on our end, report it on the forums and include the following info:

1. Android Monitor logs.
2. Stencyl logs.
3. Exact steps taken to make your game produce the crash. If the crash happens randomly, let us know.
4. If possible, generate a simple 1-scene test game that demonstrates the issue. This forces you to understand the issue, making a resolution a lot quicker and easier for everyone.

repository: Stencyl/stencylpedia

gha_language: Batchfile

repo_name: Stencyl/stencylpedia


text:
# tagged-pets-bot

## Setup
This is a request library based python application which calls Hi5/Tagged pets APIs. Useable with two cookies for each user account in tagged or hi5. Currently the URL is assigned the Hi5 base link.

In order to change the URL:

```
# bot.py
url = "http://www.hi5.com/api/?application_id=user&format=JSON"
```

 needs to be changed to

```
# bot.py
url = "http://www.tagged.com/api/?application_id=user&format=JSON"
```

---

Cookies are located in config.py. These must be extracted from your favorite browser. Simply copy pasting them will work.

```
# config.py
COOKIE_BHA = 'This should be the cookies for one user'
COOKIE_NIKKI = 'This should be the cookies for other user'
```

---
## Usage

1. The user you think of buying has an id which can be found moving to his/her pets profile. At the end of the URL a number like `6119757178` can be seen. This is the pet ID. Simply replacing this USER_ID with the ID found in above step is sufficient for buying the user.

```
# bot.py
def buy_two_way():
    x = 0
    print("Your account")
    x += payload_generator(COOKIE_BHA, USER_ID)
    print("Your fake account")
    x += payload_generator(COOKIE_NIKKI, USER_ID)
    return x
```
2. Now run the application with `python3 bot.py`. Before that you may need to install required libraries `json`, `requests`.

repository: pulbhaba/tagged-pets-bot

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: pulbhaba/tagged-pets-bot


text:
# Passport-Coursera-OAuth

[Passport](http://passportjs.org/) strategies for authenticating with [Coursera](http://www.coursera.org/)
using OAuth 2.0.

Coursera APIs are quite basic. The user profile information only includes a id (user id), timezone, locale
and privacy.

I personally found the APIs only useful for checking the users enrollments (https://api.coursera.org/api/users/v1/me/enrollments).

This module lets you authenticate using Coursera in your Node.js applications.
By plugging into Passport, Coursera authentication can be easily and
unobtrusively integrated into any application or framework that supports
[Connect](http://www.senchalabs.org/connect/)-style middleware, including
[Express](http://expressjs.com/).

The client id and client secret needed to authenticate with Coursera can be set up from the developer's console [Coursera Developer's Console](https://accounts.coursera.org/console/).

## Install

    $ npm install passport-coursera-oauth

#### Authenticate Requests

Use `passport.authenticate()`, specifying the `'coursera'` strategy, to
authenticate requests.

Authentication with Coursera requires an extra scope parameter.  For information, go [here](https://tech.coursera.org/app-platform/).

For example, as route middleware in an [Express](http://expressjs.com/)
application:

```Javascript
app.get('/auth/coursera',
  passport.authenticate('coursera', { scope: ['view_profile'] }));

app.get('/auth/coursera/callback',
  passport.authenticate('coursera', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });
```

## Usage of OAuth 2.0

#### Configure Strategy

The Coursera OAuth 2.0 authentication strategy authenticates users using a Coursera
account and OAuth 2.0 tokens.  The strategy requires a `verify` callback, which
accepts these credentials and calls `done` providing a user, as well as
`options` specifying a client ID, client secret, and callback URL.

```Javascript
var CourseraStrategy = require('passport-coursera-oauth').OAuth2Strategy;

passport.use(new CourseraStrategy({
    clientID: COURSERA_CLIENT_ID,
    clientSecret: COURSERA_CLIENT_SECRET,
    callbackURL: "http://localhost:3000/auth/coursera/callback",
    profileFields: [ 'timezone', 'locale', 'privacy']
  },
  function(accessToken, profile, done) {
    User.findOrCreate({ courseraId: profile.id }, function (err, user) {
      return done(err, user);
    });
  }
));
```

#### Authenticate Requests

Use `passport.authenticate()`, specifying the `'coursera'` strategy, to
authenticate requests.
Authentication with Coursera requires an extra scope parameter.  For information, go [here](https://tech.coursera.org/app-platform/).

For example, as route middleware in an [Express](http://expressjs.com/)
application:

```Javascript
app.get('/auth/coursera',
  passport.authenticate('coursera', { scope: ['view_profile'] }));

app.get('/auth/coursera/callback',
  passport.authenticate('coursera', { failureRedirect: '/login' }),
  function(req, res) {
    // Successful authentication, redirect home.
    res.redirect('/');
  });
```

## Examples

For a complete, working example, refer to the [OAuth 2.0 example](https://github.com/flipflopapp/passport-coursera-oauth/tree/master/examples/oauth2).

## Tests

    $ npm install --dev
    $ make test

## Credits

  - [Naval Saini](http://github.com/flipflopapp)

## License

[The MIT License](http://opensource.org/licenses/MIT)

Copyright (c) 2015-2016 Naval Saini <[http://flipflopapp.com/](http://flipflopapp.com/)>

license: MIT

repository: martoncsikos/passport-coursera-oauth

repo_name: martoncsikos/passport-coursera-oauth


text:
# WSI online analysis framework
## What is it
* WSI-online-analysis-framework is a framework to build a svs file online viewing and analyzing server.
* If you want the model or svs file for testing, you can download from
[google drive](https://drive.google.com/open?id=1Cip_Al14PLIOyVS9jaG5SQ-RBlMEA3Iq).
 or you can send an email to<EMAIL_ADDRESS>to ask for help.
* The window size of the model input is 2000*2000. If you want to train the model by yourself, please pay attention to it.

## Performance
### Slide Table page
![slide_table_page](ScreenCut/slide_table.png)
### Mission Table page
![slide_table_page](ScreenCut/mission_table.png)
### Slide page without mask
![slide_table_page](ScreenCut/slide_without_mask.png)
### Slide page with mask
![slide_table_page](ScreenCut/slide_with_mask.png)

## How to install it
### Install required software and libraries

* software requirement
    * OpenSlide
    * MySQL(or other database software)
    * Git

* Python Library requirement
    * openslide-python==1.1.1
    * opencv-python==<IP_ADDRESS>
    * Pillow==6.2.1
    * torch==1.3.1
    * torchvision==0.4.2
    * numpy==1.17.4
    * mysql-connector==2.2.9
    * Flask==1.1.1
* You can install python library with this command:
```
     pip install -r requirements.txt
```

### Clone this repository with git and get in the folder
```
    git clone https://gitlab.com/6zhc/wsi-online-analysis-framework.git
    cd wsi-online-analysis-framework
```

### Creat database or reset the database
* Edit config.ini file to set the config of database.

```
    [db]
    host = localhost    # the host of the database
    user = root         # the user account of the database
    passwd = 123456     # the password of the database
    database = test     # the name of database
```

* Run the create_data_base.py.
```
    python create_data_base.py
```

### Import the trained model
* Put the trained model (pth file) into the models folder
```
    cp your_model_path models
```

### Run the framework
* To set the configure for the Flask, you can set the environment variable.(Optional)
    * eg. ```export FLASK_ENV=development```
    * For more information you can visit Flask official document
* Run command ```python -u -m flask run``` or ```flask run``` to start a server.
* To change the host, ip or other thing. You can add options after the command. (Optional)
    * eg. ```python -u -m flask run --host=<IP_ADDRESS> --ip=8080```
    * For more information you can run command ```python -u -m flask --help```
            Usage: python -m flask run [OPTIONS]

              Run a local development server.

              This server is for development purposes only. It does not provide the
              stability, security, or performance of production WSGI servers.

              The reloader and debugger are enabled by default if FLASK_ENV=development
              or FLASK_DEBUG=1.

            Options:
              -h, --host TEXT                 The interface to bind to.
              -p, --port INTEGER              The port to bind to.
              --cert PATH                     Specify a certificate file to use HTTPS.
              --key FILE                      The key file to use when specifying a
                                              certificate.
              --reload / --no-reload          Enable or disable the reloader. By default
                                              the reloader is active if debug is enabled.
              --debugger / --no-debugger      Enable or disable the debugger. By default
                                              the debugger is active if debug is enabled.
              --eager-loading / --lazy-loader
                                              Enable or disable eager loading. By default
                                              eager loading is enabled if the reloader is
                                              disabled.
              --with-threads / --without-threads
                                              Enable or disable multithreading.
              --extra-files PATH              Extra files that trigger a reload on change.
                                              Multiple paths are separated by ':'.
              --help                          Show this message and exit.

## How to use it
### Upload manifest file / SVS file
* Turn to slide_table page
* Input the UUID (if you want to assign the svs file with specific UUID) (Optional)
* Choose the manifest file / svs file.
* Click 提交(submit) button.
* Wait for a few seconds(or minutes depending on internet speed(svs file) or file size(manifest file)).

### Predict the SVS file.
* In slide_table page:
    * Choose a model in the "Predict Mask" column
* In mission_table page:
    * Choose the slide id and model.
    * Click "predict" button.

### Remove/reload the mask in the slide page.
* Click 'B' on the keyboard.

# Project Layout
- Controller
    - manifest_controller.py
    - mission_controller.py
    - dataset_controller.py
    - dzi_online_controller.py
    - thread_controller.py
    - image_processing.py
- Model
    - create_database.py
    - manifest.py
    - mission.py
- templates (View)
    - slide_table.html
    - mission_table.html
    - slide.html
    - warning.html (Shown after uploading files)
    - dashboard.html (developing)
    - graph.html (developing)
- static
    - js/css files (Not detailed here)
    - icon files (Not detailed here)
    - data (soft link to Data folder)
- Data (Created by app.py or created by yourself)
    - folder named by UUID (Not detailed here)
        - svs file
        - icon.png (used to show in the slide table)
        - smaller_image.png (1/16 times the pixel size of the original picture)
        - background_mask.png (the mask of the background, the same size of smaller_image)
        - mission_{mission_id}_{model name}.png (the result of mission, the same size of smaller_image)
- app.py (Main file)
- config.ini (Configure file)
- test.py (for testing use)
- create_database.py (the same as the file in the Model folder)
- README.md

gha_language: Python


text:
GRAIL Readme
================

This is a frozen version of the [ceph-container](https://github.com/ceph/ceph-container) repo hosted at github. It was last sync'd to the commit f4faf64493a66b9d339e781780b9e316a99e9f76.

The repo is for building the Ceph container image that is used to bring up MON, MGR and OSD daemons on Ceph hosts. The Dockerfile has been modified to eliminate Ceph packages related to various filesystem layers like NFS, RBD etc to reduce both the size of the image and dependencies on other external packages.

repository: grailbio-external/ceph-container

repo_name: grailbio-external/ceph-container


text:
# 2021 Southwest University Lanqiao Cup Trainning Course #

## Summary ##

This repository is using for [LanqiaoCup Competition](https://dasai.lanqiao.cn) on 18th, April, 2021

## How to start ##

We provide `GitHub Pages` - [2021-LQC-Trainning](https://swu-acm-lab.github.io/2021-LQC-Trainning) that you can fast start your trainning.

If you cannot reach the `GitHub Pages`, check your VPN host and try again.

**Because of the lack of `LaTeX` support(it depends on github), our docs and wiki cannot rendering mathematical symbols. If you want to see it, please download or clone the repository, then open in you local markdown editor.**

## If you have a question ##

You can ask your question on issues page, describe your situation and then we will reply your question up to three days.

**Before you ask a question, please ensure that you have searched it on searching engine and cannot resolve your problem.**

## License ##

This repository is licensed by `BSD-3-Clause License`.

## Contributions ##

> [JecosineMoc](https://github.com/Jecosine) - Support for GitHub Pages.
>
> [sunist-c](https://github.com/sunist-c) - Support for GitHub repository management, provide documents/wiki and problem answer.


text:
# Dart Image Library
[![Dart CI](https://github.com/brendan-duncan/image/actions/workflows/build.yaml/badge.svg?branch=4.0)](https://github.com/brendan-duncan/image/actions/workflows/build.yaml)
[![pub package](https://img.shields.io/pub/v/image.svg)](https://pub.dev/packages/image)

## Overview

The Dart Image Library provides the ability to load, save, and
[manipulate](https://github.com/brendan-duncan/image/blob/main/doc/filters.md) images
in a variety of image file [formats](https://github.com/brendan-duncan/image/blob/main/doc/formats.md).

The library can be used with both dart:io and dart:html, for command-line, Flutter, and
web applications.

NOTE: 4.0 is a major revision from the previous version of the library.

## [Documentation](https://github.com/brendan-duncan/image/blob/main/doc/README.md)

### [Supported Image Formats](https://github.com/brendan-duncan/image/blob/main/doc/formats.md)

**Read/Write**

- JPG
- PNG / Animated APNG
- GIF / Animated GIF
- BMP
- TIFF
- TGA
- PVR
- ICO

**Read Only**

- WebP / Animated WebP
- PSD
- EXR

**Write Only**

- CUR

## Examples

Create an image, set pixel values, save it to a PNG.
```dart
import 'dart:io';
import 'package:image/image.dart' as img;
void main() async {
  // Create a 256x256 8-bit (default) rgb (default) image.
  final image = img.Image(width: 256, height: 256);
  // Iterate over its pixels
  for (var pixel in image) {
    // Set the pixels red value to its x position value, creating a gradient.
    pixel..r = pixel.x
    // Set the pixels green value to its y position value.
    ..g = pixel.y;
  }
  // Encode the resulting image to the PNG image format.
  final png = img.encodePng(image);
  // Write the PNG formatted data to a file.
  await File('image.png').writeAsBytes(png);
}
```

To asynchronously load an image file, resize it, and save it as a thumbnail:
```dart
import 'package:image/image.dart' as img;

void main(List<String> args) async {
  final path = args.isNotEmpty ? args[0] : 'test.png';
  final cmd = img.Command()
    // Decode the image file at the given path
    ..decodeImageFile(path)
    // Resize the image to a width of 64 pixels and a height that maintains the aspect ratio of the original.
    ..copyResize(width: 64)
    // Write the image to a PNG file (determined by the suffix of the file path).
    ..writeToFile('thumbnail.png');
  // On platforms that support Isolates, execute the image commands asynchronously on an isolate thread.
  // Otherwise, the commands will be executed synchronously.
  await cmd.executeThread();
}
```

repository: brendan-duncan/image

branch_name: refs/heads/main

gha_language: Dart

gha_license_id: MIT

repo_name: brendan-duncan/image


text:
# Table of Contents

* [Introduction](#introduction)
* [Getting Overthere](#getting_overthere)
	* [Depending on Overthere](#depending_on_overthere)
	* [Building Overthere](#building_overthere)
	* [Running the Examples](#running_the_examples)
* [Programming Overthere](#programming_overthere)
* [Configuring Overthere](#configuring_overthere)
	* [Protocols](#protocols)
	* [Connection options](#common_connection_options)
	* [Local](#local)
	* [SSH](#ssh)
	* [CIFS](#cifs) (includes Telnet and WinRM)
	* [Tunnelling](#tunnelling)
* [Release History](#release_history)

# Introduction

Overthere is a Java library to manipulate files and execute processes on remote hosts, i.e. do stuff "over there". It was originally developed for and is still used in the [XebiaLabs](http://xebialabs.com/) deployment automation product Deployit as a way to perform tasks on remote hosts, e.g. copy configuration files, install EAR files or restart web servers. Another way of looking at it is to say that Overthere gives you `java.io.File` and `java.lang.Process` as they should've been: as interfaces, created by a factory and extensible through an SPI mechanism.

Overthere is available under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0).

**P.S.:** Check the [Overthere Ohloh page](http://www.ohloh.net/p/overthere) for some interesting code analysis statistics. If you use Overthere, don't forget to tell Ohloh! And while you're at it, you might want to vote for Overthere on the [Overthere Freecode page](http://freecode.com/projects/overthere) too! ;-)

# Getting Overthere

To get Overthere, you have two options:

1. Add a dependency to Overthere to your project.
2. Build Overthere yourself.

And, if you want, you can also run the Overthere examples used in the Overthere presentation mentioned above.

Binary releases of Overthere are not provided here, but you can download it [straight from the Maven Central repository](http://search.maven.org/#artifactdetails%7Ccom.xebialabs.overthere%7Coverthere%7C2.0.0-beta-1%7Cjar) if you want to.

## Depending on Overthere

1. If your project is built with Maven, add the following dependency to the pom.xml:

		<dependency>
			<groupId>com.xebialabs.overthere</groupId>
			<artifactId>overthere</artifactId>
			<version>2.0.0-beta-1</version>
		</dependency>

2. If your project is built using another build tool that uses the Maven Central repository, translate these dependencies into the format used by your build tool.

## Building Overthere

1. Install [Gradle 1.0-milestone-7](http://www.gradle.org/).
2. Clone the Overthere repository.
3. Run the command `gradle clean build`.

## Running the examples

1. Install [Maven 2.2.1 or up](http://maven.apache.org/).
2. Clone the Overthere repository.
3. Go into the `examples` directory and run the command `mvn eclipse:eclipse`.
4. Import the `examples` project into Eclipse.
5. Change the login details in the example classes (address, username and password) and run them!

# Programming Overthere

To program Overthere, browse the source code, check the examples and browse the Overthere Javadoc.

For a more thorough introduction to Overthere, check the [presentation on Overthere](http://www.slideshare.net/vpartington/presentation-about-overthere-for-jfall-2011) that I gave for J-Fall 2011, a Java conference in the Netherlands (in English).

# Configuring Overthere

The protocols that Overthere uses to connect to remote hosts, such as SSH, CIFS, Telnet and WinRM, are existing protocols for which support is built into many platforms. As such you will not need to install any custom software on the target hosts. Nevertheless in some cases the target platforms have to be configured to correctly work with Overthere. Also, Overthere has a number of configuration features that allow you tweak the way it interfaces with the remote hosts.

## Protocols

Overthere supports a number of protocols to connect to remote hosts:

* [__local__](#local) - a connection to the local host. This is a wrapper around java.io.File and java.lang.Process.
* [__ssh__](#ssh) - a connection using the [SSH protocol](http://en.wikipedia.org/wiki/Secure_Shell), to a Unix host or to a Windows host running either OpenSSH on Cygwin (i.e. COPSSH) or WinSSHD.
* [__cifs__](#cifs) - a connection using the [CIFS protocol](http://en.wikipedia.org/wiki/Server_Message_Block), also known as SMB, for file manipulation and, depending on the settings, using either [Telnet](http://en.wikipedia.org/wiki/Telnet) or [WinRM](http://en.wikipedia.org/wiki/WS-Management) for process execution. This protocol is only supported for Windows hosts.

## Connection options

Apart from selecting a protocol to use, you will also need to supply a number of connection options when creating a connection. Common connection options are:

	os
	The operating system of the remote host, either UNIX or WINDOWS. This property is required for all protocols, except for the local protocol.

	address
	The address of the remote host, either an IP address or a DNS name.

	port
	The port to use when connecting to the remote host. The interpretation and the default value for this connection option depend on the protocol that is used.

	username
	The username to use when connecting to the remote host.

	password
	The password to use.

	tmp
	The temporary directory. For each connection, a connection temporary directory with a name like overthere-20111128T132600-7234435.tmp is created. By default that directory is removed when the connection is closed.

	tmpFileCreationRetries
	The number of times Overthere attempts to create a temporary file with a unique name. The default value is 100.

	tmpDeleteOnDisconnect
	If set to false, the connection temporary directory is not removed when the connection. The default value is true.

	connectionTimeoutMillis
	The number of milliseconds Overthere waits for a connection to a remote host to be established. The default value is 120000, i.e. 2 minutes.

	jumpstation
	The connection options used to connect to an SSH jumpstation (See Tunnelling)

Apart from these common connection options, some protocols define additional protocol-specific connection options. These are documented below, with the protocol.

## LOCAL

The local protocol implementation uses the local file manipulation and local process execution capabilities built-in to Java. The __os__ connection property is hardcoded to the operating system of the local host and the `tmp` property defaults to the system temporary directory as specified by the `java.io.tmpdir` [system property](http://docs.oracle.com/javase/6/docs/api/java/lang/System.html#getProperties()). There are no protocol-specific connection properties.

## SSH

The SSH protocol implementation of Overthere uses the [SSH](http://en.wikipedia.org/wiki/Secure_Shell) protocol to connect to remote hosts to manipulate files and execute commands. Most Unix systems already have an SSH server installed and configured and a number of different SSH implementations are available for Windows although not all of them are supported by Overthere.

See the [section on the host setup](#ssh_host_setup) for more information on how to setup the remote hosts.

### Connection options

The SSH protocol implementation of Overthere defines a number of additional connection properties, in addition to the [common connection options](#common_connection_options).

	connectionType
	Specifies how the SSH protocol is used. One of the following values must be set:

SFTP - uses SFTP to transfer files, to a Unix host. Unless sudo or a similar command is needed to execute commands, this is the best and fastest option to choose for Unix hosts.

SFTP_CYGWIN -  uses SFTP to transfer files, to a Windows host running OpenSSH on Cygwin.

SFTP_WINSSHD - uses SFTP to transfer files, to a Windows host running WinSSHD.

SCP - uses SCP to transfer files, to a Unix host. Not needed unless your SSH server has disabled the SFTP subsystem.

SUDO - uses SCP to transfer files, to a Unix host. Uses the sudo command, configured with NOPASSWD for all commands, to execute commands. Select this connection type if the username you are connecting with does not have the right permissions to manipulate the files that need to be manipulated and/or to execute the commands that need to be executed.
If this connection type is selected, the sudoUsername connection property is required and specifies that user that does have the necessary permissions. See below for a more detailed description.

INTERACTIVE_SUDO - uses SCP to transfer files, to a Unix host. Uses the sudo command, not been configured with NOPASSWD for all commands, to execute commands. This is similar to the SUDO connection type but also detects the password prompt that is shown by the sudo command when the login user (username) tries to execute a commands as the privileged user (sudoUsername) when that command has not been configured in /etc/sudoers with NOPASSWD.
N.B.: Because the password of the login user is needed to answer this prompt, this connection type is incompatible with the privateKeyFile option that can be used to authenticate with a private key file.

	sudoUsername
	The username of the user that can manipulate the files that need to be manipulated and that can execute the commands that need to be executed. This connection options is only applicable for the SUDO and INTERACTIVE_SUDO connection types.

	privateKeyFile
	The RSA private key file to use when connecting to the remote host. When this connection option is specified, the password connection option is ignored.

	passphrase
	The passphrase to unlock the RSA private key file specified with the privateKeyFile connection option. If this connection option is not specified, the RSA private key file must have an empty passphrase.

	allocateDefaultPty
	If set to true, the SSH server is requested to allocate a pty (pseudo terminal) for the process, as if the allocatePty option were set to the value dummy:80:24:0:0. The default value is false.

N.B.: This option is needed for some commands when they perform interaction with the user, most notably many implementations of `sudo` (the error message sorry, you must have a tty to run sudo will appear in the output otherwise).

N.B.: Some SSH servers will crash when they are requested to allocate a pty, most notably OpenSSH on AIX. To verify the behaviour of your SSH server, you can manually execute the ssh command with the -T (disable pty allocation) or -t (force pty allocation) flags.

	allocatePty
	If set to a non-null value, the SSH server is requested to allocate a pty (pseudo terminal) for the process with the setting specified by this option. The format is TERM:COLS:ROWS:WIDTH:HEIGHT, e.g. xterm:80:24:0:0. If set, this option overrides the allocateDefaultPty option. The default value is null.

N.B.: This option is needed for some commands when they perform interaction with the user, most notably many implementations of `sudo` (the error message sorry, you must have a tty to run sudo will appear in the output otherwise).

N.B.: Some SSH servers will crash when they are requested to allocate a pty, most notably OpenSSH on AIX. To verify the behaviour of your SSH server, you can manually execute the ssh command with the -T (disable pty allocation) or -t (force pty allocation) flags.

	interactiveKeyboardAuthRegex
	The regular expression to look for in keyboard-interactive prompts before sending the password. The default value is .*Password:[ ]?. When the SSH server is configured to not allow password authentication but is configured to allow keyboard-interactive authentication using passwords, Overthere will compare the interactive-keyboard prompt against this regular expression and send the `password` when they match.

	sudoCommandPrefix
	The command to prefix to the command to be executed to execute it as sudoUsername. The string {0} is replaced with the vaulue of sudoUsername. The default value is sudo -u {0}. This connection option is only applicable for the SUDO and INTERACTIVE_SUDO connection types.

	sudoOverrideUmask
	If set to true, Overthere will explicitly change the permissions with chmod -R go+rX after uploading a file or directory with scp. This connection options is only applicable for the SUDO and INTERACTIVE_SUDO connection types.

	sudoPasswordPromptRegex
	The regular expression to be used when looking for sudo password prompts. When the connection type is set to INTERACTIVE_SUDO, Overthere will look for strings that match this regular expression in the first line of the output of a command, and send the password if a match occurs. The default value is .*[Pp]assword.*: This connection option is only applicable for the INTERACTIVE_SUDO connection type.

	sudoQuoteCommand
	If set to true, the original command is added as one argument to the prefix configured with the sudoCommandPrefix connection option. This has the result of quoting the original command, which is needed for commands like su. Compare sudo -u privilegeduser start server1 to su privilegeduser 'start server1'. The default value is false. This connection options is only applicable for the SUDO and INTERACTIVE_SUDO connection types.

### Host setup

#### SSH
To connect to a remote host using the SSH protocol, you will need to install an SSH server on that remote host. For Unix platforms, we recommend [OpenSSH](http://www.openssh.com/). It is included in all Linux distributions and most other Unix flavours. For Windows platforms two SSH servers are supported:

* OpenSSH on [Cygwin](http://www.cygwin.com/). We recommend [COPSSH](http://www.itefix.no/i2/copssh) as a convenient packaging of OpenSSH and Cygwin. It is a free source download but since 22/11/2011 the binary installers are a paid solution.
* [WinSSHD](http://www.bitvise.com/winsshd) is a commercial SSH server that has a lot of configuration options.

__N.B.:__ The __SFTP__, __SCP__, __SUDO__ and __INTERACTIVE_SUDO__ connection types are only available for Unix hosts. To use SSH with Windows hosts, choose either the __SFTP_CYGWIN__ or the __SFTP_WINSSHD__ connection type.

#### SFTP

To use the __SFTP__ connection type, make sure SFTP is enabled in the SSH server. This is enabled by default in most SSH servers.

#### SFTP_CYGWIN

To use the __SFTP_CYGWIN__ connection type, install [COPSSH](http://www.itefix.no/i2/copssh) on your Windows host. In the COPSSH control panel, add the users as which you want to connect and select _Linux shell and Sftp_ in the _shell_ dropdown box. Check _Password authentication_ and/or _Public key authentication_ depending on the authentication method you want to use.
__N.B.:__ Overthere will take care of the translation from Windows style paths, e.g. `C:\Program Files\IBM\WebSphere\AppServer`, to Cygwin-style paths, e.g. `/cygdrive/C/Program Files/IBM/WebSphere/AppServer`, so that your code can use Windows style paths.

#### SFTP_WINSSHD

To use the __SFTP_WINSSHD__ connection type, install [WinSSHD](http://www.bitvise.com/winsshd) on your Windows host. In the Easy WinSSHD Settings control panel, add the users as which you want to connect, check the _Login allowed_ checkbox and select _Allow full access_ in the _Virtual filesystem layout_ dropdown box. Alternatively you can check the _Allow login to any Windows account_ to allow access to all Windows accounts.
__N.B.:__ Overthere will take care of the translation from Windows style paths, e.g. `C:\Program Files\IBM\WebSphere\AppServer`, to WinSSHD-style paths, e.g. `/C/Program Files/IBM/WebSphere/AppServer`, so that your code can use Windows style paths.

#### SUDO and INTERACTIVE_SUDO

To use the __SUDO__ connection type, the `/etc/sudoers` configuration will have to be set up in such a way that the user configured with the connection option __username__ can execute the commands below as the user configured with the connection option __sudoUsername__. The arguments passed to these commands depend on the exact usage of the Overthere connection. Check the `INFO` messages on the `com.xebialabs.overthere.ssh.SshConnection` category to see what commands get executed.

* `ls`
* `cp`
* `mv`
* `mkdir`
* `rmdir`
* `rm`
* `chmod`
* Any other command that you want to execute.

The commands mentioned above must be configured with the __NOPASSWD__ setting in the `/etc/sudoers` file. Otherwise you will have to use the __INTERACTIVE_SUDO__ connection type. When the __INTERACTIVE_SUDO__ connection type is used, the first line of the output will be matched against the regular expression configured with the __sudoPasswordPromptRegex__ connection option. If a match is found, the value of the __password__ connection option is sent.
If the __sudoPasswordPromptRegex__ was set incorrectly, the most common symptom is for the command to appear to hang. If you have trouble determining the proper value for the __sudoPasswordPromptRegex__ connection option, set the log level for the `com.xebialabs.overthere.ssh.SshInteractiveSudoPasswordHandlingStream` category to `TRACE` and examine the output.

## CIFS

The CIFS protocol implementation of Overthere uses the [CIFS protocol](http://en.wikipedia.org/wiki/Server_Message_Block), also known as SMB, for file manipulation and, depending on the settings, uses either [Telnet](http://en.wikipedia.org/wiki/Telnet) or [WinRM](http://en.wikipedia.org/wiki/WS-Management) for process execution. You will most likely not need to install new software although you might need to enable and configure some services:

* The built-in file sharing capabilities of Windows are based on CIFS and are therefore available and enabled by default.
* A Telnet Server is available on all Windows Server versions although it might not be enabled.
* WinRM is available on Windows Server 2008 and up.

See the [section on the host setup](#cifs_host_setup) for more information on how to setup the remote hosts.

### Connection options

The CIFS protocol implementation of Overthere defines a number of additional connection properties, in addition to the [common connection options](#common_connection_options).

	connectionType
	Specifies what protocol is used to execute commands on the remote hsots. One of the following values must be set:

TELNET - uses Telnet to execute remote commands. The port connection property specifies the Telnet port to connect to. The default value is 23.

WINRM_HTTP - uses WinRM over HTTP to execute remote commands. The port connection property specifies the Telnet port to connect to. The default value is 5985.

WINRM_HTTPS - uses WinRM over HTTPS to execute remote commands. The port connection property specifies the Telnet port to connect to. The default value is 5986.

	cifsPort
	The CIFS port to connect to. The default value is 445.

	pathShareMappings
	The path to share mappings to use for CIFS specified as a Map<String, String>, e.g. C:\IBM\WebSphere -> WebSphere. If a path is not explicitly mapped to a share the administrative share will be used. The default value is to use no path/share mappings, i.e. to use only administrative shares.

	winrmContext
	The context used by the WinRM server. The default value is /wsman. This connection options is only applicable for the WINRM_HTTP and WINRM_HTTPS connection types.

	winrmEnvelopSize
	The WinRM envelop size in bytes to use. The default value is 153600. This connection options is only applicable for the WINRM_HTTP and WINRM_HTTPS connection types.

	winrmLocale
	The WinRM locale to use. The default value is en-US. This connection options is only applicable for the WINRM_HTTP and WINRM_HTTPS connection types.

	winrmTimeout
	The WinRM timeout to use in XML schema duration format. The default value is PT60.000S. This connection options is only applicable for the WINRM_HTTP and WINRM_HTTPS connection types.

### Host setup

#### CIFS
To connect to a remote host using the __CIFS__ protocol, make sure the host is reachable on port 445 and add the __username__ you are using to connect to the __Administrators__ group so that that user can access the [__administrative shares__](http://en.wikipedia.org/wiki/Administrative_share).
__N.B.:__ Overthere will take care of the translation from Windows paths, e.g. `C:\Program Files\IBM\WebSphere\AppServer`, to SMB URLs that use the administrative shares, e.g. smb://username:password@hostname/C$/Program%20Files/IBM/WebSphere/AppServer (which corresponds to the UNC path \\hostname\C$\Program Files\IBM\WebSphere\AppServer), so that your code can use Windows style paths.

#### TELNET

To use the __TELNET__ connection type, enable the Telnet Server Service according to these instructions on the Microsoft Technet site. If the remote host is running Windows Server 2003 SP1 or an x64-based version of Windows Server 2003, you will have to install the according to [these instructions from the Microsoft Support site](http://support.microsoft.com/kb/899260). After you have started the Telnet Server, open a command prompt as the __Administrator__ user and enter the command `tlntadmn config mode=stream` to enable stream mode.

When the Telnet server is enabled any user that is in the Administrators group or that is in the TelnetClients group and that has the "Allow logon locally" privilege can log in using Telnet. See the Microsoft Technet to learn how to grant a user or group the right to logon locally on Windows Server 2008 R2.

#### WINRP_HTTP and WINRM_HTTPS

_For a PowerShell script to do what is described below in one go, check [Richard Downer's blog](http://www.frontiertown.co.uk/2011/12/overthere-control-windows-from-java/)_

To use the __WINRM_HTTP__ or the __WINRM_HTTPS__ connection type, you'll need to setup WinRM on the remote host by following these instructions:

1. If the remote host is running Windows Server 2003 R2, you will need to enable WinRM. As the Administrator user, go to the __Add/Remove System Components__ feature in the __Control Panel__ and add WinRm under the section __Management and Monitoring Tools__.

2. On the remote host, as the Administrator user, open a Command Prompt and follow the steps below.

3. Configure WinRM to allow basic authentication:

		winrm set winrm/config/service/Auth @{Basic="true"}

4. Configure WinRM to allow unencrypted SOAP messages:

		winrm set winrm/config/service @{AllowUnencrypted="true"}

5. Configure WinRM to provide enough memory to the commands that you are going to run, e.g. 1024 MB:

		winrm set winrm/config/winrs @{MaxMemoryPerShellMB="1024"}

6. To use the __WINRM_HTTP__ connection type, create an HTTP WinRM listener:

		winrm create winrm/config/listener?Address=*+Transport=HTTP

7. To use the __WINRM_HTTPS__ connection type, follow the steps below:

	1. (optional) Create a self signed certificate for the remote host by installing `selfssl.exe` from [the IIS 6 resource kit](http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17275) and running the command below or by following the instructions [in this blog by Hans Olav](http://www.hansolav.net/blog/SelfsignedSSLCertificatesOnIIS7AndCommonNames.aspx):

        	C:\Program Files\IIS Resources\SelfSSL>selfssl.exe /T /N:cn=HOSTNAME /V:3650
        	Microsoft (R) SelfSSL Version 1.0
        	Copyright (C) 2003 Microsoft Corporation. All rights reserved.

        	Do you want to replace the SSL settings for site 1 (Y/N)?Y
        	The self signed certificate was successfully assigned to site 1.

	2. Open a PowerShell window and enter the command below to find the thumbprint for the certificate for the remote host:

			PS C:\Windows\system32> Get-childItem cert:\LocalMachine\Root\ | Select-String -pattern HOSTNAME

			[Subject]
			  CN=HOSTNAME

			[Issuer]
			  CN=HOSTNAME

			[Serial Number]
			  527E7AF9142D96AD49A10469A264E766

			[Not Before]
			  5/23/2011 10:23:33 AM

			[Not After]
			  5/20/2021 10:23:33 AM

			[Thumbprint]
			  5C36B638BC31F505EF7F693D9A60C01551DD486F

	3. Create an HTTPS WinRM listener for the remote host using the certificate you've just found:

			winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="HOSTNAME"; CertificateThumbprint="THUMBPRINT"}

For more information on WinRM, please refer to the online documentation at Microsoft's DevCenter. As a quick reference, have a look at the list of useful commands below:

* Do a quickconfig for WinRM: `winrm qc`
* Do a quickconfig for WinRM with HTTPS: `winrm qc -transport:https`
* Dump the complete WinRM configuration: `winrm get winrm/config`
* View the listeners that have been configured: `winrm enumerate winrm/config/listener`
* Allow all hosts to connect to the WinRM listener: `winrm set winrm/config/client @{TrustedHosts="*"}`
* Allow a fixed set of hosts to connect to the WinRM listener: `winrm set winrm/config/client @{TrustedHosts="host1,host2..."}`

# Tunnelling

Overthere supports the tunnelling of every protocol over SSH. This can be used to reach hosts that live in a DMZ which can only be reached by connecting to a different host first. This in-between host is called the jump station. In order to configure an SSH tunnel, you need to provide a set of nested connection options specifying which host is used as the jump station.

When using a jumpstation to connect to the remote host, Overthere will dynamically allocate an available local port to use for the connection to the end station. Using an additional connection option, you can configure from which port onwards Overthere starts the allocation.

	portAllocationRangeStart
	At which port Overthere starts finding an available local port for connecting to the end station. The default value is: 1025.

# Release History

* Overthere 2.0.0-beta-2 (23-Mar-2012)
	* Fixed issues #39 and #40
	* Upgraded to latest jCIFS to fix issues with windows domain names and stability using tunnels
	* Set default pty to true in case of interactive sudo and no pty set
* Overthere 2.0.0-beta-1 (5-Mar-2012)
    * Re-implemented SSH tunnels. Tunnels are now created on demand instead of the user having to specify the localPortForwards explicitly. This makes management of tunnels easier and prevents clashes.
    * Ported Overthere tests to use TestNG instead of JUnit.
* Overthere 1.0.16 (23-Feb-2012)
    * Reverted changes made to support SSH tunnels in 1.0.14 and 1.0.15 because it did not work as well as we hoped. We are reimplementing it for Overthere 2.0 to be released early March.
    * Fixed command line encoding bugs for SSH/CYGWIN on Windows:
        * Now transforming the first element of the command line to a Cygwin path so that batch files (and executables) in specific directories (instead of on the PATH) can be executed.
        * Encoding the command line as if the target OS is UNIX because OpenSSH on Cygwin uses Windows encoding.
* Overthere 1.0.15 (21-Feb-2012)
    * Added explicit close() method to the new OverthereConnection interface (it was a class in 1.0.13) that does not throw java.io.IOException.
* Overthere 1.0.14 (20-Feb-2012)
    * Added support for SSH tunnels to jumpstations.
    * Added support for NTLM authentication.
    * Upgraded to SSH/J 0.7.0.
* Overthere 1.0.13 (18-Jan-2012)
    * Masked passwords in logging.
    * Made ItestHostFactory also look for itest.properties in ~/.itest (in addition to the classpath and the current working directory).
* Overthere 1.0.12 (12-Jan-2012)
    * Allowed forward slashes (/) to be used in Windows paths.
    * Made it possible to access non-administrative shares on Windows so that the CIFS connection methods can be used with regular user accounts. See the pathShareMappings connection option.
    * Added the allocatePty connection option to specify an explicit pseudo terminal to use.
* Overthere 1.0.11 (09-Dec-2011)
    * Fixes to the SSH/WinSSHD implementation and a few other little fixes.
    * Added a lot of documentation.
    * Added examples project.
    * Changed license to ASLv2.
* Overthere 1.0.10 (23-Nov-2011)
    * Added support for SSH/WinSSHD on Windows.
* Overthere 1.0.9 (22-Nov-2011)
    * Initial public release with support for SSH on Unix as well as CIFS/TELNET, CIFS/WinRM and SSH/CYGWIN on Windows.

repository: gschueler/overthere

repo_name: gschueler/overthere


text:
---
date: 2017-06-02
title: Introducing Phenomic 1.0.0 first alpha
---

## A complete rewrite

Phenomic is a static website generator that has been in v0.\* for quite a while
now. As we wanted to release a v1, we took some time to think about what needed
to change, and what we could do better for our stable API.

A few months ago, we started the reflexion. As our GitHub issues were mainly
bikeshedding and user-specific needs, we realised that we were trying to bring
too much in our core module, which was preventing us from moving forward to
where we wanted to push Phenomic.

We then started prototyping a new version in consideration of what we want it to
be capable of:

* Use an HTTP API as content source, which would enable us to build static
  versions of multiple CMS
* Have a powerful querying API
* Build scalable static web apps
* Handle pagination

Therefore we decided to make a simple core API and put the specifics in plugins.
Phenomic for now has a default preset with Webpack and React, but opens the way
for any other bundler or UI library (ping us if you'd like to implement Rollup,
Vue or Angular).

Today we're officially releasing the first alpha of our 1.0.0 API, and we'd be
really grateful for your feedback while we finalise the last details and the
docs.

Be sure to check out ["Getting Started"](/docs/getting-started) page!

You can have a look on
[this website source](https://github.com/phenomic/phenomic/tree/master/docs) and
[learn how to get started](https://github.com/phenomic/phenomic/tree/master/packages/preset-react-app/docs/getting-started/README.md).

We hope you'll like this release!

repository: yuvilio/phenomic

repo_name: yuvilio/phenomic


text:
# How to Contribute

First of all, thank you for your interest in `uxm`!
We'd love to accept your patches and contributions.

```bash
# install deps & ensure all tests pass
yarn
yarn test

# build dist/ & declaration
yarn build

# run size-limit for core bundles and examples
yarn size-limit
```

repository: treosh/uxm

gha_language: JavaScript

repo_name: treosh/uxm


text:
# ansible-phoenix

Scripts for provisioning a server to host [Phoenix Framework](https://www.phoenixframework.org/) app.

## Requirements

### Target machine

* A server with [Debian GNU/Linux](https://www.debian.org/) 10 (Buster) operating system.

### Control machine

* Install [Python](https://www.python.org/)

    See sample instruction for macOS users

    #### Installing Python on macOS using [Homebrew](https://brew.sh/) and [asdf-vm](https://asdf-vm.com/#/core-manage-asdf-vm):

    ```shell
    brew install asdf
    echo -e "\n. $(brew --prefix asdf)/asdf.sh" >> ~/.zshrc
    echo -e "\n. $(brew --prefix asdf)/etc/bash_completion.d/asdf.bash" >> ~/.zshrc
    asdf plugin-add python
    asdf install python 3.8.2
    asdf global python 3.8.2
    pip install --upgrade pip
    ```

* Install [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)

    See sample instruction for macOS users

    #### Installing Ansible using [Homebrew](https://brew.sh/):

    ```shell
    pip install ansible
    asdf reshim python # if you use asdf-vm
    ```

## Configuration

1. Copy sample config:

    ```shell
    cp vagrant/inventory inventory && cp -r vagrant/host_vars/ host_vars/
    ```

2. Update sample `inventory` and `host_vars/` (in main directory of this repo) with your own config.

## Usage

### Preparation (first run)

Before you run the whole script, you may need to create a non-root user(s):

```shell
ansible-playbook playbook.yml -i inventory -u root -t users
```

### Running scripts

```shell
ansible-playbook playbook.yml -i inventory -u admin
```

## Testing locally (using vagrant)

```shell
(cd vagrant/ && vagrant up)
ansible-playbook playbook.yml -i vagrant/inventory -u root -t users
ansible-playbook playbook.yml -i vagrant/inventory -u admin
(cd vagrant/ && vagrant halt)
```

repository: marekciupak/ansible-phoenix

repo_name: marekciupak/ansible-phoenix


text:
---
layout: post
title:  "The Hardware Startup"
authors: DiResta, Renee; Forrest, Brady; Vinyard, Ryan

---

Building software company is much easier now

> Building a software startup **has been largely templatized over the last five years**. Free tools enable entrepreneurs to **rapidly build, collaborate, deploy, and pivot**. There is an extensive network of mentors and thought-leader bloggers sharing advice rooted in their own experience.

Changes in hardware field

> Significant changes have taken place in the last two years. The **decreasing cost of prototyping** is lowering the barriers to entry and making it more feasible to develop a physical product within economic constraints.

Maker movement

> The maker movement has had a profound influence on the hardware-startup ecosystem. Defined by three characteristics **curiosity, creativity, and community** it emphasizes project-based learning, learning by doing, and sharing knowledge with others. Experimentation is important. Having fun is a priority.

Hobbyist --> entrepreneurs

> Over the past five years, we’ve begun to witness the emergence of maker pros : entrepreneurs who started out as hobbyists and now want to turn their creations into full-fledged companies.

Prototype != Product

> The difference between a project and a product is the difference between making one and making many . To turn a project into a company, the product has to be scalable. “Making many” has traditionally been a problem of cost and accessibility; it’s historically been both expensive and difficult to manufacture.

Sharing projects online

> Web-based communities such as Instructables and Thingiverse are geography-agnostic; they enable people around the world to share projects online and learn from others. Sometimes

Requirements for a company

> To turn a project into a company still requires navigating fundraising, inventory management, distribution, customer service, and more.

Comparison to the web or computer era

> Dale Dougherty compares this progression from makers to entrepreneurs to a similar phenomenon that happened in the early days of the Web: Early on, most people were creating websites because they could. At some point, people said, hey, there’s a way to make money from this I’m not building websites; I’m building a way to make money.

Categories

> Most hardware startups make products that fall into one of four sub **connected devices, personal sensor devices, robotics, and designed products**.

Connected device

> The term connected device broadly refers to a device that has a cellular, WiFi, or other digital connection but is **not a cell phone or personal computer**.

Capturing data by humans vs machines

> Ashton recognized that most of the data on the Internet was gathered or created by humans: Conventional diagrams of the Internet…leave out the most numerous and important routers of all people. The problem is, people have limited time, attention, and accuracy all of which means they are not very good at capturing data about things in the real world.

Internet of Things

> The broad vision for the Internet of Things is a world in which objects **connect to the Internet and transmit state information without human involvement**. It’s quickly becoming a reality.

Control or modify via the Internet

> Internet of Things objects use networked sensors to generate data, which is then analyzed by other machines. The objects themselves can in turn be modified or controlled remotely.

Robots

> The Unimate was a large stationary box with a movable arm, but it did important work that was too dangerous for humans. Since the Unimate, robots have changed industry in three primary ways: Their accuracy, consistency, and precision have improved product quality. Their ability to do work that humans shouldn’t, or can’t, has made manufacturing safer. Their cost relative to value particularly when factoring in increased productivity has fundamentally altered the bottom line of many companies.

Sensors

> Sensor technologies have enabled tactile, auditory, and visual input processing. Interaction experts are working to perfect the user experience of interfacing with robots.

> Hardware founders also have to be aware of regulatory issues, be familiar with the intellectual property (IP) and patents landscape, and understand the technological limitations of a potential design before they even approach a factory.

repository: sayanee/books

gha_language: HTML

repo_name: sayanee/books


text:
# Test Configurations
The .yaml files in test_configs directory are devicedb configurations files mainly used for testing.

See the inline comments in ```test_config_nocluster.yaml``` for description on configuration items available.

## Building and Running devicedb locally(with no cluster configuration)
For test purposes you can build devicedb and run it locally using ```test_config_nocluster.yaml``` configuration.

Following methods are available to build and run devicedb locally in no cluster configuration.

In this configuration devicedb will be listening on port 9090.

### Natively
1. Install and setup golang
   1. Instructions at https://golang.org/doc/install
1. Create a setup script with following contents. This script assumes that you are creating devicedb under ```$HOME/devicedb_test``` directory.

   If you want to use a different directory change the script as required.
   ```shell
   #!/bin/bash
   export GIT_TERMINAL_PROMPT=1
   export GOROOT=/opt/go
   export GOPATH="$HOME/devicedb_test"
   export GOBIN="$HOME/devicedb_test"
   export PATH="$PATH:$GOROOT/bin:$GOBIN:$GOPATH"
   ```
1. Execute the script as follows
   1. ```source ./my_setup_script.sh```
 **where my_setup_script.sh will have the contents mentioned above.**
1. Create and build the devicedb repo using ```go get``` command as follow:
   1. go get github.com:armPelionEdge/devicedb
1. Executing devicedb
   1. cd $GOBIN
   1. ./devicedb start -conf=src/github.com/armPelionEdge/devicedb/test_configs/test_config_nocluster.yaml
 **This should start running devicedb, you should be able to connect to it using URI = <IP_ADDRESS>:9090**

### Using Docker
If you have Docker installed you can build and run devicedb as follows:
1. Clone the devicedb repo using ```git clone```
1. Change directory to where you cloned devicedb
1. Execute docker build using Dockerfile.test_local as follows.
   1. docker build -t devicedb_test_local -f Dockerfile.test_local .
1. Run the devicedb_test_local docker container as follows.
   1. docker run -p <IP_ADDRESS>:9090:9090/tcp -it devicedb_test_local
 **This should start running devicedb in the container, you should be able to connect to it using URI = <IP_ADDRESS>:9090**

gha_language: Go


text:
---
id: serve
title: serve
sidebar_label: serve
---

Serves a full featured [GraphQL CRUD](https://graphqlcrud.org/) API with subscriptions and data synchronization running in just a few seconds without writing a single line of code - all you need is a data model `.graphql` file.

GraphQL Serve is a CLI tool that leverages the power of Graphback to generate a codeless Node.js GraphQL API complete with schema and CRUD resolvers and an in-memory MongoDB database.

### Installation

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';

<Tabs
  defaultValue="yarn"
  values={[
    {label: 'yarn', value: 'yarn'},
    {label: 'npm', value: 'npm'},
  ]}
>
  <TabItem value="yarn">

  ```
  yarn global add @graphql-cli/serve
  ```

  </TabItem>

  <TabItem value="npm">

  ```
  npm i -g @graphql-cli/serve
  ```

  </TabItem>
</Tabs>

### Usage

The bare minimum you need is a GraphQL file with your data models. Create a file called `Note.graphql` and add the following:

```graphql
""" @model """
type Note {
  _id: GraphbackObjectID!
  title: String!
  description: String
  likes: Int
}

scalar GraphbackObjectID
```

The `@model` annotation indicates that `Note` is a data model and Graphback will generate resolvers, a CRUD service and data source for it. You can learn how to build more complex data models in [Data Model](https://graphback.dev/docs/model/datamodel#model).

#### Running your codeless GraphQL server

To start your server, run the following command from the same directory as `Note.graphql`:

```bash
graphql serve Note.graphql
```

This will start a GraphQL server on a random port using the `Note.graphql` data models we just added.

You can customise the directory of the data models:

```bash
graphql serve ./path/to/models
```

You can also specify where to load the data models from with a Glob pattern:

```bash
graphql serve ./schema/**/*.graphql
```

You can specify which port to start the server on:

```bash
$ graphql serve ./path/to/models --port 8080

Starting server...

Listening at: http://localhost:8080/graphql
```

### Enable Data Synchronization

GraphQL Serve can also operate on data sync models. Under the hood this uses the [Data Sync](https://graphback.dev/docs/datasync/intro) package.
To enable data synchronization, all we need to do is enable datasync capabilities on our models via the `@datasync` annotation.

For the `Note` model defined above, this would look like:

```graphql
"""
@model
@datasync
"""
type Note {
  _id: GraphbackObjectID!
  title: String!
  description: String
  likes: Int
}

scalar GraphbackObjectID
```

Once we have a model with datasync capabilities, we can run our GraphQL server by enabling data synchronization as shown below:

```bash
graphql serve Note.graphql --datasync
```

Conflict resolution strategies for datasync enabled models can be specified via the --conflict option:

```bash
graphql serve Note.graphql --datasync --conflict=clientSideWins
```

This defaults to ClientSideWins, if unset.

The TTL for delta tables, can also be set using the --deltaTTL option:

```bash
graphql serve Note.graphql --datasync --deltaTTL=172800
```

This value defaults to `172800` when unused

#### Arguments

| argument | description | default |
| --- | --- | --- |
| `Model` | Directory to search for data models | `undefined` |

#### Options

| option | alias | description | default |
| --- | --- | --- | --- |
| `--port` | `-p` | Port on which to run the HTTP server | `Random port` |
| `--datasync` | `--ds` | Enable datasynchronization features | `false` |
| `--deltaTTL` | N/A | Specify a conflict resolution strategy with --datasync. Choices: `clientSideWins`, `serverSideWins`, `throwOnConflict` | `clientSideWins` |
| `--conflict` | N/A | Specify a TTL for delta tables with --datasync | `172800` |

repository: Urigo/graphql-cli

gha_language: TypeScript

repo_name: Urigo/graphql-cli


text:
---
layout: post
title: "Christmas Prize Winners"
permalink: /archives/2005/12/christmas_prize.html
commentfile: 2005-12-20-christmas_prize
category: around_town
date: 2005-12-20 11:05:24

---

Here are the winners for all the various community contests, raffles, etc...

#### Churchill's Christmas Draw

|                    |                                             |
|--------------------|---------------------------------------------|
| Mini HiFi          | **Mr. Henderson** \* |
| Digital Camera     | **Anne Jenkins** \*  |
| Holistic Massage   | **Jan Rice** \*      |
| Ipod Mini          | **Mr. Gordon** \*    |
| Festive Cheer Gift | **Ms Stansbury**                            |
| Festive Cheer Gift | **Ms Foot**                                 |

Thank you to Churchill's for sponsoring the draw ([www.findaproperty.com/churchills](http://www.findaproperty.com/churchills/).)

#### St Margarets Christmas Fairies Numbers Game

The winner of the horse was **Lucy Whitear**.

*Prize donated by The St Margarets Traders' Association.*

#### The Pirates of St Margarets Treasure Hunt

Won by **Brett** of Crown Road, St Margarets who wins the tigers.

*Prize donated by The St Margarets' Traders Association.*

#### The Christmas Poster Competition

Was won by **Toran Grady** whose prize is a scooter.

\_Prize donated by play insideout -- ([www.playinsideout.co.uk](http://www.playinsideout.co.uk/)._)

\* *please collect your prizes from Pauline Crisp at Churchill's St.Margaret's road offices from Tuesday*

repository: pmahnke/stmgrts

repo_name: pmahnke/stmgrts


text:
---
layout: page
title: Lean Prover Zulip Chat Archive
permalink: archive/113488general/35579Defaultargumentswithtypeparameter.html
---

## [general](index.html)
### [Default arguments with type parameter](35579Defaultargumentswithtypeparameter.html)

#### [Keeley Hoek (Aug 18 2018 at 12:42)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132355082):
I've got a (honest, in-a-program) function
````
def do_some_stuff {α : Type} (cfg : config α) := xxx
````
In an ideal world, I'd like to be able to have a default `config`, with a fixed parameter `α` (obviously), so I could write `do_some_stuff` and everything would work great. I guess I want to be able to write (and compile)
````
def default_config : config string := xxx
def do_some_stuff {α : Type} (cfg : config α := default_config) := xxx
````
with that having the meaning that if `cfg` is omitted, the type `α` is forced to be `string`.

I see that I might be "fighting the system". What do you think is the best way to emulate this kind of option-passing interface?

#### [Mario Carneiro (Aug 18 2018 at 13:50)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357334):
This comes up in core lean in some of the structures, where you have to give `A` such that `A = B`, and the proof of `A = B` is `rfl` but this only works if `A` is `B`. You can set this up using auto params instead of opt params:
```
def config : Type → Type := sorry
def default_config : config string := sorry
meta def default_config_tac : tactic unit := `[exact default_config]
def do_some_stuff {α : Type} (cfg : config α . default_config_tac) : α := sorry

example : string := do_some_stuff -- ok
example : nat := do_some_stuff (sorry : config ℕ) -- ok
example : nat := do_some_stuff -- error

```

#### [Keeley Hoek (Aug 18 2018 at 13:56)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357505):
Thanks so much Mario. Do you know where I could read about the auto params "." period syntax?

#### [Mario Carneiro (Aug 18 2018 at 13:57)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357514):
It might be in the reference manual? It's very simple. You can only put a name of a def of a `tactic unit` there, and it gets called when the argument is not supplied

#### [Mario Carneiro (Aug 18 2018 at 13:57)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357522):
I wish it would accept an expression so you could write a tactic inline there, but alas

#### [Keeley Hoek (Aug 18 2018 at 13:58)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357563):
ok sweet! cheers!

#### [Mario Carneiro (Aug 18 2018 at 13:58)](https://leanprover.zulipchat.com/#narrow/stream/113488-general/topic/Default%20arguments%20with%20type%20parameter/near/132357567):
(actually there is a good reason you can't write a tactic inline, since that would be `meta`)


text:
[![Build Status](https://secure.travis-ci.org/grsmv/week.png?branch=master)](http://travis-ci.org/grsmv/week)

## Description:
A simple gem to work with weeks as arrays of date objects. It works with commercial dates (according to http://en.wikipedia.org/wiki/ISO_week_date).

## Usage:

__Simple:__

```ruby
week(2011, 52).map { |day| p day }

# =>
# Sun Dec 25 00:00:00 +0200 2011
# (...)
# Sat Dec 31 00:00:00 +0200 2011
```

__Without any parameters:__

```ruby
week.map { |day| p day }
```

__With Monday as first day of the week:__
(1 as third parameter)

```ruby
week(2011, 8, 1).map { |day| p day }
```

__Patch for standart library Date class:__

```ruby
Date.new(2011, 12, 25).week
```

Copyright (c) 2011 Sergey Gerasimov

repository: grsmv/week

repo_name: grsmv/week


text:
---
subtitle: SQLite
---
# SQLite

## Supported Versions

- `3.7` and later `3.x` versions

## Support Level

        Compatible
        ✓

        Certified
        ✓

        Guaranteed
        ✓ {% include teams.html %}

Support Level determines the degree of support available for this database ([learn more](Learn More/Database Support Levels)).

## Drivers

Java (Xerial)

URL format
jdbc:sqlite:database

Ships with Flyway Command-line
Yes

Maven Central coordinates
org.xerial:sqlite-jdbc

Supported versions
3.7 and later

Default Java class
org.sqlite.JDBC

## SQL Script Syntax

- [Standard SQL syntax](Concepts/migrations#sql-based-migrations#syntax) with statement delimiter **;**
- Triggers with `BEGIN ... END;` block

### Compatibility

- DDL exported by SQLite can be used unchanged in a Flyway migration
- Any SQLite SQL script executed by Flyway, can be executed by the SQLite tools (after the placeholders have been replaced)

### Example

/* Single line comment */
CREATE TABLE test_data (
  value VARCHAR(25) NOT NULL PRIMARY KEY
);

/*
Multi-line
comment
*/

-- Sql-style comment

-- Placeholder
INSERT INTO ${tableName} (name) VALUES ('Mr. T');

CREATE TRIGGER update_customer_address UPDATE OF address ON customers
  BEGIN
    UPDATE orders SET address = new.address WHERE customer_name = old.name;
  END;

## Limitations

- No concurrent migration as SQLite does not support `SELECT ... FOR UPDATE` locking
- No support for multiple schemas or changing the current schema, as SQLite doesn't support schemas
- No support for `CREATE TRANSACTION` and `COMMIT` statements within a migration, as SQLite doesn't support nested transactions

url: https://raw.githubusercontent.com/nycjay/flyway/16730ccdbbb3fbd079a0b21fd3f58d0ea8e5898d/documentation/Flyway CLI and API/Supported Databases/SQLite.md

repository: nycjay/flyway

gha_language: Java

repo_name: nycjay/flyway


text:
***DEPRECIATED***
This module is depreciated, no longer developed and may not work.
Please check out the currently-in-develop module. https://github.com/VincentChui2005/kripweb

# krip_web

This is the website framework module made by the kripaars.

Not to say Djago and Flask are bad, but they really have pros and cons.

So... I tried to make a framework for probably my own use, that basically patches all those problems.

Sounds a crazily large project, isn't it?

Currently, I'm working on it. More and more features and patches will be there.

# Examples
No don't think about that rn cuz there's too few features to say.

I'll make them when I think it's time and feel like it.


text:
# NForm Changelog

## 1.1.1
- Changed the initialize method in Attributes module to be tolerant of literal nil input. Previously it would accept
  either a hash of attributes or no input, but would not accept a literal nil.
- Bugfix: fixed case in attributes classes where `false` would get replaced by `nil`.

## 1.1.0
- New feature on Attributes: `hash_representation`
  Two options: :complete, or :partial. :complete is the default (for backward compatibility).
  When :partial is selected, the #to_hash method returns only the keys
  that have been touched by hash or by using setter methods.

## 1.0.2
- Bugfix: In NForm::Service, form_class should be a class instance variable not a class variable.

## 1.0.1
- Update gemspec, requires version bump :(

## 1.0.0
- Add Service and Form, together these complete the backend portion of
  NForm, packaging up all the code we use to build apps around composable,
  callable services.
- Publish to RubyGems `gem install nform`

## 0.3.1
- Add `text` option to submit buttons.

## 0.3.0
- Add scope argument to coercion procs to provide a way to get to instance methods in attribute setters

## 0.2 Series

- Add common coercions
- Refactor Attributes
- Redo coercion code in Attributes: procs can still be passed, but methods in the host object
  are not looked up (which pollutes the namespace and makes it hard to share common coercions).
  Instead coercions are defined in NForm::Coercions. Custom coercions can be added to this set
  and shared throughout an application.
- Add a new option to pass an array of symbols to perform chained coercions.

## 0.1 Series

Early development period, built out the initial feature set:

- Attributes: adds loose typing to ruby objects
- Validations: a collection of validation methods convenient for form objects
- HTML: a simple dsl for rendering DOM elements
- Builder: a more robust DSL for rendering forms from form objects
- Helpers: optional convenience methods, generally shortcuts for common NForm usage

repository: burlesona/nform

gha_language: Ruby

repo_name: burlesona/nform


text:
# Necrobot user info (v 0.10)

In general, the bot will respond to commands in the main bot channel (`#necrobot_main`), or via PM.
Race-specific commands should be entered in the race room.

## Common Commands

`.help` will give you a list of all the commands available in a given channel.

`.help command` (with `command` replaced by the name of a command) will give you more
information about that particular command.

### Races

To make a seeded Cadence race, call `.make` in #necrobot_main.

Unseeded races are made with `.make u`.

You can specifiy a character: `.make Dorian`; or a seed: `.make -s 12345`;
or a custom description: `.make -custom "4-shrine"`. These flags can be combined:
`.make Bolt u -custom "Nuzlocke"`.

To enter a race, go to the race room (it's a text channel called something like
`#cadence-s-1`), and call `.enter`.

If the race is already in progress, call `.notify` in the race room to have the bot send
a @mention at you when a rematch is made.

After entering, call `.ready` (or `.r`) to indicate your readiness to begin the race.
The race will start when every entrant is ready.

When you successfully step on the end stairs, call `.done` (or `.d`) and the bot will record your
time.  You can also ask the bot to record an in-game-time for your run with `.igt 12:34.56`.

If you wish to forfeit the race call `.forfeit` (or `.f`) The bot will record the time of
your forfeit. You can specify a level of death with `.death 3-2`.

Whether you win or forfeit, you can add a comment to your run with `.comment text`.

Most of the commands can be taken back if you make them in error: Use `.unenter`, `.unready`,
`.undone`, and `.unforfeit`.

After the race is over, call `.rematch` (or `.re`) to make a new race room with the same rules.
This will @mention anyone who called `.notify` as well as all the entrants to the previous race;
you can elect to not be notified for a rematch with `.notify off` (or `.unnotify`).

### Daily speedruns

There are currently two daily speedruns; one for Cadence, and one which rotates between the other
9 characters. You can find out the current character with `.dailychar`, or get the upcoming
schedule with `.dailyschedule`. If you want to know when a character will next appear, try
for example `.dailywhen coda`. Calling `.dailywhen` alone will tell you how long until the
next daily opens (new dailies open at 0 UTC).

To get the seed for today's daily, call `.dailyseed` (either in the main channel or via PM).
Make your run, then submit your result with `.dailysubmit 12:34.56`, or, if you died,
`.dailysubmit death 3-2`. (Use 4-4 for Dead Ringer and 4-5 for the Necrodancer.)
The `.dailysubmit` command should be called in PM or in the spoilerchat channel.

For the rotating-character daily, just add `rot` to all these commands: Call `.dailyseed rot`
to get the seed for the rotating-character daily, and `.dailysubmit rot 12:34.56` to submit a
time. (You can also call `.dailysubmit 12:34.56` in the rotating-character spoilerchat.)

### User preferences

You can choose whether to receive alerts when races happen with `.racealert on` and `.racealert off`.

You can choose whether to be automatically PM'd the seeds for a new daily, with `.dailyalert on` and
`.dailyalert off`.

See your currently enabled preferences with `.viewprefs`.

## Command list

### Seed generation

- `.randomseed [n]` : Generate n random seeds, which will be sent via PM. If n is not specified, the bot
will generate one seed and send it in the channel in which this command was called. Currently n is limited to 20.

### User preferences

- `.racealert [on|off]` : Turn race alerts on or off.
- `.dailyalert [on|off]` : Turn auto-PM of daily seeds on or off.
- `.viewprefs` (or `.getprefs`) : Get a summary of your user prefs via PM.

### Daily

In general, the `-rot` flag, where applicable, calls the command for the rotating-character daily; omitting
this flag calls it for the Cadence daily.

- `.dailychar` (or `.dailywho`) : Get the current character for the rotating-character daily.
- `.dailyinfo [-rot] [character]` (or `.dailywhen`) : Get the time until the next daily opens. If a character
is specified, this will instead tell you when that character is next featured on the rotating-character daily.
- `.dailyresubmit [-rot] [12:34.56|death x-y]` : Submit for the daily, overriding a previous submission.
Arguments are the same as for `.dailysubmit`.
- `.dailyrules [-rot]` : Get the rules for the daily.
- `.dailyschedule` : Get a list of the upcoming characters for the rotating-character daily.
- `.dailyseed [-rot]` : Get the seed for the current daily. "Current" means the current date in UTC.
- `.dailystatus [-rot]` : Get your status for the daily, i.e., whether you are registered (have called
`.dailyseed`) and whether you've submitted.
- `.dailysubmit [-rot] [12:34.56|death [x-y]]` : Submit for the daily. `12:34.56` is an in-game time and
indicates finishing the run in that time; `death x-y` indicates a death on the appropriate level. This will
give an error if you've already submitted; use `.dailyresubmit` to correct a prior submission, or
`.dailyunsubmit` to remove one. This command attempts to submit for the daily for which you've most recently
called `.dailyseed`. Submissions for a daily are accepted until 01:00 UTC the next day -- that is, you have
a one-hour grace period after the daily closes to get submissions in.
- `.dailyunsubmit [-rot]` : Remove your most recent daily submission. This only works if that daily is still open.

### Races

#### Making races

- `.make [-c char] [u|s|-seed 12345] [-custom "some description"]` : Makes a new public race.
`char` gives the character for the race (must be a Necrodancer character). `u` makes an
unseeded race; `s` makes a seeded race (default); `-seed 12345` makes a race with the
specified particular seed. (The seed must be an integer; text seeds are not supported.)
`-custom "4-shrine"` makes a race with the given description attached to it.
- `.makeprivate [-c char] [-u|-s|-seed 12345] [-custom "some description]` : Make a new private
race; other users will not be able to see your room. Params are the same as for `.make`.

#### Racer commands

- `.enter` (or `.join`, `.e`, `.j`): Enter the race.
- `.unenter` (or `.unjoin`): Leave the race (undoes a previous `.enter`.)
- `.ready` : Indicate you are ready to begin the race. The race begins when all racers are ready.
- `.unready` : Undoes a previous `.ready`.
- `.done` (or `.finish`, `.d`): Finish the race successfully. The bot will record your time.
- `.undone` (or `.unfinish`): Undoes a previous `.done`.
- `.forfeit [comment]` (or `.quit`, `.f`): Forfeits the race. The bot will record the time of forfeit;
`comment` adds the given text as a comment to your race.
- `.unforfeit` (or `.unquit`): Undoes a previous `.forfeit`.
- `.comment [text]` (or `.c`): Adds the given text as a comment to your race.
- `.death x-y`: Forfeits the race if you are not already forfeit, and records `x-y` as the level of death.
- `.igt 12:34.56`: Records the given time as an in-game time for your race.
- `.rematch` (or `.re`): If the race is complete, makes a rematch.
- `.delayrecord`: Delays recording of the race for an extra 120 seconds, if the race is not already being
delayed.
- `.notify [off]`: Will send an @mention to you when a rematch for this race is created. Such mentions are
automatically sent to racers. You can disable this mention with `.notify off`.
- `.time`: Get the current race time.
- `.missing`: List users that were @notified but who have not yet entered the race.
- `.poke`: Give an @mention poke to users that have entered but are not ready, if either only one or fewer
than 1/4 are unready.
- `.admins`: In a private race, lists the admins for the given race.

#### Admin commands

- `.forcecancel`: Cancels the race; no results will be recorded.
- `.forceclose`: Cancels the race and closes the race room.
- `.forceforfeit [racer...]`: Forces the specified racers to forfeit, even if they've already finished.
- `.forceforfeitall`: Forces any unfinished racers to forfeit.
- `.kick [racer...]`: Unenters the specified racers from the race. (They can re-enter with `.enter`; this
command is intended for kicking idle/afk users rather than channel moderation.)
- `.add [username...]`: Gives permission to see the room to the specified users.
- `.remove [username...]`: Removes permission to see the room from the specified users.
- `.changerules [char] [u|s|-seed 12345] [-custom "some description"]`: Changes the rules for the race.
Parameters are the same as `.make`.
- `.makeadmin [username...]`: Makes the specified users admins for the race. (This cannot be undone.)
- `.reseed`: If the race is seeded (and the seed was not specified), generates a new random seed. (To
specify a particular seed, use `.changerules -seed 12345`.)
- `.forcereset`: Cancel and reset the current race.
- `.pause`: Pause the race timer.
- `.unpause`: Unpause the race timer.

repository: incnone/necrobot

repo_name: incnone/necrobot


text:
# multi-choice-quiz-app
Simple MVC based web-app to practice ABCD quizzes like oracle academy or other using any browser

![App overview 1](./Images/1.PNG)
![App overview 2](./Images/2.PNG)
![App overview 3](./Images/3.PNG)
![App overview 3](./Images/4.PNG)


text:
# Homework 2

## Task
Get the details for the capital city of Estonia, Tallinn - https://restcountries.eu/rest/v2/capital/tallinn.
Then, find the first currency in the list of currencies in the response and get all the countries that have that
currency (https://restcountries.eu/rest/v2/currency/[theCurrency]). Print the number of countries using tht currency.
Note: use async/await.

## Contact
###<EMAIL_ADDRESS>###<EMAIL_ADDRESS>

path: /G2/Class08/Homework 2.md

filename: Homework 2.md


text:
# Billing Service

Uses Coinbase Commerce to allow crypto payments and Stripe for credit card payments. Grants credits to accounts after the payments are confirmed and uses those credits to increase storage limit on Textile.

repository: yalamber/space-services

repo_name: yalamber/space-services


text:
---
# sidebar: auto
prev: ./portal
next: ./mounting-portal
---

# PortalTarget

This component is an outlet for any content that was sent by a `<Portal>` component. It renders received content and doesn't do much else.

## Example usage

```html
<portal-target name="destination" />
```

::: tip Fragment

  `PortalTarget` renders a Fragment now, which means: there is no wrapping element.

:::

## Props API

### `multiple`

When `multiple` is `true`, the portal will be able to receive and render content from multiple `<Portal>` component at the same time.

You should use the `order` prop on the `<Portal>` to define the order in which the contents should be rendered:

**Source**

<!-- prettier-ignore -->
```html {10}
<portal to="destination" :order="2">
  <p>some content</p>
</portal>
<portal to="destination" :order="1">
  <p>some other content</p>
</portal>

<portal-target name="destination" multiple />
```

**Result**

<!-- prettier-ignore -->
```html
<p>some other content</p>
<p>some content</p>
```

### `name`

| Type     | Required | Default |
| -------- | -------- | ------- |
| `String` | yes      | none    |

Defines the name of this portal-target. `<Portal>` components can send content to this instance by this name.

### `slotProps`

| Type     | Required | Default |
| -------- | -------- | ------- |
| `Object` | no       | `{}`    |

::: tip
This prop is only useful when the PortalTarget received content from a [scoped Slot](https://vuejs.org/v2/guide/components.html#Scoped-Slots) of a `<Portal>`.
:::

The `slotProps` object is used as props to render the scoped slot from a `<Portal>`.

**Source**

<!-- prettier-ignore -->
```html {2,9}
<portal to="destination" v-slot="props" slot-props="{ state: 'nice!!' }">
  <p>This scoped slot content is so {{ props.state }}</p>
</portal>

<portal-target name="destination" slot-props="{state: 'cool!'}" />
```

**Result**

<!-- prettier-ignore -->
```html
<p>This scoped slot content is so cool!</p>
```

It has a counterpart of the same name on the `<Portal>` component to pass props to the slot content when the `<Portal>` is disabled.

## Slots API

### Default slot

Any existing slot content is rendered in case that no content from any source Portal is available.

Example:

**Source**

<!-- prettier-ignore -->
```html {2}
<portal-target name="destination" tag="span">
  <p>This is rendered when no other content is available.</p>
</portal-target>
```

**Result**

<!-- prettier-ignore -->
```html
<p>This is rendered when no other content is available.</p>
```

### Default scoped slot

The default slot can also be scoped. The scoped slot receives the [`slotProps`](#slotprops) prop as its argument.

Example:

**Source**

<!-- prettier-ignore -->
```html {1-3}
<portal-target name="target" :slotScope="{ message: 'Hi!' }" v-slot="props">
  <p>
    {{props.message}} This is rendered when no other content is available.
  </p>
</portal-target>
```

**Result**

<!-- prettier-ignore -->
```html
<p>This is rendered when no other content is available.</p>
```

### `wrapper`

This slot can be used to define markup that should wrap the content received from a `<portal>`. This is usually only useful in combination with [`multiple`](#multiple), as for content from a single portal, you can just wrap the `<portal-target>` as a whole.

The slot receives an array as its only prop, which contains the raw vnodes representing the content sent from the source portal(s).

These vnodes can be rendered with Vue's dynamic component syntax:

`<component :is="node">`

Example:

**Source**
<!-- prettier-ignore -->
```html
<portal-target name="target">
  <template v-slot:wrapper="nodes">
    <component :is="node" v-for="node in nodes" />
  </template>
</portal-target>
```

This slot is also useful to [add transitions (see advanced Guide)](../guide/advanced#transitions ).
## Events API

### `change`

Emitted every time the component re-renders because the content from the `<Portal>` changed.

It receives an object with two properties:

```js
{
  hasContent: boolean,
  sources: string[]
}
```

|Property| type | description|
|----------|---------|-----------------------------------------------------------------------|
|hasContent|boolean  | indicated wether there is currently and content for the `PortalTarget`|
|sources   | string[]| Array with the names of the portal(s) that sent content               |

<!-- prettier-ignore -->
```html {4}
<template>
  <portal-target name="destination" @change="handleUpdate" />
</template>

<script>
  export default {
    methods: {
      handleUpdate({ hasChanged, sources }) {
        // do something with the info.
      },
    },
  }
</script>
```

repository: LinusBorg/portal-vue

gha_language: Vue

repo_name: LinusBorg/portal-vue


text:
---
templateKey: blog-post-podcast-tlc
slug: /podcasts/tlc/s03-e17
author: Peter Witham
tags: ["Podcast", "The Life Creative"]
title: Dealing with competition is a mind set, how to come out on top
date: 2020-03-16T01:23:55
blurb: Some thoughts on not allowing that saturated market stopping you from doing it better.
---
<iframe src="https://anchor.fm/peter-witham/embed/episodes/Dealing-with-competition-is-a-mind-set--how-to-come-out-on-top-ebifo2" height="102px" width="400px" frameborder="0" scrolling="no"></iframe>

So many projects get abandoned or never started because people take the attitude "Someone else has already done it" and that's idiotic to be blunt. Until you do it, nobody has done it 'your way' and who's to say your take won't be the start of something big?

Oh, so a celebrity has entered your market? Great that means good news on exposure for you as well.

These thoughts and more on turning that frown into a cheer in this episode.

repository: GrfxGuru/gatsby-starter-netlify-cms

repo_name: GrfxGuru/gatsby-starter-netlify-cms


text:
# Contributing to Huiji-Utils

Huiji-Utils is a mono repository managed with [Lerna](https://github.com/lerna/lerna).\
All of packages are in the directory `packages/@huiji/`.

## Getting started

### Environment

- NodeJS >= 10.0.0
- Yarn >= 1.12.0
- Lerna >= 3.0.0

### Installing

```bash
lerna bootstrap
```

### Testing

Run all tests for all packages.

```bash
lerna run tests
```

### Buiding

Build all packages.

```bash
lerna run build
```

repository: HuijiFE/huiji-utils

repo_name: HuijiFE/huiji-utils