text:
# Parameter Parser

## Why I need this

In scientific computation, I often have problem with model parameters. Sometimes there are too many parameters in a model and I lose track of them. Sometimes I want to do a sensitivity test and change several parameters, but I don't want to mess up my code.

A good practice to manage parameters or options for your model is to use [argparser](https://docs.python.org/2/library/argparse.html#module-argparse). It supports command-line options and arguments. Another good way is to read values for parameter from a file. A model I used - [Landlab](http://landlab.github.io/#/) supports this method. I found this is better than argparser because I can save a copy of the parameter file with the results and next time I can use the exact same parameters to reproduce all the results.

Therefore, I write this paramparser module to support reading parameter values or options in my other models.

## Usage
Write your parameter file like this:
```
keyword:
value
another_keyword:
another_value
```
For example:
```
height:
1.8
width:
1
switch:
True
```
Please note the colon symbol ":" behind keyword.

Read from file:
```python
from paramparser import ParamParser

parser = ParamParser('param_file.txt')
height = parser.read(key='height', param_type='float')
width = parser.read(key='width', param_type='int')
switch = parser.read(key='switch', param_type='bool')
```

repository: laijingtao/paramparser

repo_name: laijingtao/paramparser


text:
# Use Google Cloud File Storage

### Why do this
 - When your workload and data files are too big to run on your laptop
 - When you don't want to wait for time on your organization's shared cluster

### What is this
- Google Cloud Platform Cloud Storage is an online file storage web service for storing, accessing and transferring data files on the Google Cloud platform.
- GCP Cloud Storage (or GCS) is frequently used as the input and output location for files when you run analysis (workflows or pipelines).
- Files are stored in buckets. Bucket usually contain folders for orgnaziation as well. Each bucket must have a globally unique name.

### Key considerations
Storage can be the most significant GCP service cost for bioinformatics (due to the number and size of files involved in analysis) so be careful to select the storage class that fits your analysis best i.e. multi-regional, regional.... so as not to pay for unused resources
 - Understand costs & selecting the best fit type of storage for your data [here](https://cloud.google.com/storage/docs/locations)
 - Understand storage class types (multi-regional, regional, nearline, coldline) [here](https://cloud.google.com/storage/docs/storage-classes)
 - Understand storage location options [here](https://cloud.google.com/about/locations)

### How to do this
 - CREATE a bucket with a unique name
 - CONFIGURE the bucket storage class type (see below)
   - TIP: REVIEW the potential use of AUTOCLASS for storage typing - [link](https://cloud.google.com/blog/products/storage-data-transfer/optimize-your-cloud-storage-spend)
 - CONFIGURE the bucket location
 - CONFIGURE the bucket access control, encryption & retention
   - List of key [bucket operations](https://cloud.google.com/storage/docs/how-to)

 ----

 Shown below is the GCP WebUI to 'create a (storage) bucket. Note the bucket storage class options that are available to you.

 [![Cloud Storage types](/images/storage.png)]()

  <img src="https://github.com/lynnlangit/gcp-for-bioinformatics/raw/master/images/bucket.png" width="460" align="right">

 Shown to the right is the GCP WebUI to set 'access control model' for a bucket.

 Note that you can set model for access control and also the type of encyrption key storage for your bucket.

 You can also set a retention policy for the files in the bucket if you wish.

 -----

### How to verify you've done it
 - UPLOAD file(s) to the bucket using the web console (example shown below) --or--
 - SCRIPT upload using the `gsutil` tool - [link](https://cloud.google.com/storage/docs/gsutil) --or--
 - SCRIPT updload using the `gcloud storage` tool - [link](https://cloud.google.com/blog/products/storage-data-transfer/new-gcloud-storage-cli-for-your-data-transfers)

 [![upload](/images/upload.png)]()

----

### 📺 Click below to see Lynn's 'Use Cloud Storage buckets' 10 min video
[![Cloud Storage Buckets - Google Cloud Platform for Bioinformatics](http://img.youtube.com/vi/_O2Lxc0UsNc/0.jpg)](http://www.youtube.com/watch?v=_O2Lxc0UsNc "Cloud Storage buckets - Google Cloud Platform for Bioinformatics")

### Other Things to Know
 - Work with files in buckets in a number of ways:
   - Click in GCS WebUI / console --or--
   - Authorized clients connect via `gsutil`, ex. `gs://demo-for-github` --or--
   - Authorized clients connect via an http call, ex. `https://console.cloud.google.com/storage/browser/demo-for-github`
 - Design file archiving processes, i.e. move to nearline or coldline if not accessing or over time (i.e. monthly...)
 - Delete files generated during processing (often called intermediate files) that are no longer needed when jobs complete
 - Read about 'requestor pays' Cloud Storage feature - [link](https://cloud.google.com/storage/docs/requester-pays)

### Tools to Improve File Uploading
 - 📘 Use Parallel Composite File Uploads - [link](https://cloud.google.com/storage/docs/gsutil/commands/cp#parallel-composite-uploads)
 - 📘 Use the htsget protocol to access genomic data in GCP - [link](https://cloud.google.com/genomics/docs/how-tos/reading-data-htsget)
 - 📘 Use Cloud Storage FUSE to mount Cloud Storage buckets as file systems on Linux or macOS systems in GCP - [link](https://cloud.google.com/storage/docs/gcs-fuse)
 - :octocat: Do incremental uploads from Illumina Sequencers to GCS - [link](https://github.com/broadinstitute/sequence-upload-to-gs)

### Learn More & Best Practices
 - 📘 See examples of common genomic file types (i.e. FASTQ, BAM, VCF... ) - [link](https://github.com/lynnlangit/gcp-for-bioinformatics/blob/master/4_FILE-TYPES.md)
 - 📘 See Best practices for Google Cloud Storage from Google - [link](https://cloud.google.com/storage/docs/best-practices)
 - 📘 See Best practices for Google Cloud Storage from ISB-CGC - [link](https://isb-cancer-genomics-cloud.readthedocs.io/en/latest/sections/BestPractices.html#best-practices)
 - 📘 Learn how to host a static website on Cloud Storage - [link](https://cloud.google.com/storage/docs/hosting-static-website)

repository: lynnlangit/gcp-for-bioinformatics

branch_name: refs/heads/master

extension: md

gha_language: Jupyter Notebook

license_type: permissive

repo_name: lynnlangit/gcp-for-bioinformatics


text:
# M3u8 Downloader
A multithread m3u8 download module and the number of threads can decide by yourself. using how many threads is decide by your network and your device.

## 1. Install

```shell
pip install mder
```

## 2. Import

```python
import mder
```

## 3. Instance object and start download

```python
downloader = mder.m3u8_downloader(m3u8_file_path='./test.m3u8',temp_file_path='./',mp4_path='./test.mp4',num_of_threads=10)
# parameters
# 1.m3u8_file_path
# default : no default   (type : str)
# 2.temp_file_path
# default : '.'          (type : str)
# 3.mp4_path
# default : './test.mp4' (type : str)
# 4.num_of_threads
# default : 10           (type : int)

downloader.start()
# parameters
# 1.mod
# default : 0            (type : int)
# mod 0 means delete TS folder and m3u8 file if download completely
# mod 1 means delete m3u8 file only if download completely
# mod 2 means delete TS folder only if download completely
# mod 3 means reserve TS folder and m3u8 file if download completely
# 2.time_out
# default : 60           (type : int)(units : seconds)
# The time_out is the timeout in request.get(timeout=)
```

**before download**

the structure of ./ is:
```
.
├── test.m3u8
└── test.py
```

**when it is downloading**

the structure of ./ is:
```
.
├── TS
│   ├── qzCFnDUZE9_720_5308_0000.ts
│   ├── qzCFnDUZE9_720_5308_0001.ts
│   ├── qzCFnDUZE9_720_5308_0002.ts
│   ├── qzCFnDUZE9_720_5308_0003.ts
│   ├── qzCFnDUZE9_720_5308_0004.ts
│   ├── qzCFnDUZE9_720_5308_0005.ts
│   ├── qzCFnDUZE9_720_5308_0006.ts
│   ├── qzCFnDUZE9_720_5308_0007.ts
│   ├── qzCFnDUZE9_720_5308_0008.ts
│   ├── qzCFnDUZE9_720_5308_0009.ts
│   └── qzCFnDUZE9_720_5308_0010.ts
├── test.m3u8
└── test.py
```
process bar:  <<\*>>  29% 500/1752 [01:33<04:02] <<\*>>

TS is temp folder, all .ts file are in it. The path of it is %temp_file_path%/TS, in the test case, it is in ./TS. If the mission is not complete, the m3u8 file and TS folder will be reserved, you can instance a new downloader with corresponding TS folder and m3u8 file, and use the start() function to begin, in this way, the mission will go on.

**after download and download successfully**

the structure of ./ is:
```
.
├── test.mp4
└── test.py
```

If some .ts download failed, the module will redownload for 3 times, and the information will print to the command line

at last, the command line is like this:
```
<<*>>  99% 1737/1752 [05:35<00:22] <<*>>
thread0 Time out ERROR qzCFnDUZE9_720_5308_1710.ts
thread2 Time out ERROR qzCFnDUZE9_720_5308_1722.ts
thread0 redownload successfully qzCFnDUZE9_720_5308_1710.ts
<<*>>  99% 1738/1752 [06:20<03:19] <<*>>
thread2 redownload successfully qzCFnDUZE9_720_5308_1722.ts
<<*>> 100% 1752/1752 [06:26<00:00] <<*>>
downloading finished 100.00%
```
## 4.restart
If you want to restart a incomplete mission, you only should use the corresponding TS folder and .m3u8 file

license: MIT


text:
---
template: PracticePage
title: Neck Injuries
status: Published
date: 2018-05-25
featuredImage: /images/serious-personal-injury.jpg
excerpt: This is placeholder text that our web designers put here to make sure
  words appear properly on your website. This text is going to be replaced once
  the website is completed. You are currently reading text that is written in
  English, not any other language.
categories:
  - category: Spinal Cord Injuries
meta:
  description: This is a meta description.
  title: Neck Injuries
---
<iframe width="560" height="315" src="https://www.youtube.com/embed/YtZHKpS2BFI" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

<!--StartFragment-->

The neck is the connecting bridge between the spine and the brain. Seven bony vertebrae with cartilaginous disc pads act as cushions between each vertebra of the neck. Â Neck injuries can be devastating to this important part of your body.

<!--EndFragment-->

<!--StartFragment-->

Injuries most often affect the soft tissue muscles and ligaments. Trauma can damage the soft discs between vertebrae. Larger traumatic forces can damage the bony parts of the vertebra causing an even more [severe injury](/practice-areas/serious-personal-injury/). Neck injuries are often caused by [motor vehicle accidents](/practice-areas/car-accident-lawyers/), contact sports, or a [fall injury](/practice-areas/slip-and-fall-injury-lawyers/). [Head](/practice-areas/brain-injury-lawyers/), neck and [shoulder injuries](/practice-areas/austin-shoulder-injury-lawyer/) often occur together.

## Types Of Neck Injury And Pain

To begin with, any neck pain should attended to immediately. Damage or strain to the neck will often cause harm to some other part of your body. Often a person with a neck injury will overcompensate for the original pain. This may cause strain or damage something else.  If the injury was due to trauma, that can be a mistake.

Neck pain can be a symptom of several different kinds of neck injury possibilities. Usually, after a trauma induced injury, the pain will not appear for several days. That is because of the swelling of the soft tissue.

A physical examination by your physician, as well as x-rays, ultrasounds, and even an MRI, may be needed to determine the exact cause of the pain.

<!--EndFragment-->

<!--StartFragment-->

## Neck Injuries, Spinal Injuries, and Car Accidents

[Cervical spinal cord injuries](/practice-areas/austin-spinal-cord-injury-lawyers/) are those that impact the neck area of the spine. The seven vertebrae in the neck connect the head to the body but are the smallest of all the vertebral bones. This means the chances of suffering a cervical spinal cord injury is higher among all other spinal injuries. Car accidents account for almost half of all neck injuries.

### Neck Injuries and Strains

It is estimated that each year there are more than 1 million [whiplash injuries](/faq/whiplash-injuries/). These cervical spinal cord injuries usually affect the lower neck vertebral bones and soft tissues surrounding them.

Immediate signs of cervical spinal cord injuries include a headache, stiffness, restriction of motion, and pain. [Severe cervical spinal injuries](/practice-areas/serious-personal-injury/) can cause tingling in the arms or hands, numbness, [radiating pain](/practice-areas/radiating-pain/), or [paralysis](/practice-areas/paraplegia-injury-attorney/) as in cases of [spinal fractures](/practice-areas/broken-bone-injury-attorneys/).

<!--EndFragment-->

<!--StartFragment-->

### Misunderstood Cervical Spinal Cord Injuries

Cervical spinal cord injuries resulting in massive strain on the neck are commonly known as whiplash. These neck injuries and their effects are widely misunderstood and often overlooked.

Insurance companies have historically classified whiplash and cervical cord injuries involving strains as a fabricated injury or a minor/lesser damage. The logic used was that minor vehicle damage means minor physical injuries.

The reality is that whiplash and other neck injuries can occur both at [low speeds and in minor crashes](/practice-areas/soft-tissue-damage-attorneys/). The disproportionate masses of the head and body to your relatively thin neck cause it to “whip” out of its normal range of motion during most car accidents, regardless of vehicle damage.

Women and children are more susceptible to strained neck injuries, and symptoms of milder strains and neck injuries can be delayed. Therefore, victims should always see a doctor help them identify symptoms and to diagnose and treat cervical spinal cord injuries as soon as possible.

It is also common for someone suffering a neck injury due to trauma to also have [back pain](/practice-areas/austin-back-injury-lawyers/).

<!--EndFragment-->

<!--StartFragment-->

### Types of Neck Injuries

**Crick in the Neck**: The term crick or kink describes the morning pain associated with sleeping in an awkward position. It can also occur from working for too long in an immobile position, as well as sudden, sharp movements of the neck during sports or accidents. This is not an actual medical diagnosis, even though the reason behind it may be. Arthritis, muscle spasms, and even a spinal disc condition may be the cause of this kind of neck pain.

**Muscle Strain**: Strains usually occur as an injury to the muscles along the spine. While it may manifest in the neck, the actual damage may be in the lower back instead. The symptoms of this condition will often include muscle spasms, reduced flexibility, and pain.

**Neck Sprain**: Sprains are caused by injuries to the ligaments. This can be due to falls or sudden twists that can overload or stress the joints. Symptoms of a neck sprain can include swelling, reduction in flexibility and pain.

**Pinched Nerve in Neck**: This condition is one of the most difficult actually to diagnose. Assessing nerve pain is not always straightforward because the actual damage could be further along the nerves than the area where the pain is felt, especially when dealing with nerves so close to the spine.

**Whiplash Injury**: Whiplash-associated disorders is a set of symptoms that occur following any incident where the head is thrown forward, backward, or side-to-side, especially in car accidents.

**Herniated Discs**: Recurrent neck and back pain may be a sign that you have a [herniated disc](/practice-areas/herniated-disk/). This happens when the soft material covering a spinal disc is damaged, worn, or pushed out.

**Aging**: Simply growing older often causes unexplained neck pain that may be due to arthritis, cervical dislocation, or spinal stenosis. As we age, our bones grow thicker in some places and weaker in others. The elderly are especially vulnerable to trauma induced neck injuries.

<!--EndFragment-->

<!--StartFragment-->

### Causes of Common Neck Injuries

There are few parts of the body more sensitive to injury than the neck. In some ways, our necks are remarkably stable: in many places, people balance heavy jars and baskets on their heads every day. But sudden trauma, such as car accidents and slips and falls, can subject the neck to forces it cannot withstand. Damage to the muscles and tissues of the neck can cause disability, while [damage to the spinal column can be fatal](/practice-areas/wrongful-death-attorney/) or lead to paralysis.

Slips, trips, and falls are among the most common causes of neck injuries. Falling on a hard floor, for example, can result in a person’s head and neck hitting the ground forcefully at an unusual angle. Trips and falls, even from short distances, can also cause severe head and neck injuries.

Car accidents are also a leading cause of neck injuries. Whiplash injuries are a common result of rear-end collisions. Whiplash occurs when a sudden shock causes a person’s head to whip back and forth rapidly.

<!--EndFragment-->

<!--StartFragment-->

## Responding to Neck Injuries

If we take the word ‘injury’ to refer to all medical conditions that cause discomfort or pain in the neck, many of us are ‘injured’ every day. The stresses of contemporary life are so great that neck cramps and strain are an everyday thing for millions of Americans. These minor afflictions, far from life-threatening, can be treated with the help of relaxation techniques, exercise, pain killers, and muscle relaxants.

Not all spinal fractures result in paralysis. Any broken vertebra, however, poses a serious risk: mishandling of a patient can cause nerve damage even in cases where the spinal cord was intact. For this reason, it’s imperative that you never move someone who you suspect might have a neck injury.

‘Whiplash’ describes a neck injury, commonly the result of car collisions (especially rear-end collisions) and sports injuries. The head is forced to extend back and forth beyond its normal range of motion in a very small amount of time. Even if it’s not as life-threatening as a neck fracture, whiplash is still a serious injury and requires medical treatment. Whiplash injuries can last a lifetime.

Common symptoms of whiplash include:

* Headaches
* Pain in the arms and shoulders
* Fatigue and dizziness
* Ringing in the ears
* Poor concentration and sleep disturbance

Anyone who has been in a rear-end car collision and is feeling the effects of a neck injury should seek medical attention. After an accident, you should visit a clinic or hospital to get checked out. Sometimes the full effects of whiplash are partially or entirely delayed, only taking effect hours or days after the accident. Only a doctor can determine the extent and severity of an injury and recommend treatment.

If you’ve been injured in a car wreck due to someone else’s carelessness, feel free to contact the neck injury lawyers at The Traub Law Office at<PHONE_NUMBER> or by filling in the form below.

<!--EndFragment-->

repository: emmadigital/austinlaw

gha_language: JavaScript

gha_license_id: MIT

repo_name: emmadigital/austinlaw


text:
---
title: SAP Concur Developer Center - API Release Notes, March 2021
layout: reference
---
# API Release Notes, March 2021

## Contents

* [Ongoing: Retirement and Decommission of Existing Concur Request APIs (v1.0, v3.0, v3.1)](#ongoing-request-retirement)
* [Ongoing: Retirement of List v1 API](#ongoing-list-retirement)
* [Planned Changes: Deprecation of Travel Profile Notification v1 API](#travel-profile-deprecation)
* [Planned Changes: Deprecation of List v3 API](#planned-list-deprecation)
* [Planned Changes: Deprecation of List Item v3 API](#planned-list-item-deprecation)
* [Planned Changes: Identity v4 API Available](#planned-identity-v4)
* [Planned Changes: Cash Advance v4 API Available](#planned-cash-advance-v4)
* [Planned Changes: Comments v4 API Available](#planned-comments-v4)
* [Planned Changes: Event Subscription Service API Available](#planned-ess-v4)
* [Planned Changes: Expense v4 API Event Subscription Service Topic Available](#planned-expense-ess)
* [Planned Changes: Travel Profile v2 Canonical Value Changes](#planned-travel-profile-v2-canonical)
* [Application Connector Setup Update](#application-connector)
* [Submitted Report PATCH for Expenses v4 API Available](#expenses-PATCH)
* [Changes to Hotel Service Search v2](#hotel-service-v2)
* [Changes to Travel Profile v2](#travel-profile-v2)
* [Exchange Rate v4 API Available](#exchange-rate-v4)

## Ongoing: Retirement and Decommission of Existing Concur Request APIs (v1.0, v3.0, v3.1)

Effective July 1, 2020, SAP Concur has retired the Concur Request APIs (v1.0, v3.0, and v3.1). These APIs are replaced by the Concur Request v4 API.

### Business Purpose / Client Benefit

The Concur Request APIs v1.0, v3.0, and v3.1 only support the previous authentication method, which is not best security practice and does not meet the Oauth2 standards. In addition, the previous versions of the Concur Request APIs provided limited possibilities for moving a Request through the approval workflow, as well as managing custom simple & connected list fields. These issues are resolved with the new Concur Request v4 API.

In addition, SAP Concur has run a backward compatibility project between the current Concur Request APIs and the new Concur Request v4 API (not iso-compatibility) in order to have the vast majority of use cases managed in the previous versions also be managed in the Concur Request v4 API.

## Ongoing: Retirement of List v1 API

Effective July 15, 2021, SAP Concur will retire the List v1 API, so it will not be supported after that date. This API is replaced by the [List v4](https://developer.concur.com/api-reference/common/lists/v4.list.html) API.

### Business Purpose / Client Benefit

This update removes an outdated API. The List v4 APIs use more secure and modern, fine-grained methods. These APIs use Universal Unique Identifiers (UUIDs) and use JSON instead of XML. Also, authentication to the List v4 APIs may be performed with a User JWT or a Company JWT, providing the opportunity to apply the principle of least privilege.

### Configuration / Feature Activation

The List v1 API is being retired in accordance with the [SAP Concur API Lifecycle & Deprecation Policy](https://developer.concur.com/tools-support/deprecation-policy.html).

If you currently use the List v1 API, please plan to migrate to the List Item v4 API as soon as possible.

## Planned Changes: Deprecation of Travel Profile Notification v1 API

SAP Concur is deprecating the Travel Profile Notification v1 APIs due to low usage.

### Business Purpose / Client Benefit

The Travel Profile Notification v1 APIs support older, less secure authentication methods.

### Configuration / Feature Activation

The Travel Profile v1 APIs are being deprecated in accordance with the [SAP Concur API Lifecycle & Deprecation Policy](https://developer.concur.com/tools-support/deprecation-policy.html).

## Planned Changes: Deprecation of List v3 API

Effective April 16, 2021, SAP Concur will deprecate the List v3 API. This API is replaced by the [List v4](https://developer.concur.com/api-reference/common/lists/v4.list.html) API. List v3 is planned to be retired in July 2021.

### Business Purpose / Client Benefit

This update removes an outdated API. The List v4 APIs use more secure and modern, fine-grained methods. These APIs use Universal Unique Identifiers (UUIDs) and use JSON instead of XML. Also, authentication to the List v4 APIs may be performed with a User JWT or a Company JWT, providing the opportunity to apply the principle of least privilege.

### Configuration / Feature Activation

The List v3 API is being deprecated in accordance with the [SAP Concur API Lifecycle & Deprecation Policy](https://developer.concur.com/tools-support/deprecation-policy.html).

If you currently use the List v3 API, please plan to migrate to the [List v4](https://developer.concur.com/api-reference/common/lists/v4.list.html) API as soon as possible.

## Planned Changes: Deprecation of List Item v3 API

Effective April 16, 2021, SAP Concur will deprecate the List Item v3 API. This API is replaced by the [List Item v4](https://developer.concur.com/api-reference/common/list-item/v4.list-item.html) API. List Item v3 is planned to be retired in July 2021.

### Business Purpose / Client Benefit

This update removes an outdated API. The List Item v4 APIs use more secure and modern, fine-grained methods. These APIs use Universal Unique Identifiers (UUIDs) and use JSON instead of XML. Also, authentication to the List Item v4 APIs may be performed with a User JWT or a Company JWT, providing the opportunity to apply the principle of least privilege.

### Configuration / Feature Activation

The List Item v3 API is being deprecated in accordance with the [SAP Concur API Lifecycle & Deprecation Policy](https://developer.concur.com/tools-support/deprecation-policy.html).

If you currently use the List Item v3 API, please plan to migrate to the [List Item v4](https://developer.concur.com/api-reference/common/list-item/v4.list-item.html) API as soon as possible.

## Planned Changes: Identity v4 API Available

The Identity v4 service will enable callers to create, read, update, and delete a user’s core/identity profile information.

### Business Purpose / Client Benefit

With granular access control, this API can be used access to user’s profile information on a need-to-know basis.

## Planned Changes: Cash Advance v4 API Available

The Cash Advance API will empower an employee to request and receive cash in advance of a trip. Cash Advance will ensure that a user is not out of cash during a business trip. In markets where corporate cards are seldom issued, Cash Advance will provide a useful mechanism to ensure the employee is not out of pocket.

### Business Purpose / Client Benefit

SAP Concur Cash Advance API will provide partners and customers the ability to manage cash advances. While using the API, customers can create, view, and issue a cash advance. The API will help customers to customize the usage of cash advances according to their needs.

## Planned Changes: Comments v4 API Available

SAP Concur will be introducing a new API to provide comments data. Customers and partners will be able to read the data recorded in the comments at the report and expense level.

### Business Purpose / Client Benefit

Employees and approvers use comments to record an exception with respect to a spend policy or reasons for approving an expense that would normally not be allowed. This data can be beneficial for audit and compliance partners who are flagging these expenses for review, thereby creating false positives for downstream approvers.

## Planned Changes: Event Subscription Service API Available

The Event Subscription Service (ESS) is part of Event Driven Architecture in the SAP Concur platform. It will allow clients and partners to be notified through webhooks when certain actions take place in any business workflow. When the business or system event occurs, ESS will send that event to the configured endpoint with the relevant information.

### Business Purpose / Client Benefit

Subscribing to a SAP Concur topic will be the best way to integrate business workflow with SAP Concur. If you already have an integration with SAP Concur, ESS will allow you to move from an API polling pattern to an Event Driven approach in order reduce reaction time on your user's or customer's actions within SAP Concur products.

## Planned Changes: Expense v4 API Event Subscription Service Topic Available

Concur Expense will be introducing a Report Status Changed event using the Event Subscription Service API on the `public.concur.expense.report` topic. Customers and partners will be able to subscribe to events that will be published as the report traverses through the workflow.

### Business Purpose / Client Benefit

Notification when a report is at a workflow step avoids the need for a client to keep polling via APIs at regular intervals to identify reports that are in a particular status. The event message bus is a reliable medium for receiving these notifications and will simplify the sequence of calls required to complete the use cases for clients and partners.

## Planned Changes: Travel Profile v2 Canonical Value Changes

Currently, SAP Concur does not enforce any validation for the `NamePrefix`, `NameSuffix`, and `PreferredLanguage` fields. SAP Concur will begin enforcing canonical values for these three fields, in two phases:

  * In April 2021, existing values that are not on the list of canonical values for these three fields, will be returned to callers of the GET requests as empty strings.
  * In May, 2021, any updates to these three fields that do not conform to the lists of canonical values, will be set as an empty string in the user’s profile, and the API will return an error.

Updates to other user profile fields will not be affected.

For more information, refer to the [Travel Profile v2 API Travel Service Guide](https://developer.concur.com/api-reference/travel-profile/v2.profile-resource.html#General).

### Business Purpose / Client Benefit

Reduction of risk in sharing personal data in unintended ways. More consistent user data will result in better stability and fewer escalations.

### Configuration / Feature Activation

This feature is enabled by default. There are no configuration steps

## Application Connector Setup Update

As of February 20, 2021, the application connector (used for callouts) registration process requires that usernames and passwords are at least 10 characters and less than 50 characters. Usernames and passwords length standards will be enforced for new application connectors or if updates are made to the username or password of an existing application connector.

Clients who already have application connectors registered need to update their usernames and passwords by May 31, 2021, if the new standards are not currently met.

### Business Purpose / Client Benefit

Enforcing password and username length restrictions improves the security standards for the callouts.

### Configuration / Feature Activation

Callouts are activated through the Application Connector Registration process through Web Services.

Usernames and passwords for application connectors are managed through the **Manage Application Connector** administration screen. Note: after usernames and passwords are updated, a successful Test Connection request is required to set the connector to **Verified** before it can be used for any of the callout services. For steps on how to access the screen where usernames and passwords are set, please refer to the [Modifying an Application Connector Registration](https://developer.concur.com/api-reference/callouts/callouts-application-connectors.html#modifying-app-connector-reg) page.

## Submitted Report PATCH for Expenses v4 API Available

In order to delineate the modifications possible on an unsubmitted report and a submitted report, the Expenses v4 API is releasing a new PATCH operation with the restricted attributes that can be modified on a submitted report.

### Business Purpose / Client Benefit

The PATCH operation provides the ability to take a different approach to update expenses by third party applications. You are now be able to send only the attributes that require updating in the request body without addressing other values that might exist on the expense. In addition, the restricted scope of attributes allows modifications on an expense in a submitted report, which was not supported in prior versions.

## Changes to Hotel Service Search v2

As of Feb 16, 2021, a new `TPA_PropertyReferenceInfo` TPA Extension node has been added to the Hotel Service Search Response. This node is used to support additional property reference details.

For additional information, please see [Hotel Service Search](https://developer.concur.com/api-reference/direct-connects/hotel-service-2/Search.html#res-tpa-extensions).

### Business Purpose / Client Benefit

The new `TPA_PropertyReferenceInfo` node supports additional property reference data to enable the display of UI features within Hotel Search, for example, Corporate Discounts Notes.

### Configuration / Feature Activation

The new TPA Extension is available as part of the Hotel Service v2 API.

## Changes to Travel Profile v2

Previously the `HasNoPassport` field was set automatically by SAP Concur. With this change, SAP Concur allows callers with the Passport Visa Information Scope to set this field directly.

For more information, please see the [Travel Profile v2 HasNoPassport](https://developer.concur.com/api-reference/travel-profile/v2.profile-resource.html#schema-HasNoPassport) schema.

### Business Purpose / Client Benefit

Users who have their passport information provided by a system (e.g. their employer’s Human Resources or TMC) will have the `HasNoPassport` flag correctly set and correctly displayed in the User Profile UI.

### Configuration / Feature Activation

This feature is enabled by default. There are no configuration steps.

## Exchange Rate v4 API Available

The Exchange Rate Broker API provides the capability for users to load custom exchange rates for a company.

### Business Purpose / Client Benefit

Clients who wish to keep exchange rates in sync with their internal exchange rates, or must populate certain exchange rates from specific sources can load these rates at their convenience via the API functionality. This precludes the need for batch jobs to be set up, scheduled, and executed at specific times. This functionality also supports capability to load a subset of rates and keep the externally sourced SAP Concur rates for the remainder of rates.

branch_name: refs/heads/preview


text:
# InboundLinkErrors

[![Build status](https://ci.appveyor.com/api/projects/status/u3267xahfofk77y5?svg=true)](https://ci.appveyor.com/project/patrickdemooij9/inboundlinkerrors)

Inbound link errors is a simple Umbraco Back-Office package that tracks 404 responses so that you can add a redirect to them. It includes a dashboard in Umbraco where the user is able to add it as a new redirect, delete it or hide it.
Utilizes [ngTable](https://github.com/esvit/ng-table) for an AngularJs driven data table which includes ordering by column, simple pagination and searching.
Links are only tracked at the end of the pipeline and if the request resulted in a 404 response.

The dashboard for the inbound link errors has multiple filters that can be used:
- No filters: All non-media, non-hidden inbound link errors are shown.
- Media filter: Only media (all links having an extension) are shown.
- Hidden filter: Links that are hidden and non-hidden are shown.

InboundLinkErrors uses batching and only processes the 404 requests in bulk. This means that the system uses a lot less SQL queries and is a lot more efficient.

# Getting Started
Download the nuget package: ` Install-Package InboundLinkErrors ` or install it through Umbraco packages. After installing, make sure the following two lines can be found in your Web.config. Without it, the application will **not** be able to track your 404 responses.
```xml
<configuration>
   ...
  <system.webServer>
      ...
    <modules>
      ...
      <remove name="LinkErrorsHttpModule"/>
      <add name="LinkErrorsHttpModule" type="InboundLinkErrors.Core.LinkErrorsHttpModule, InboundLinkErrors" />
    </modules>
  </system.webServer>
</configuration>
```

# Configuration
There are various configuration that you can setup in your web config app settings. Simply add the following to your appsettings to change any of the configuration values:
```xml
<configuration>
   ...
   <appSettings>
      ...
      <add key="[Config key]" value="[Config value]" />
   </appSettings>
</configuration>
```

The configuration options are as follows:
- **InboundLinkErrors.TrackUserAgents (bool)**: Determines if user agents should be tracked. Even if this is turned off, the system will create tables for it. Default value: true
- **InboundLinkErrors.TrackReferrer (bool)**: Determines if referrers should be tracked. Even if this is turned off, the system will create tables for it. Default value: true
- **InboundLinkErrors.TrackMedia (bool)**: Determines if media is tracked. Disabling this will also get rid of the media filter on the overview. Default value: true
- **InboundLinkErrors.SyncStartupTime (int)**: Time in ms for sync task to start. The sync task is used to sync all 404 requests to the database. Default value: 60000 (1 min)
- **InboundLinkErrors.SyncInterval (int)**: Time in ms between syncs. Default value: 300000 (5 min)
- **InboundLinkErrors.CleanupStartTime (int)**: Time in ms for the cleanup task to start. The cleanup task is used to clean up any old 404 requests. Default value: 600000 (10 min)
- **InboundLinkErrors.CleanupInterval (int)**: Time in ms between the cleanups. Default value: 14400000 (4 hours)
- **InboundLinkErrors.CleanupAfterDays (int)**: Days after which old requests are cleaned up. Default value: 30

By default, the plugin will write your new redirects to the Url tracker of Umbraco. You are however able to change this to with any of the following packages:

### [SimpleRedirects](https://github.com/patrickdemooij9/SimpleRedirects)
If you want to connect the InboundLinkErrors to the SimpleRedirects plugin, you can download the following nuget package:  ` Install InboundLinkErrors.SimpleRedirects `. This will connect the InboundLinkErrors package to the SimpleRedirects package.

### [Skybrud Umbraco Redirects](https://github.com/skybrud/Skybrud.Umbraco.Redirects)
Currently work in progress!

# Features
- Simple dashboard which lets you manage your inbound link errors
- Ordering on the amount of hits, url and last hit time
- Searching on different urls
- Easy way to add redirects on the hit 404 pages
- Hide unwanted 404 pages
- Easily track what user-agents and/or referrers are causing your 404 pages

# Usage
InboundLinkErrors is located at the content section as one of the dashboards. When clicking on the dashboard called "Link errors", you'll be taken to the dashboard of InboundLinkErrors.

Once arrived, you'll usually see nothing in the table yet. This is probably because no requests with a 404 response have been made yet. When a 404 response is given, InboundLinkErrors will track it in the dashboard. You also have the option to filter on Hidden and Media requests.
![Dashboard](https://raw.githubusercontent.com/patrickdemooij9/InboundLinkErrors/master/package/InboundLinkErrors.PNG)

When a 404 response is tracked, you'll be able to perform 3 actions on it:
- Set Redirect: This allows you to redirect the given url to a different page on your website.
- Delete: This deletes the tracked 404 url. You can use this if you believe the page doesn't get used anymore.
- Hide: This will hide the tracked 404 url. You can use this when the url is most likely visited by a bot and is therefore not of use for you.

![Create redirect](https://raw.githubusercontent.com/patrickdemooij9/InboundLinkErrors/master/package/InboundLinkErrors2.PNG)

# Test website
You can run the website located in the project. You can use the following credentials to log in to the backoffice:
Email<EMAIL_ADDRESS>Password: Password123!

**Support:** [Issues/feature tracker](https://github.com/patrickdemooij9/InboundLinkErrors/issues)


text:
---
layout: post
title: Get Started with Grunt
date: "2014-03-31 10:00:00"
comments: false
image: get-started-with-grunt-header.jpg
tags:
- development
- tutorial
- front-end-development
- grunt
---

Grunt has become an essential part of my workflow—like Sass, I never start a web project without it. Here’s an introduction to Grunt, its benefits and what it can do for you along with a guide to help you get started.

## What is Grunt? Why should consider using it?

Think **automation**. Grunt is designed to speed up and automate repetitive, mundane tasks like compilation, concatenation, minification, testing, etc.

Grunt has saved me countless hours and headaches, has exponentially sped up my process, and has made my work much easier. If used rightly, it can do the same for you.

It also has an active community with a strong ecosystem that provides hundreds of plugins to automate just about anything you’d want.

## What can you do with Grunt?
With hundreds of plugins, the choices are endless; however, here are a few tasks I rely on that you may find valuable.

**Compile Sass/Less**
Compile Sass or LESS, and also easily integrate mixin libraries like Bourbon or frameworks like Compass, Bootstrap, or Foundation.

**Concatenate/Merge**
Merge multiple JavaScript and/or CSS files together to minimize http calls and optimize your site.

In instances where it’s important that your files load in a specific, linear order, you can specify the order in which you want the files merged.

**Detect JavaScript errors**
Detect errors and even potential bugs or problems in your JavaScript so you can focus more on your code and less on things like typos and syntax errors.

**Minify**
Minify your CSS and JavaScript files, reducing file size and making them faster to download.

In development, I prefer to have my CSS and JavaScript fully expanded to make debugging easier, but I always minify my CSS and JavaScript before I deploy to production.

*Here’s where Grunt really begins to shine...*

**Combine tasks with aliases**
Run a set of tasks in a specific order (like a macro) with an "alias task.""

To prepare my site for deployment, I do the following:

1. Clean temporary folders
2. Compile Sass
3. Minify CSS
4. Concatenate JavaScript
5. Uglify JavaScript
6. Build Jekyll

With Grunt, I can run all 6 tasks with one command.

**Watch for changes**
Watch your files for any changes, and when a change has been detected, run a task or set of tasks.

For example, if there’s a file that’s a merge of 3 JavaScript files, Grunt can reconcatenate them automatically every time you save a change so you don’t have to do it manually.

**Run multiple watch tasks concurrently**
Run multiple watch tasks simultaneously with an alias task instead of having multiple Terminal windows open for each watch task.

***

## Getting started

Now that you’re ready to get your hands dirty with Grunt, I’ll run you through the steps to install Grunt as well as a tour of its anatomy and some of the ins-and-outs.

### Install Node.js

Download and install the latest version of Node.js at nodejs.org/download

Grunt is installed and managed by npm, Node.js’s package manager. npm is installed with Node.js so there’s no need to worry about that.

### Install Grunt’s CLI (command line interface)

Run the following command in your command line.

```bash
npm install -g grunt-cli
```

*You may have to run it with `sudo` if you’re getting errors.*

## Setting up a new project with Grunt

A typical Grunt project consists of two files: `package.json` and `Gruntfile.js`.

- `package.json` - metadata for projects as well as listing Grunt and its necessary plugins your project needs.
- `Gruntfile.js` - configuration that loads and defines tasks.

### package.json

There are multiple ways to create a `package.json` file, but for this guide we’ll be creating one manually.

Create and save your `package.json` file in the root directory of your project by using the following example:

```json
{
  "name": "sample-project",
  "version": "0.0.1",
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-contrib-concat": "^0.3.0",
    "grunt-contrib-uglify": "^0.4.0",
    "grunt-contrib-watch": "^0.6.1"
  }
}
```

### Installing dependencies

In your command line, navigate to your project directory and run the following* :

```bash
npm install
```

This will install all of the required dependencies into your project. (Take notice that a `node_modules` directory was created)

* From here on out, assume that commands are to be run in your command line and in your project directory.

### Adding a dependency

If you want to add another plugin, you can do it one of two ways:

**Method #1**
Replacing `name-of-plugin` with the appropriate plugin name, run this:

```bash
npm install name-of-plugin --save-dev
```

This will install the latest version of the plugin. The `--save-dev` flag will add the appropriate line to your `package.json` file.

**Method #2**
Add another line of json to your `package.json` file inside of `devDependencies`, like such:

```json
  "devDependencies": {
    ...
    "grunt-contrib-concat": "^0.3.0",
    "name-of-plugin": "^x.x.x"
  }
```

Then run the following to install the plugin you added:

```bash
npm install
```

A quick note about setting the version of your dependency: A tilde ( ~ ) will match the most recent minor version, a caret ( ^ ) will match the most recent major version, and neither will lock the version down.

- **~1.2.3** will match the latest version of 1.2.x but skip anything >= 1.3.x.
- **^1.2.3** will match the latest version of 1.x.x but skip anything >= 2.x.x.
- **1.2.3** will only match 1.2.3 and skip anything else.
- **latest** will always install the latest version. (Be careful with this)

### Grunfile.js

This is where you load your Grunt plugins, configure tasks, and set custom tasks. Create a `Gruntfile.js` file in the root directory of your project using this example:

```js
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      options: {
        banner: '/*! <%= pkg.name %> */',
      },
      dist: {
        src: ['js/file1.js', 'js/file2.js'],
        dest: 'js/build.js',
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-concat');

  grunt.registerTask('default', ['concat']);
};
```

All of your Grunt code needs to be inside `module.exports = function(grunt) {...};`

**Configuring tasks**
Tasks are configured inside `grunt.initConfig({...});` like such:

```js
grunt.initConfig({
  pkg: grunt.file.readJSON('package.json'),
  concat: {
    options: {
      banner: '/*! <%= pkg.name %> */\n',
    },
    dist: {
      src: ['js/file1.js', 'js/file2.js'],
      dest: 'js/build.js',
    }
  }
});
```

Here we’re configuring the `concat` task, where we’re setting the option, `banner`, and configuring the subtask, `dist`, to concatenate `file1.js` and `file2.js` into one file, `build.js`.

Based on the plugin, configuring can be slightly different, so it’s important that you read the documentation to see what can be configured and how to configure it.

**Loading plugins**
Now that you’ve configured the `concat` task, you have to load the plugin or Grunt will not recognize the task.

```js
grunt.loadNpmTasks('grunt-contrib-concat');
```

**Configuring the default task**
Grunt has a default task that is triggered by running the following command:

```bash
grunt
```

You can also run `grunt default`. You can configure the default task to run the command of your choice.

```js
grunt.registerTask('default', ['concat']);
```

**Configuring custom tasks**
You can also configure custom tasks, which is done in the same manner as the default task. You’ll pass your task name in the first parameter and one-or-more tasks in the second parameter as an array.

```js
grunt.registerTask('customtaskname', ['task1', 'task2', 'task3']);
```

**Running tasks**
Once tasks, the default task, and custom tasks have been configured, you can run them as such:

```bash
grunt
grunt concat
grunt customtaskname
```

If you have more than one subtask for a task, running `grunt taskname` will run all the subtasks in linear order. However, if you want to run a specific subtask:

```bash
grunt taskname:subtaskname
```

This is a great way to break up your tasks so you can run specific tasks for specific scenarios, such as development vs production.

***

## Create a Sample Project

Now that you know the basic anatomy and setup of Grunt and its files, let’s go ahead and create a sample, working Grunt project. This sample project will cover Sass compilation and minification, JavaScript concatenation and minification, and watching for changes in your files.

### Set up project files

```text
sample-project
├── sass
├── └── screen.scss
├── src
│   ├── file1.js
├── └── file2.js
├── Gruntfile.js
├── index.html
└── package.json
```

**package.json**
```json
{
  "name": "sample-project",
  "version": "0.0.1",
  "devDependencies": {
    "grunt": "~0.4.2",
    "grunt-contrib-concat": "^0.3.0",
    "grunt-contrib-uglify": "^0.4.0",
    "grunt-contrib-watch": "^0.6.1",
    "grunt-sass": "^0.12.0"
  }
}
```

**Gruntfile.js**
```js
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
      dist: {
        src: ['js/file1.js', 'js/file2.js'],
        dest: 'dist/build.js',
      }
    },
    sass: {
      dist: {
        files: {
          'dist/screen.css': 'sass/screen.scss',
        }
      },
      production: {
        options: {
          outputStyle: 'compressed',
        },
        files: {
          'dist/screen.css': 'sass/screen.scss',
        }
      }
    },
    uglify: {
      dist: {
        src: 'dist/build.js',
        dest: 'dist/build.js',
      }
    },
    watch: {
      sass: {
        files: ['sass/**/*.scss'],
        tasks: ['sass:dist'],
      },
      scripts: {
        files: ['js/**/*.js'],
        tasks: ['concat'],
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-concat');
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-sass');

  grunt.registerTask('build', ['concat', 'sass:dist']);
  grunt.registerTask('default', ['concat', 'sass:dist', 'watch']);
  grunt.registerTask('production', ['concat', 'uglify', 'sass:production']);
};
```

**index.html**
```html
<html>
<head>
<link href="dist/screen.css" rel="stylesheet">
<script src="dist/build.js"></script>
</head>
<body>
<h1>Sample project</h1>
</body>
</html>
```

**screen.scss**
```scss
body {
  background: #ccc;
}

h1 {
  color: blue;
}
```

**file1.js**
```js
alert("file1.js");
```

**file2.js**
```js
alert("file2.js");
```

### Install Grunt and plugins

Now that our files are prepped and ready, we need to install Grunt and the necessary plugins so we can run tasks.

In the root directory of the project, run:

```bash
npm install
```

### Running tasks

Now you’re ready to run the configured Grunt tasks. Open up `index.html` in your browser. For starters, let’s go ahead and run the custom build task:

```bash
grunt build
```

The custom build task was configured as follows:

```js
grunt.registerTask('build', ['concat', 'sass:dist']);
```

You’ll notice that `build.js` and `screen.css` were created in a new `dist` directory. Refresh `index.html` and you should get 2 alerts and notice the styling of the page has changed.

Now let’s run the default Grunt task:

```bash
grunt
```

The default task was configured as follows:

```js
grunt.registerTask('default', ['concat', 'sass:dist', 'watch']);
```

After running `concat` and `sass:dist`, Grunt waits and watches for changes to any files in directories `js/` and `sass/`.

Go ahead and make changes to `screen.scss` and one of the JavaScript files in `js/` and save your changes.

You’ll notice in Terminal that Grunt detected your changes and ran the corresponding task based on the files that were changed. Refresh `index.html` again and you should notice the changes you’ve made.

Let’s say you’re done with development and you’re ready to make the files production-ready. Run the custom production task:

```bash
grunt production
```

The custom production task was configured as follows:

```js
grunt.registerTask('production', ['concat', 'uglify', 'sass:production']);
```

If you check the files in `dist/` you’ll notice that both `build.js` and `screen.css` were compiled then minified. Notice that `grunt production` is calling a subtask `sass:production` as opposed to `sass:dist`, which is used for development.

## You’re ready

That should be enough know-how to integrate Grunt into an existing or new project as well as experiment with other plugins out there. If you’re still a little confused, don’t hesistate to ask me on Twitter [@jonsuh]({{ author.twitter }}).

Ready to go a step further? I wrote a follow-up post that’ll help you improve and optimize your Grunt setup! [Take Grunt to the Next Level](/blog/take-grunt-to-the-next-level/)

branch_name: refs/heads/github

gha_language: CSS


text:
Returns a file sample, to the War Room from a path on an endpoint using Cortex XSOAR Dissolvable Agent (D2).

Input:
* Credentials - The credentials to use when trying to deploy Cortex XSOAR Dissolvable Agent (D2)  (default: Admin).
* ${Endpoint.Hostname} - Deploys an agent on the target endpoint.
* ${File.Path} - The file's path to collect.

## Dependencies
This playbook uses the following sub-playbooks, integrations, and scripts.

### Sub-playbooks
This playbook does not use any sub-playbooks.

### Integrations
This playbook does not use any integrations.

### Scripts
* FetchFileD2
* IncidentAddSystem

### Commands
This playbook does not use any commands.

## Playbook Inputs
---

| **Name** | **Description** | **Default Value** | **Required** |
| --- | --- | --- | --- |
| Credentials | The name of the credential set from Cortex XSOAR **Settings -> Integrations -> Credentials.** | Admin | Optional |
| Hostname | The Endpoint hostname. | ${Endpoint.Hostname} | Optional |
| Path | The file path. | ${File.Path} | Optional |

## Playbook Outputs
---

| **Path** | **Description** | **Type** |
| --- | --- | --- |
| File | The file to sample. | unknown |

## Playbook Image
---
![Get_File_Sample_From_Path_D2](https://raw.githubusercontent.com/demisto/content/1bdd5229392bd86f0cc58265a24df23ee3f7e662/docs/images/playbooks/Get_File_Sample_From_Path_D2.png)

repository: demisto/content

gha_language: Python

repo_name: demisto/content


text:
# Privacy Policy for Logori
At Logori, accessible from https://logori.xyz, one of our main priorities is the privacy of our visitors. This Privacy Policy document contains types of information that is collected and recorded by Logori and how we use it.

If you have additional questions or require more information about our Privacy Policy, do not hesitate to contact us at<EMAIL_ADDRESS>
It is the responsibility of the guild owner to make the members aware of Logoris presence as a background application.

## Log Files
Logori follows a standard procedure of using log files. These files log visitors when they visit websites. All hosting companies do this and a part of hosting services' analytics. The information collected by log files include internet protocol (IP) addresses, browser type, Internet Service Provider (ISP), date and time stamp, referring/exit pages, and possibly the number of clicks. These are not linked to any information that is personally identifiable. The purpose of the information is for analyzing trends, administering the site, tracking users' movement on the website, and gathering demographic information.

## The Logori Application
Logori is primarily a logging application which means it takes and stores data provided to it by the Discord API which is a third-party service. Logori does not control the data that discord provides it and logs it for the administrative purpose of the Discord Guild.

## Privacy Policies
You may consult this list to find the Privacy Policy for each of the advertising partners of Logori. Our Privacy Policy was created with the help of the Free Privacy Policy Generator and the Privacy Policy Generator Online.

Note that Logori has no access to or control over these cookies that are used by third-party providors.

## Third Party Privacy Policies
Logori's Privacy Policy does not apply to other advertisers or websites. Thus, we are advising you to consult the respective Privacy Policies of these third-party services (including Discord) for more detailed information. It may include their practices and instructions about how to opt-out of certain options.

## Children's Information
Another part of our priority is adding protection for children while using the internet. We encourage parents and guardians to observe, participate in, and/or monitor and guide their online activity.

Logori does not knowingly collect any Personal Identifiable Information from children under the age of 13. If you think that your child provided this kind of information on our website, we strongly encourage you to contact us immediately and we will do our best efforts to promptly remove such information from our records.

## Your Data
Your data is secured with state-of-the-art military-grade encryption as your privacy is our #1 concern when it comes to a data heavy application such as logori.

In compliance with GDPR, your data is available to view at any time on the website and a full data dump can be requested at<EMAIL_ADDRESS>a full user data purge can also be requested.

## Online Privacy Policy Only
This Privacy Policy applies only to our online activities and is valid for visitors to our website with regards to the information that they shared and/or collect in Logori. This policy is not applicable to any information collected offline or via channels other than this website.

## Consent
By using Logori, you hereby consent to our Privacy Policy.

repository: benkyd/logori

repo_name: benkyd/logori


text:
# SparKLe

SparKLe implements the methods of Solari et al. (2019) for large-scale multi-view learning with the aim of inferring non-linear, yet interpretable, associations between multiple sets of high-dimensional covariates from observations on matching subjects.

SparKLe uses the Python API of Apache Spark, an open-source distributed data analytics framework  in  the MapReduce  lineage  of  computational  paradigms that  was  originally developed at the University of California, Berkeley’s AMPLab. Spark is often used in settings with large numbers of "observations", whereas SparKLe is designed for the  challenge of enormously large numbers of parameters across multiple datasets. Common settings in which SparKLe works well include multi-omics, fMRI studies, imaging data, and other settings where high dimensional data is encountered.

## Installation

### Prerequisites

SparKLe requires:

* Apache Spark (>= 2.3.0)
* Python (>= 3.6.8)
* NumPy (>= 1.15.4)
* SciPy (>= 1.2.0)

### User Installation from this Repo

```
pip install --user -e git+https://github.com/jpdunc23/sparkle#egg=sparkle
```

## Usage

### The Basics

```python
from sparkle.cca import *
from numpy import random

# generate some random data
data = [random.randn(100, p) for p in [300, 500, 700, 1000]]

# instantiate a new CCA object with hyperparameters k and rhos
cca = CCA(k = 1, rhos = (0.1, 0.3, 0.7, 0.4))

# train on four datasets, returning a CCAModel instance
cca_model = cca.fit(data)

# the four canonical loadings matrices are stored the ZZ
# field of the CCAModel as a list of scipy.sparse.csr_matrix
cca_model.ZZ

# See what the pairwise canonical correlations were between
# the four datasets
cca_model.canonicalCorrelations(data)

# we can use the transform method to produce predictions for each
# dataset using the three other datasets
cca_model.transform(data)

# save the CCAModel instance for later use
cca_model.save("/path/to/project")

# load a saved CCAModel using the static method CCAModel.load
cca_model = CCAModel.load("/path/to/project")
```

### Cross Validation Workflow

```python
from pyspark.ml.tuning import ParamGridBuilder

# split data into training and validation sets
training = [d[0:80, :] for d in data]
testing = [d[80:100, :] for d in data]

# instantiate CCA and CCAEvaluator objects
cca = CCA()
evaluator = CCAPredictionEvaluator()

# create a ParamGridBuilder instance with a grid of hyperparameters
paramGrid = ParamGridBuilder() \
    .baseOn({cca.broadcast: True, cca.k: 1}) \
    .addGrid(cca.rhos, [[0.1], [0.5], [0.9]]) \
    .build()

# create a CCACrossValidator instance
cv = CCACrossValidator(parallelism = 4) \
    .setEstimator(cca) \
    .setEvaluator(evaluator) \
    .setEstimatorParamMaps(paramGrid) \
    .setNumFolds(10) \
    .setVerbose(True)

# run the cross validation on training data
cv_fit = cv.fit(training)

# see the best tuning parameters
cv_fit.bestModel.getRhos()

# see the canonical correlations for training and test data
cv_fit.bestModel.canonicalCorrelations(training)
cv_fit.bestModel.canonicalCorrelations(testing)

# see average correlation between predicted features and true features
evaluator.evaluate(cv_fit.bestModel, testing)

# save the CV fit for later use
cv_fit.save("/path/to/project")
cv_fit = CCACrossValidatorModel.load("/path/to/project")
```

## Authors

* **Omid Shams Solari** - *Method development*
* **James P.C. Duncan** - *Package development*

## License

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

## Acknowledgments

* [Apache Spark](https://spark.apache.org/)
* [pyrcca](https://github.com/gallantlab/pyrcca)


text:
Pawn

Interface to aide in creating robust developer tools.

### Example Usage

```js
#!/usr/bin/env node

const Pawn = require('pawn');

module.exports = new Pawn('NAME', {

  usage: 'NAME [options]',

  options: {
    'someOption': { type: 'string', description: 'Some option description.' }
  },

  execute: function (session) {
    // execute program
  }

});
```

## License

The MIT License (MIT) Copyright (c) 2016 Jarid Margolin

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

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

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

repository: admiraljs/pawn

repo_name: admiraljs/pawn


text:
# Atlas-Based Segmentation

This folder contains the MATLAB files for running the atlas-based segmentations.

## Pre-Requisites

The histogram equalization uses the MATLAB image processing toolbox and the registration component requires [FAIR.m](https://github.com/C4IR/FAIR.m) (we used commit 975edeb).

## Overview

The main function is contained in the file 'chiari_atlas.m'.

This function makes use of the following helper routines

- `biomarker.m` - given a mask and DENSE image, produce the spatial-average-temporal-peak biomarker
- `chiari_example.m` - perform pairwise registration
- `chiari_example_average.m` - average many pairwise registrations
- `dice_jaccard.m` - quantify the segmentation accuracy
- `generate_avg.m` - generate average cache data so that subsequent average registrations will be quicker
- `histnormal.m` - histogram normalization
- `viewContour2D.m` - visualizes masks as contour plot

repository: lruthotto/ChiariProject

branch_name: refs/heads/main

repo_name: lruthotto/ChiariProject


text:
---
title: Smart Contract Accounts
---

Smart contract accounts are used to enable features beyond what can be accomplished with an externally owned account (EOA) alone.
In this document, we'll describe some of the features and considerations associated with smart contract accounts in general, and the architecture used by the Valora wallet in particular as an example of how smart contract accounts can be used.

EOAs are what most people think of when they imagine a blockchain wallet.
EOAs are comprised of an ECDSA public/private key pair from which the on-chain address is derived.
The account address is derived from the public key, and transactions are authorized by the private key.
In most wallets, the EOA is generated and stored on the user's mobile device and backed up via a BIP-39 mnemonic phrase.

Celo provides an open-source implementation of a smart contract account; the [meta-transaction wallet](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/common/MetaTransactionWallet.sol) (MTW).
In general, ownership can be determined in arbitrary ways, but most commonly an EOA is designated as the owner and can authorize transactions my signing a meta-transaction containing the details of the authorized transaction.
This is how the meta-transaction wallet works.
In this case you can think of the smart contract account as the primary account, and the EOA as the controller of this account.

## Benefits of a smart contract account

### Separation of signer and payer

When new users create a wallet, they start with an empty balance.
This makes it difficult for the new users to verify their phone number as they need to pay for both the Celo transactions and the Attestation Service fees ([see here for more details](/protocol/identity/)).
To make this experience more intuitive and frictionless for new users, cLabs operates an [onboarding service called Komenci](https://github.com/celo-org/komenci/) that pays for the transactions on behalf of the user.
It does this by first deploying a meta-transaction wallet contract and setting the wallet EOA address as the signer.
At this point, the EOA can sign transactions and submit them to Komenci.
Komenci will wrap the signed transaction into a meta-transaction, which it pays for and submits to the network.

In general, smart contract accounts allow the someone other than the account owner to pay for the transaction fees required to submit a transaction to the blockchain, enabling a number of useful operations not otherwise possible.

### Account recovery

Smart contract accounts can also be useful if a user ever loses their phone and recovery phrase.
Unlike EOAs, smart contract accounts can support account recovery methods that do not rely solely on recovering the underlying keys.
The meta-transaction wallet implements [a function](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/common/MetaTransactionWallet.sol#L101-L108) to assign another Celo address as the Guardian of the account.
This Guardian can be a simple backup key or a smart contract implementing social recovery, [KELP](https://eprint.iacr.org/2021/289), or another account recovery protocol.
With the authorization of the Guardian, the meta-transaction wallet will update the owner of the account to replace the lost key.
Any funds or privileges held by the meta-transaction wallet are then recovered to the user who can control the account using their new key.

### Transaction batching

With smart contract accounts, including the meta-transaction wallet, transactions can be batched together to execute atomically.
This makes for a better user experience, as transactions can be guaranteed to execute all together or entirely revert.
It can also prevent some cases where front-running would be possible by splitting the user's transactions.

## Valora accounts

Behind every Valora wallet are two types of accounts: an externally owned account (EOA) and a meta-transaction wallet.
Valora generates the EOA during onboarding, and has a meta-transaction wallet deployed for it by Komenci with the generated EOA as the signer.
Using this configuration, Valora users gain the benefits listed above, including having Valora pay for the transaction fees associated with onboarding.

## Sending to a Valora wallet

When performing a payment to a Valora wallet, it's important that the address that is receiving funds is the EOA, and not the MTW since funds in the MTW are not displayed or directly accessible to Valora users.
To look up a wallet using a phone number:

1. Use ODIS to query the phone number pepper
2. Use the phone number pepper to get the on-chain identifier
3. Use the on-chain identifier to get the account address
4. Use the account address to get the wallet address (EOA)

The first two steps are covered extensively in [this guide](/developer/contractkit/odis).

To get the account address (step 3) you can use the [Attestation contract method `lookupAccountsForIdentifier`](https://github.com/celo-org/celo-monorepo/blob/e6fdaf798a662ffe2c12f9a74b28e0fa1c1f8101/packages/sdk/contractkit/src/wrappers/Attestations.ts#L472).

To get the wallet address from the account (step 4) you can use the [Account contract method `getWalletAddress`](https://github.com/celo-org/celo-monorepo/blob/e6fdaf798a662ffe2c12f9a74b28e0fa1c1f8101/packages/sdk/contractkit/src/wrappers/Accounts.ts#L318).

It may also be necessary to lookup the data encryption key (ex. [for comment encryption](/protocol/transaction/tx-comment-encryption)). This key can similarly be queried with the account by using the [Account contract method `getDataEncryptionKey`](https://github.com/celo-org/celo-monorepo/blob/e6fdaf798a662ffe2c12f9a74b28e0fa1c1f8101/packages/sdk/contractkit/src/wrappers/Accounts.ts#L310).

You can view a working example of this all tied together in [the `celocli` command `identity:get-attestations`](https://github.com/celo-org/celo-monorepo/blob/master/packages/cli/src/commands/identity/get-attestations.ts).

## Enabling Valora to interact with your dApp

### Signatures

Since all Valora users will have the use a meta-transaction wallet, it's important to keep in mind that transactions may originate from an EOA as well as a smart contract.
If your contract relies upon EIP-712 signed typed data, be sure to also support typed data originating from contracts.
This data can't be signed by the `msg.sender` since it's originating from a contract, but is implicitly authorized by originating from the contract.

## Implementation

The implementation of the meta-transaction wallet can be [found here](https://github.com/celo-org/celo-monorepo/blob/master/packages/protocol/contracts/common/MetaTransactionWallet.sol).

repository: cjustinobi/docs

repo_name: cjustinobi/docs


text:
### [CVE-2017-6267](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-6267)
![](https://img.shields.io/static/v1?label=Product&message=GPU%20Display%20Driver&color=blue)
![](https://img.shields.io/static/v1?label=Version&message=n%2Fa&color=blue)
![](https://img.shields.io/static/v1?label=Vulnerability&message=Denial%20of%20Service&color=brighgreen)

### Description

NVIDIA GPU Display Driver contains a vulnerability in the kernel mode layer handler where an incorrect initialization of internal objects can cause an infinite loop which may lead to a denial of service.

### POC

#### Reference
- http://nvidia.custhelp.com/app/answers/detail/a_id/4544

#### Github
No PoCs found on GitHub currently.

repository: trickest/cve

gha_language: HTML

repo_name: trickest/cve


text:
# jwt-toolkit

[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT)
[![github-issues](https://img.shields.io/github/issues/blueflag/jwt-toolkit.svg)](https://github.com/blueflag/jwt-toolkit/issues)

Some useful functionality for dealing with JWT.

[Documentation here](http://blueflag.github.io/jwt-toolkit/).

# install

```
npm install jwt-toolkit
```

repository: blueflag/jwt-toolkit

repo_name: blueflag/jwt-toolkit


text:
---
title: Overview
page_title: Overview - WinForms LayoutControl
description: WinForms LayoutControl allows you to add and arrange other controls in complex layouts.
slug: winforms/layoutcontrol
tags: layoutcontrol
published: True
position: 0
CTAControlName: LayoutControl
previous_url: layoutcontrol-overview
---

# WinForms LayoutControl Overview

With __RadLayoutControl__ you can quickly design and arrange your controls in complex layouts and it will automatically keep the layout consistent at run-time. __RadLayoutControl__ has an intuitive and straight-forward design time experience. When resizing the form, it keeps its layout consistent by proportionally resizing the controls in it while considering their *MinSize* and *MaxSize* settings. __RadLayoutControl__ also allows end-user customizations and Save/Load layout via the *Customize* context menu.

{% if site.has_cta_panels == true %}
{% include cta-panel-overview.html %}
{% endif %}

>caption Figure 1: RadLayoutControl
![WinForms RadLayoutControl Overview](images/layoutcontrol-overview001.png)

The below list shows the main features of the control.

* Create complex layouts where the controls are automatically resized according to the current available size.

* Arrange the controls in the form at runtime - your users will be able to rearrange the controls according to their needs.

* Save and load the layout.

* Group the underlying controls in tabs.

* Expand/Collapse groups.

# See Also

* [Items]({%slug winforms/layoutcontrol/items%})
* [Design Time]({%slug winforms/layoutcontrol/design-time%})
* [Getting Started]({%slug winforms/layoutcontrol/getting-started%})

repository: telerik/winforms-docs

repo_name: telerik/winforms-docs


text:
![CI](https://github.com/DenTelezhkin/DTTableViewManager/workflows/CI/badge.svg)
[![codecov.io](http://codecov.io/github/DenTelezhkin/DTTableViewManager/coverage.svg?branch=main)](http://codecov.io/github/DenTelezhkin/DTTableViewManager?branch=main)
![CocoaPod platform](https://cocoapod-badges.herokuapp.com/p/DTTableViewManager/badge.svg)
![CocoaPod version](https://cocoapod-badges.herokuapp.com/v/DTTableViewManager/badge.svg)
[![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager)
[![Packagist](https://img.shields.io/packagist/l/doctrine/orm.svg)]()

DTTableViewManager
================
## Features

- [x] Powerful mapping system between data models and cells, headers and footers
- [x] Automatic datasource and interface synchronization.
- [x] Flexible Memory/CoreData/Realm/diffable datasource storage options
- [x] Powerful compile-time safe events system, that covers all of UITableView delegate methods
- [x] Views created from code, XIB, or storyboard, automatic registration and dequeue
- [x] Can be used with UITableViewController, or UIViewController with UITableView
- [x] Unified syntax with [DTCollectionViewManager](https://github.com/DenTelezhkin/DTCollectionViewManager)
- [x] [Complete documentation](Documentation)
- [x] [API Reference](https://dentelezhkin.github.io/DTTableViewManager/)

## Requirements

* Xcode 12+
* iOS 11.0+ / tvOS 11.0+ / macCatalyst 13.0+
* Swift 5.3+

> If you need Xcode 11 support or Swift 4...Swift 5.2, or iOS 8...iOS 10 support, you can use 7.x releases.

## Installation

### Swift Package Manager

Add package into Xcode Project settings -> Swift Packages

### [CocoaPods](http://www.cocoapods.org):

    pod 'DTTableViewManager', '~> 8.0.0'

## Quick start

Let's say you have an array of Posts you want to display in UITableView. To quickly show them using DTTableViewManager, here's what you need to do:

1. Create UITableViewCell subclass, let's say PostCell and adopt `ModelTransfer` protocol:

```swift
class PostCell : UITableViewCell, ModelTransfer {
    func update(with model: Post) {
        // Fill your cell with actual data
    }
}
```

2. In your view controller:

```swift
class PostsViewController: UITableViewController, DTTableViewManageable {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Register PostCell to be used with this controller's table view
        manager.register(PostCell.self)

        // Populate datasource
        manager.memoryStorage.setItems(posts)
    }
}
```

Make sure your UITableView outlet is wired to your class (or use UITableViewController subclass). If you have a PostCell.xib file, it will be automatically used for dequeueing PostCell.

3. That's it! It's that easy!

Of course, cool stuff does not stop there, framework supports all datasource and delegate methods as closures, conditional mappings and much much more! Choose what interests you in the next section of readme.

## Burning questions

###### Starter pack

* **[Why do I need this library?](Documentation/Why.md)**
* [How data models are mapped to cells?](Documentation/Mapping.md)
* [Can I use unsubclassed UITableViewCell or UITableViewHeaderFooterView?](Documentation/Mapping.md#without-modeltransfer)
* [How can I register views to dequeue from code/xib/storyboard?](Documentation/Registration.md)
* [How can I use the same cells differently in different places?](Documentation/Conditional%20mappings.md)
* [What datasource options do I have?(e.g. memory/CoreData/Realm/diffable datasources)](Documentation/Datasources.md)
* [How can I implement datasource/delegate methods from `UITableView`?](Documentation/Events.md)

###### Advanced

* [Can I implement delegate methods instead of using DTTableViewManager event closures?](Documentation/Events.md#can-i-still-use-delegate-methods)
* [How can I react to and customize UITableView updates?](Documentation/TableViewUpdater.md)
* [What can be additionally configured when using DTTableViewManager with UITableView?](Documentation/TableViewConfiguration)
* [What if something goes wrong?](Documentation/Anomalies.md)

## Sample code and documentation

* [DTTableViewManager sample code](Example)
* [Documentation](Documentation)
* [Sample code for Drag&Drop integration](https://github.com/DenTelezhkin/DTDragAndDropExample)

## Thanks

* [Alexey Belkevich](https://github.com/belkevich) for providing initial implementation of CellFactory.
* [Michael Fey](https://github.com/MrRooni) for providing insight into NSFetchedResultsController updates done right.
* [Nickolay Sheika](https://github.com/hawk-ukr) for great feedback, that helped shaping 3.0 release and future direction of the library.
* [Artem Antihevich](https://github.com/sinarionn) for great discussions about Swift generics and type capturing.

repository: devMEremenko/XcodeBenchmark

gha_language: Swift

repo_name: devMEremenko/XcodeBenchmark


text:
# Crumbley

![Image](files/graphics/crumbley-logo-small.png?raw=true)

Crumbley is a super simple PHP breadcrumb library. You create crumbs, add them to your breadcrumbs then display them in your app.

## Requirements

* PHP 7

## Features

* Breadcrumbs!
    * Just pure fine grained and flexible crumbs of bready goodness!

## Installation

The reccomended way to install is via Composer.

Ensure your minimum-stability is set to dev:

```json
"minimum-stability": "dev",
```

Either install in the project via terminal:

```shell
$ composer require artbyrab/crumbley
```

or add it to your composer.json file:

```json
"artbyrab/crumbley": "master@dev"
```

## Usage

### 1) Include crumbly into your app:

```php
use artbyrab\crumbley\Breadcrumbs;
use artbyrab\crumbley\Crumb;
```

### 2) Create your breadcrumbs and add your crumbs

```php
$breadcrumbs = new Breadcrumbs();

$breadcrumbs->add(
    (new Crumb())->addLabel('Home')
)->add(
    (new Crumb())->addLabel('Blog')->addUrl('blog')
)->addCurrent(
    (new Crumb())->addLabel('Hello World')
);
```

### 3) Render your breadcrumbs

```php
<?php foreach ($breadcrumbs->getCrumbs() as $crumb) { ?>
    <?php if ($crumb->isActive() == true) { ?>
        <li>
            <a href="http://www.yourwebsite.com<?=$crumb->getUrl();?>"><?=$crumb->getLabel();?></a>
            <span class="separator">></span>
        </li>
    <?php }; ?>
    <?php if ($crumb->isActive() == false) { ?>
        <li>
            <?=$crumb->getLabel()?>
        </li>
    <?php }; ?>
<?php }; ?>
```

# Resources

* [Extending Guide](documents/extending.md)
* [Running Tests](documents/running-tests.md)
* [Code Checks](documents/code-checks.md)

repository: artbyrab/crumbley

repo_name: artbyrab/crumbley


text:
---
layout: recipe
title: Spaghetti with Butternut Parmesan Sauce
from: SkinnyTaste
fromurl: http://www.skinnytaste.com/2012/10/spaghetti-with-creamy-butternut-leek.html
time:
---

#### Ingredients:

* 1 lb butternut squash, peeled and diced
* 1 tbsp light butter
* 8 oz spaghetti of your choice (use brow rice pasta for gluten-free)
* 1 (1 cup) large leek (white part only)
* 2 cloves garlic, minced
* ¼ cup fresh shaved parmesan cheese
* 4 sage leaves, sliced thin
* kosher salt and freshly ground black pepper, to taste

<br>

#### Directions:

1. Bring a large pot of salted water to a boil.
2. Add butternut squash and cook until soft.
3. Remove squash with a slotted spoon and place in a blender, blend until smooth.
4. Add pasta to the boiling water and cook according to package directions for al dente, reserving 1 cup of the pasta water before draining.
5. Meanwhile, in a large deep skillet melt the butter and sautée the leeks and garlic over medium-low heat until soft and golden, about 5 - 6 minutes.
6. Add pureed butternut squash, season with with salt and fresh cracked pepper and add a little of the reserved pasta water to thin out to your liking.
7. Stir in parmesan cheese and sage and mix in pasta until well coated.
8. Serve with additional parmesan cheese on the side.

repository: lucywyman/recipes

repo_name: lucywyman/recipes


text:
# (cond <pred then>** else?) performs conditional branching
For each /<pred then>/ clause, the predicate will be evaluated, and if it is truthy (not _false_, not _nil_) the /then/ form is evaluated and returned, otherwise the next clause is processed.

## An Example

  (def x 99)

  (cond
    (< x 50)  "was less than 50"
    (> x 100) "was greater than 100"
              "was in between")

In this case, _"was in between"_ will be returned. Slightly more aesthetically pleasing would be to use an :else keyword:

  (cond
    (< x 50)  "was less than 50"
    (> x 100) "was greater than 100"
    :else     "was in between")

The reason that this works is because the `:else` keyword evaluates to truthy.

repository: etsangsplk/sputter

repo_name: etsangsplk/sputter


text:
# Modern Muckraker IHOP Episode Data

## Setup

Run the following on your command line to set up the environment for you current shell. If you start a new shell, you'll only need to run the `source env/bin/activate` command again.
```bash
python3 -m venv env
source env/bin/activate
python -m pip install -r requirements.txt
```

## Run

### Scraper

Collect a list of all IHOP locations in a JSON Lines (`.jl`) format.
```bash
scrapy runspider ihop_scraper.py -O ihop_list.jl
```

There is currently a copy of `ihop_list.jl` in this repository, so you can skip this step.

### Jupyter Notebook

View the IHOP data.
```bash
jupyter notebook ihop_notebook.ipynb
```

repository: SalvatoreT/modern-muckraker-ihop

repo_name: SalvatoreT/modern-muckraker-ihop


text:
rEmo - ruby emoticons parser
============================

rEmo transforms ASCII-emoticons to HTML.

## Install

  gem install remo

## Usage

First you need to copy the themes in your project, for example, in irb:

  Remo.copy!('public/images/emoticons')

It will copy the themes in `pwd`/public/images/emoticons/ ...

And, parse :

  Remo.new(string).to_html

See the [rdoc][2] for advanced usage.

## Themes

Two themes are bundled into rEmo : [simplesmileys][3] and [skype][4]. You can preview the themes on the [homepage][1].

A theme is a YAML file of regexps->image name. You can create one, but it's not recommended for your mental health (regexps sucks!).

[1]: http://webs.github.com/remo/
[2]: http://rdoc.info/projects/webs/remo/
[3]: http://simplesmileys.org/
[4]: http://www.skype.com/intl/en/allfeatures/emoticons/

repository: cydonia/remo

repo_name: cydonia/remo


text:
---
title: "Dataset template"
description: "Dataset template shows how a dataset is displayed using Lexicon."
order: 81
---

### Structure
This template counts with several patterns listed as follown that can be directly mapped with the image.

1. Header toolbar: the actions menu must only contain direct actions over the application in question as import, export, permissions.
2. Navigation bar: includes different entries of the application. If there is only one it must be present in the bar. Search field is optional and only acts over the selected element in the navbar.
3. Dataset display
	1. Management bar
	2. Breadcrumb (When further than first level)
	3. Visualization: Table / List / Cards
	4. Pagination bar
4. Plus button: Place it in case your dataset allows adding more elements

### Example
![Form template<EMAIL_ADDRESS>


text:
# Bootstrap-CMS-template
This is sample layout project that demonstrating use of Bootstrap framework.

## How to run
Clone git repo:
```git clone https://github.com/adamfaryna/Bootstrap-CMS-template.git```

Install Bower dependencies:
```bower install```

Open in web browser Bootstrap-CMS-template/app/index.html or watch showcase of different screen sizes at Bootstrap-CMS-template/app/showcase.html.

## Have a fun!

repository: farynaio/Bootstrap-CMS-template

repo_name: farynaio/Bootstrap-CMS-template


text:
# A Simple Form

This is an example of a simple form written in HTML, CSS, and Vanilla JavaScript.

It takes advantage of HTML5 validation errors, placeholder text, and accessibility best practices.


text:
---
title: Introduction to Adobe Experience Platform Data Governance
description: This video shows Adobe Experience Platform’s Data Governance capabilities and how it helps brands deliver personalized experiences to their customers while providing complete control over customer data.
feature: governance
topics: rtcdp
kt: 5802
audience: data steward, architect, marketer
doc-type: video
activity: understand
thumbnail: 36653.jpg
---

# Introduction to Data Governance

This video shows Adobe Experience Platform’s Data Governance capabilities and how it helps brands deliver personalized experiences to their customers while providing complete control over customer data.

>[!VIDEO](https://video.tv.adobe.com/v/36653?quality=12&learn=on)

## Additional Resources

* [Understanding Data Governance](understanding-data-governance.md)
* [Classify data using Governance Labels video](classify-data-using-governance-labels.md)
* [Create Data Usage Policies video](create-data-usage-policies.md)
* [Enforce Data Usage Policies in Real-time CDP video](enforce-data-usage-policies-in-real-time-cdp.md)
* [Data Governance in Platform documentation](https://docs.adobe.com/content/help/en/experience-platform/data-governance/home.html)
* [Data Governance in Real-time CDP documentation](https://docs.adobe.com/content/help/en/experience-platform/rtcdp/privacy/data-governance-overview.html)


text:
# CleanSynapse ![No Synapse](https://i.imgur.com/wNP4zOl.png)
<img alt="Maintenance" src="https://img.shields.io/maintenance/yes/2018">

Removes the need to run Synapse in the background to use your custom profiles for Razer peripherals.

# What does this do?
It automatically starts the service required to run your custom profiles for your Razer peripherals. In other words, you can have custom keyboard effects, (custom lighting, waves, whatever) without having to run Synapse in the background. Best part is, it doesn't even run itself in the background. It starts the service and then exits.

Of course, if you want to run Synapse later, you can. It does not interfere with normal operation. If you quit Synapse and your profiles disable, you can simply run the program again.

# How do I acquire this illustrious piece of tech?
Click the "Releases" tab, download the .exe, and run it. If you installed your Razer Synapse to somewhere other than the default, please manually put the .exe in the root of that directory.

# Should I run this at login?
I would. If you ran the program normally and it installed it for you, it should have presented an option to start at login. In that case, it placed a shortcut in *"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup"*. If you installed it manually, you will need to create a shortcut and place it here as well. You will be able to see it in the Task Manager's startup tab after a reboot if you did it correctly.
![help](https://i.imgur.com/Uh30kjR.png)
![help](https://i.imgur.com/8mbnpVt.png)

## Make sure to disable Razer Synapse from running at login as well.
- Open task manager.
- Click on the "startup" tab.
- Click on Razer Synapse.
- If enabled, click "Disable".
![help](https://i.imgur.com/D8yYC1e.png)

# Limitations
Unfortunately, keybinds that you've set in Synapse will NOT work. I cannot control this without setting up my program to ALSO run in the background exactly like Synapse would anyway. If you want keybinds, might as well just run Synapse. If you're just looking for custom colors, use this.


text:
# C-WAVE-Loader
Utility library for C/C++ for loading WAV audio file.

## Functions

* load_wave_file
```cpp

// This function is used to fetch all information form given wave file and return formated struct.

// Params: path to file

wave_t * wav_file = load_wave_file("life.wav");

```
* close_wave_file
```cpp

// This function is used to free wave struct.
// Params: wave_file

close_wave_file(wave_file);

```

## Requirements

* C-File-Manager [https://github.com/Kagetane-Hiruko/C-File-Manager]

repository: Kagetane-Hiruko/C-WAVE-Loader

repo_name: Kagetane-Hiruko/C-WAVE-Loader


text:
###### (Automatically generated documentation)

# DR Setpoint Modification Cooling

## Description
Modify the cooling setpoint of the HVAC system during a DR event

## Modeler Description
Modify the cooling setpoint of the HVAC system during a DR event

## Measure Type
ModelMeasure

## Taxonomy

## Arguments

### DR Event Schedule Name
Name of the schedule to use for setting the EMS code.
**Name:** dr_event_schedule,
**Type:** String,
**Units:** ,
**Required:** true,
**Model Dependent:** false

### Event Delta T
Amount to raise cooling setpoint by during DR Event.  Use negative number to decrease cooling setpoint during event.
**Name:** event_delta_t,
**Type:** Double,
**Units:** degC,
**Required:** true,
**Model Dependent:** false

### Cooling Setpoint Schedule Name
Name of the cooling setpoint schedule to modify.
**Name:** cooling_setpoint_schedule,
**Type:** String,
**Units:** ,
**Required:** true,
**Model Dependent:** false

### Heating Setpoint Schedule Name
Name of the heating setpoint schedule. Will not be changed, but needed for EMS script.
**Name:** heating_setpoint_schedule,
**Type:** String,
**Units:** ,
**Required:** true,
**Model Dependent:** false

repository: dsgrid/OpenStudio-BuildStock

gha_license_id: NOASSERTION

repo_name: dsgrid/OpenStudio-BuildStock


text:
# Pseudopleurochloris C.Andreoli, I.Moro, N.La Rocca, F.Rigoni, L.Dalla Valle & L.Bargelloni, 1999 GENUS

#### Status
ACCEPTED

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
null

#### Original name
null

### Remarks
null

repository: mdoering/backbone

repo_name: mdoering/backbone