text:
---
title: How Google improved ads performance with stale-while-revalidate
subhead: |
    Find out how loading third-party resources faster can increase revenue.
date: 2020-03-05
authors:
  - thebengeu
  - jimper
hero: image/admin/CYbrrEv8KBJtPHCvLV4Y.jpg
thumbnail: image/admin/KriMXq0cv6h8IhzVjyst.jpg
alt: Dew on a thin leaf in macro
description: |
    This case study explains how Google increased key ads business metrics by
    optimizing the performance of their third-party ads script with stale-while-revalidate.
tags:
  - blog
  - case-study
  - performance
  - ads
---

This case study highlights how improving the performance of third-party resources can boost business metrics. While a [previous study](/fast-ads-matter/#fast-ads-make-you-more-money) measured the cost of added ads latency, this study demonstrates the value of a real-world performance improvement:

0.5%

Revenue lift for publishers

2%

Increase in early ad script loads

Source: Google Internal Data, June to July 2019.

## Background

The [Google Publisher Tag (GPT)](https://support.google.com/admanager/answer/181073) is the ad tagging script for Google Ad Manager that requests and renders display ads on the web. By implementing a simple [`stale-while-revalidate`](/stale-while-revalidate/) HTTP header for GPT, the GPT team was able to improve the speed and performance of Google display ads for its publisher partners. This same technique can be applied to any other scenario where loading scripts as quickly as possible is more important than loading the freshest code.

## The problem

GPT is deployed as a bootstrapping script, `gpt.js`, which is given a short time to live (TTL) of 15 minutes. This short TTL allows the script to be updated or rolled back quickly. Once loaded, `gpt.js` requests and loads additional implementation scripts, which have a longer TTL.

Once the 15 minute TTL expires, the version of `gpt.js` in cache goes stale and needs to be revalidated. Previously, this revalidation process involved making a synchronous network request to fetch a fresh copy of the script, adding latency to the first ad request.

## The solution

The [`stale-while-revalidate`](https://tools.ietf.org/html/rfc5861#section-3) attribute is used by the `Cache-Control` header and defines an extra window of time during which a cache can use a stale asset while the asset is revalidated asynchronously. This helps developers balance between immediacy—*loading cached content right away*—and
freshness—*ensuring updates to the cached content are used in the future*.

## Google display ads case study

The GPT team added this `Cache-Control` header in the `gpt.js` HTTP response in 2016, in anticipation of browsers implementing `stale-while-revalidate`:

```text
cache-control: private, max-age=900, stale-while-revalidate=3600
```

This setting means that if `gpt.js` is requested between 15 and 60 minutes after the previous cached value, then the cached value will be used to fulfill the request even though it's stale. At the same time, a revalidation request will be made in the background to populate the cache with a fresh value for future use.

Chrome rolled out `stale-while-revalidate` in version 75 to 99% of all traffic, leaving 1% of traffic with the feature disabled temporarily to measure its impact. The GPT team logged metrics from this 1% (the experimental group) as well as a 1% sample of traffic with the feature enabled (the control group), to test the effectiveness of `stale-while-revalidate` for ad scripts. Over the course of 2 weeks of metrics logged from a sample size of 5.2 billion Google display ad impressions, the control group observed:

- 0.3% increase in ad impressions.
- 0.5% increase in revenue.
- 2% increase in early ad script loads (<500ms from the start of page load).
- 1.1% increase in successful ad script loads overall.

  {% Img src="image/admin/ZRKz2IHKdGNTDM3WdsvX.svg", alt="Percentage point change in number of ad script loads vs. Time from page load start to ad script load (ms)", width="800", height="600" %}

Source: Google Internal Data, June to July 2019.

As shown in the chart above, the results of this experiment can be attributed to an increase in successful ad script loads, with a majority occurring early in the page load process.

## Implementing stale-while-revalidate on your site

The GPT team has seen that making a relatively simple change to HTTP headers with `stale-while-revalidate` can improve speed and boost business metrics. Check out the [Keeping things fresh with stale-while-revalidate](/stale-while-revalidate) post for more on implementing `stale-while-revalidate` on your own site.

Photo by [Kahica](https://unsplash.com/@kahika) on [Unsplash](https://unsplash.com/photos/XSSibD1bt80)


text:
## Grunt Commands

#### grunt build
Compile coffee-files and build the bin-structure

#### grunt test
Start mocha-testing without build

#### grunt test-silent
Start mocha-testing without build and without logging

#### grunt dev
Run "build" and "test"

#### grunt test-xunit
Start mocha-testing and create a xUnit.xml in the application root

#### grunt test-cov
Start mocha-testings and create a istanbul code coverage reporting

repository: livespotting/mconn

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: livespotting/mconn


text:
# Terminology

This document defines terminologies and abbreviations used in smart contracts.

## Fund

-   **Underlying**: assets invested in the fund to create fund shares.
-   **Token M/A/B**: ERC-20 token of Tranche M/A/B.
-   **Share**: a unit of a tranche token, or a tranche token smart contract.
-   **Tranche**: integer representation of a tranche, 0 for M, 1 for A, 2 for B.
-   **Tranche Weight**: weight of the three tranches in splitting and merging. For example,
    M:A:B = 3:1:2 indicates that each token M can be split into 1/3 token A and 2/3 token B.
-   **Net Asset Value** (abbr. **NAV**): fair value of a share, which is calculated from a 30-minute
    TWAP of the underlying assets.
-   **Protocol Fee**: a daily fee charged from a fund by the Tranchess protocol.
-   **Interest Rate**: the stable interest rate that Tranche B holders pay Tranche A holders.
    It is realized by a daily increment on Tranche A's NAV.
-   **Settle** (in fund): the action to finish a trading day and start the next, including charging
    protocol fee, completing creations and redemptions and calculating NAV of the three tranches.
-   **Trading Day**: interval of settlements. A _trading day_ starts at UTC time 14:00 of a day
    (inclusive) and ends at the same time of the next day (exclusive).
-   **Trading Week**: interval of interest rate update. A _trading week_ consists of 7 continuous
    trading days and starts at UTC time 14:00 of a Thursday.
-   **Rebalance**: a linear transformation of the three tranche tokens' balance in order to
    maintain a stable leverage rate. In smart contracts, _rebalance_ also refers to the concrete
    transformation matrix.
-   **Upper/Lower Threshold M/A/B**: a condition to trigger a rebalance. For example, rebalance is
    triggered when NAV of Tranche A is higher than _upper threshold A_.
-   **Version** (of a tranche token balance): the number of rebalances that the tranche token
    balance has been transformed. Rebalance is performed lazily in smart contracts. If the version
    of a stored tranche token balance is smaller than the total number of rebalances in the past,
    the token balance should be transformed beyond the latest rebalance before it can be used
    or returned to users.
-   **Total Shares**: the total number of shares of a fund, which equals to the total supply of
    Token M if there's no Token A and B. When tranche weights M:A:B = 2:1:1, total shares of a fund
    is just the sum of total supply of all the three tranche tokens.
-   **Active**: whether various actions can be taken. In case of a rebalance or a potential
    rebalance, some actions are temporarily disabled due to safety considerations. These actions
    include:
    -   tranche token transfer
    -   actions in the primary market
    -   placing a taker order in the exchange

## Primary Market

-   **Create**: the action to invest underlying assets in a fund and mint token M.
-   **Redeem**: the action to burn token M and get underlying assets back from a fund.
-   **Split**: the action to burn token M and mint token A and B according to tranche weights.
-   **Merge**: the action to burn token A and B and mint M according to tranche weights.

## Exchange

-   **Quote Asset**: the quote currency token in all trading pairs in the exchange contract,
    usually a stablecoin.
-   **Base Asset**: base currency token in a trading pair, i.e. token M, A or B.
-   **Epoch**: a 30-minute period. Trades in the same epoch use the same estimated price for matching
    (NAV in the epoch before the previous epoch) and the same reference price (NAV in the next epoch).
-   **Maker**: user that places a post-only order, which stays in the order book until matched
    with a taker order.
-   **Taker**: user that places a fill-and-kill order, which immediately matches maker orders
    in the order book.
-   **Premium-Discount Level** (abbr. **PD Level**): integer representation of a premium-discount
    value, starting from 1 for -10% to 81 for +10%.
-   **Unsettled Trade**: accumulative result of all matched trades in a single epoch. For example,
    when a taker buy order is matched with a maker sell order, the result of this matching is
    added to both the taker's unsettled buy trade and the maker's unsettled sell trade in this epoch.
-   **Settle** (in exchange): the action to calculate and claim the outcome of an unsettled trade
    according to its reference price (in the next epoch). When an unsettled trade is settled by
    a user, shares are added to the user's available balance in the exchange, while quote assets
    are transfered to the user's address directly.
-   **Reward**: CHESS token rewarded for staking shares in the exchange contract.
-   **Reward Weight**: weight of the three tranches in calculating rewards.

license: MIT

branch_name: refs/heads/main


text:
# OwaspBenchmarkScoreScrapper
A web scrapper to obtain the OWASP Benchmark Score info and generate a JSON file based on that info.

# Usage

`npm run start`

This will run with the default paths

`in  = ../Benchmark/scorecard/`

`out = ../`

Otherwise use:

`npm run start <path to Benchmark/scorecard/> <path where to generate the json>`

Make sure to include the last '/' in each argument!

repository: pnpo/OwaspBenchmarkScoreScrapper

gha_language: JavaScript

gha_license_id: MIT

repo_name: pnpo/OwaspBenchmarkScoreScrapper


text:
# ngDownloaderAPI
ngDownloader API that returns the download links of the videos. Hosted on Amazon AWS

# Add a new package
- `pip install youtube-dl --target .`

# Add Dependencies
- In package folder `zip -r9 ../deployment-package.zip .`
- In src folder `zip -g deployment-package.zip function.py`

repository: manishbisht/ngDownloaderAPI

repo_name: manishbisht/ngDownloaderAPI


text:
# Coupled Oscillatory Recurrent Neural Network (coRNN)
This repository contains the implementation to reproduce the numerical experiments
of the *International Conference on Learning Representations (ICLR) 2021* **[oral]** paper [Coupled Oscillatory Recurrent Neural Network (coRNN): An accurate and (gradient) stable architecture for learning long time dependencies](https://openreview.net/forum?id=F3s69XzWOia)

## Requirements

```bash
Python 3.6.1
pytorch 1.3.1
torchvision 0.4.2
torchtext 0.6.0
numpy 1.17.4
spacy v2.2+
```
If you want to run the experiments on a GPU, please make sure you have installed the corresponding cuda packages.

## Datasets

This repository contains the codes to reproduce the results of the following experiments for the proposed coRNN:

  - **The Adding Problem**
  - **Sequential MNIST**
  - **Permuted Sequential MNIST**
  - **Noise padded CIFAR-10**
  - **HAR-2**
  - **IMDB**

The data sets for the MNIST/CIFAR-10 task and the IMDB task are getting downloaded through torchvision and torchtext, respectively.
The data set for the HAR-2 has to be downloaded and preprocessed according to the instructions mentioned in the paper.

## Results
The results of the coRNN for each of the experiments are:

     Experiment
     Result

    sMNIST
     99.4% test accuracy

    psMNIST
     97.3% test accuarcy

    Noise padded CIFAR-10
     59.0% test accuracy

    HAR-2
     97.2 test accuracy

    IMDB
     87.4% test accuracy

## Citation

```bibtex
@article{rusch2020coupled,
  title={Coupled Oscillatory Recurrent Neural Network (coRNN): An accurate and (gradient) stable architecture for learning long time dependencies},
  author={Rusch, T Konstantin and Mishra, Siddhartha},
  journal={arXiv preprint arXiv:2010.00951},
  year={2020}
}
```


text:
#  A Python library for audio feature extraction, classification, segmentation and applications

*This doc contains general info. Click [here](https://github.com/tyiannak/pyAudioAnalysis/wiki) for the complete wiki*

This is a fork of [pyAudioAnalysis](https://github.com/tyiannak/pyAudioAnalysis/), which is intended to be a lightweight, packageable version which complies with PEP8 and works in python3.

## News
 * [BK] Ported to Python3
 * [TG] Check out [paura](https://github.com/tyiannak/paura) a python script for realtime recording and analysis of audio data
 * [TG] January 2017: *mp3* files are also supported for single file feature extraction, classification and segmentation (using pydub library)
 * [TG] September 2016: New segment classifiers (from sklearn): random forests, extra trees and gradient boosting
 * [TG] August 2016: Update: mlpy no longer used. SVMs, PCA, etc performed through scikit-learn
 * [TG] August 2016: Update: Dependencies have been simplified
 * [TG] January 2016: [PLOS-One Paper regarding pyAudioAnalysis] (http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0144610) *(please cite!)*

## General
pyAudioAnalysis is a Python library covering a wide range of audio analysis tasks. Through pyAudioAnalysis you can:
 * Extract audio *features* and representations (e.g. mfccs, spectrogram, chromagram)
 * *Classify* unknown sounds
 * *Train*, parameter tune and *evaluate* classifiers of audio segments
 * *Detect* audio events and exclude silence periods from long recordings
 * Perform *supervised segmentation* (joint segmentation - classification)
 * Perform *unsupervised segmentation* (e.g. speaker diarization)
 * Extract audio *thumbnails*
 * Train and use *audio regression* models (example application: emotion recognition)
 * Apply dimensionality reduction to *visualize* audio data and content similarities

## Installation
 * via pip
 ```
 pip install git+https://github.com/ferayebend/sciaudio.git
 ```
 * via setup.py
 ```
 python3 setup.py install
 ```
 * In the case of numpy/scipy dependency problems:
 ```
 pip install numpy scipy
 ```
 * via the Dockerfile
 ```
 docker build -t sciaudio .
 ```
 * Clone the source of this library:
 ```
 git clone https://github.com/ferayebend/sciaudio.git
 ```

## Further reading
Apart from the current README file and [the wiki] (https://github.com/tyiannak/pyAudioAnalysis/wiki), a more general and theoretic description of the adopted methods (along with several experiments on particular use-cases) is presented [in this publication] (http://journals.plos.org/plosone/article?id=10.1371/journal.pone.0144610). Please use the following citation when citing pyAudioAnalysis in your research work:
```
@article{giannakopoulos2015pyaudioanalysis,
  title={pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis},
  author={Giannakopoulos, Theodoros},
  journal={PloS one},
  volume={10},
  number={12},
  year={2015},
  publisher={Public Library of Science}
}
```

Finally, for Matlab-related audio analysis material check  [this book](http://www.amazon.com/Introduction-Audio-Analysis-MATLAB%C2%AE-Approach/dp/0080993885).

## Author

[Theodoros Giannakopoulos] (http://www.di.uoa.gr/~tyiannak),
Postdoc researcher at NCSR Demokritos,
Athens,
Greece

repository: ferayebend/sciaudio

repo_name: ferayebend/sciaudio


text:
A lightweight low-overhead library for processing printf-style format descriptions and arguments designed for the constrained environments of embedded systems.

# News #
  * 29-Jun-2023: Add optional support for long long integers with the `ll` qualifier.
  * 21-Jun-2023: Add `tinyformat` for an even smaller feature-reduced version of format for very small embedded systems (compiles to around 1,400 bytes of code for the atmega8 with AVR-GCC).
  * March-2023: Tidyups in files and documentation.
  * 10-Mar-2015: Release 1.2 now available.
  * 05-Feb-2015: Add support for fixed-point numbers with the `k` conversion specifier.
  * 06-Nov-2014: Add support for denormalized floating point numbers, for people who like _really small_ numbers.
  * 17-Mar-2014: **Rounding bug fixed** ([Issue 7](https://code.google.com/p/format/issues/detail?id=7)).  Remaining work to get %g and %G conversion specifiers working properly.
  * 20-Jan-2014: Bug in floating-point rounding code caused incorrect output for some values.
  * 19-Aug-2013: Enhanced the `e`, `E`, `f` and `F` floating point conversions with the use of the `!` flag to implement formatting to Engineering (x103 etc) or SI (mega, micro, etc) units.
  * 08-Aug-2013: Sincere apologies to those who have raised issues over the last couple of years.  For some reason google did not notify me and I have only just found them.  Hopefully now fixed.
  * 19-Mar-2013: Added support for `e`, `E`, `f`, `F`, `g` and `G` floating point conversions.
  * 19-mar-2013: After much consideration I have decided to change the way grouping is specified into a more natural form.  This unfortunately breaks existing code. _Sorry_
  * 16-Aug-2012: Added arbitrary numeric base conversions.
  * 22-May-2012: Centre flag '^' uses '-' flag to bias left in %s conversions.  It now also defaults to right bias in the same way that non-centred %s conversions are right-aligned by default.
  * 07-Feb-2011: Added grouping specifiers to numeric conversions.
  * 09-Dec-2010: Added support for ROM-located strings.
  * 08-Dec-2010: Release 1.1 now available.
  * 23-Nov-2010: Extended %c and added %C.
  * 12-Nov-2010: Initial port to 8-bit AVR shows good size of about 2.5-2.8kB
  * 11-Nov-2010: Added TestedPlatforms page
  * 28-Sept-2010: Added support for length modifiers `hh`, `j`, `z`, `t`
  * 23-June-2010: Release 1.0 now available.

# Features #

  * Small code size (3kB code size without floating point formats, 6kB code with float support, compiled for ARM with GCC 4.4)
  * Low system overheads (no large buffers)
  * Fully re-entrant
  * Supports most of ANSI C99 printf() format specifications (see below for exceptions) with many useful features

## ANSI Exceptions ##

The following features from the ANSI C99 printf() format specifications are not supported in the current version of **format**

  * Hexadecimal floating point conversions (`a`,`A`)
  * Length modifiers `ll` (long long int), `L` (long double)

New features added include

  * `b` binary conversion for formatting unsigned values in base-2
  * `!` flag modifies the behaviour of the `#` flag in binary, octal and hexadecimal conversions to always add the prefix (the default is to drop the prefix for zero results)
  * `!` flag modifies the behaviour of the `e`, `E`, `f` and `F` floating point conversions to use engineering (for `e`/`E`) or SI (`f`/`F`) formatting
  * interspersing format specification and arguments using a new continuation specifier
  * `^` flag centre-justifies conversion results if the field is wide enough to require padding
  * `c` conversion treats precision as a repetition count.
  * `C` conversion is same as `c` but gets character from format string itself.
  * `#` flag with continuation and `s` conversions to select alternate ROM-based string pointers
  * `I` and `U` conversions, together with a numeric base modifier, for arbitrary numeric base conversions

# Producing Output #

**format** itself does not send any output characters to any device.  Instead, it calls a _consumer function_, supplied by the caller, to process any output.  A simple example would be a function to send the characters to a UART.  A more advanced use might be sending characters to an LCD.

---

repository: nejohnson/format

gha_language: C

repo_name: nejohnson/format


text:
# X10 Interface TW523

By: Sal Mustafa

Language: Spin, Assembly

Created: Apr 17, 2013

Modified: April 17, 2013

This routine will receive raw X10 codes from TW523. See manual http://www.smarthome.com/manuals/MAN-1136.pdf for list of codes.

repository: parallaxinc/propeller

gha_language: Propeller Spin

repo_name: parallaxinc/propeller


text:
# jQuery Form Validator

With this feature rich jQuery plugin it becomes easy to validate user input while keeping your
 HTML markup clean from javascript code. Even though this plugin has **a wide range of validation functions**
it's designed to require as little bandwidth as possible. This is achieved by grouping together validation functions
in "modules", making it possible for the programmer to load **only those functions that's needed** to validate a
particular form.

**Form demos and full documentation is available at http://formvalidator.net/**

*Usage example*

```html
<form action="" method="POST">
  <p>
    Name (4 characters minimum):
    <input name="user" data-validation="length" data-validation-length="min4" />
  </p>
  <p>
    Birthdate (yyyy-mm-dd):
    <input name="birth" data-validation="birthdate" />
  </p>
  <p>
    Website:
    <input name="website" data-validation="url" />
  </p>
  <p>
    <input type="submit" />
  </p>
</form>
<script src="js/jquery.min.js"></script>
<script src="js/form-validator/jquery.form-validator.min.js"></script>
<script>
/* important to locate this script AFTER the closing form element, so form object is loaded in DOM before setup is called */
    $.validate({
        modules : 'date, security'
    });
</script>
```

### Support for HTML5

As of version 2.2 (unreleased) you can use this plugin as a fallback solution for the validation attributes in the HTML5 spec. Add the module `html5` to the module declaration and you can use the following native features:

**Attributes**: require, pattern, maxlength, min, max, placeholder

**Input types**: url, date, time, email, number

**Elements**: Use the element `datalist` to create input suggestions

### Default validators and features (no module needed)
 * **url**
 * **email**
 * **domain** — *domain.com*
 * **number** — *float/negative/positive/range/step*
 * **date** — *yyyy-mm-dd (format can be customized, more information below)*
 * **alphanumeric** — *with support for defining additional characters*
 * **length** — *min/max/range*
 * **required** — *no validation except that a value has to be given*
 * **custom** — *Validate value against regexp*
 * **checkboxgroup** — *ensure at least 1 checkbox in group has been selected*
 * Show help information automatically when input is focused
 * Validate given values immediately when input looses focus.
 * Make validation optional by adding attribute data-validation-optional="true" to the element. This means
 that the validation defined in data-validation only will take place in case a value is given.
 * Make validation dependent on another input of type checkbox being checked by adding attribute
 data-validation-if-checked="name of checkbox input"
 * Create input suggestions with ease, no jquery-ui needed
 * to apply multiple validators to an input element, separate the validator names using a space (ex: required email)

Read the documentation for the default features at [http://formvalidator.net/#default-validators](http://formvalidator.net/#default-validators)

### Module: security
 * **spamcheck**
 * **confirmation**
 * **creditcard**
 * **CVV**
 * **strength** — *Validate the strength of a password*
 * **server** — *Validate value of input on server side*

Read the documentation for the security module at [http://formvalidator.net/#security-validators](http://formvalidator.net/#security-validators)

### Module: date
 * **time** — *hh:mm*
 * **birthdate** — *yyyy-mm-dd, not allowing dates in the future or dates that's older than 122 years (format can be customized, more information below)*

Read the documentation for the date module at [http://formvalidator.net/#date-validators](http://formvalidator.net/#date-validators)

### Module: location
 * **country**
 * **federatestate**
 * **longlat**
 * Suggest countries (english only)
 * Suggest states in the US

Read the documentation for the location module at [http://formvalidator.net/#location-validators](http://formvalidator.net/#location-validators)

### Module: file
 * **mime**
 * **extension**
 * **size**

Read the documentation for the file module at [http://formvalidator.net/#file-validators](http://formvalidator.net/#file-validators)

### Module: sweden
 * **swemob** — *validate that the value is a swedish mobile telephone number*
 * **swesec** — *validate swedish social security number*
 * **county** - *validate that the value is an existing county in Sweden*
 * **municipality** - *validate that the value is an existing municipality in Sweden*
 * Suggest county
 * Suggest municipality

Read the documentation for the Swedish module at [http://formvalidator.net/#sweden-validators](http://formvalidator.net/#sweden-validators)

### Module: uk
 * **ukvatnumber**

Read the documentation for the UK module at [http://formvalidator.net/#uk-validators](http://formvalidator.net/#uk-validators)

## Writing a custom validator
You can use the function `$.formUtils.addValidator()` to add your own validation function. Here's an example of a validator
that checks if the input contains an even number.

```html
<form action="" method="POST">
    <p>
        <input type="text" data-validation="even" />
    </p>
    ...
</form>
<script src="js/jquery.min.js"></script>
<script src="js/form-validator/jquery.form-validator.min.js"></script>
<script>

    // Add validator
    $.formUtils.addValidator({
        name : 'even',
        validatorFunction : function(value, $el, config, language, $form) {
            return parseInt(value, 10) % 2 === 0;
        },
        errorMessage : 'You have to answer an even number',
        errorMessageKey: 'badEvenNumber'
    });

    // Initiate form validation
    $.validate();

</script>
```

### Required properties passed into $.formUtils.addValidator

*name* - The name of the validator, which is used in the validation attribute of the input element.

*validatorFunction* - Callback function that validates the input. Should return a boolean telling if the value is considered valid or not.

*errorMessageKey* - Name of language property that is used in case the value of the input is invalid.

*errorMessage* - An alternative error message that is used if errorMessageKey is left with an empty value or isn't defined
in the language object. Note that you also can use [inline error messages](http://formvalidator.net/#localization) in your form.

The validation function takes these five arguments:
- value — the value of the input thats being validated
- $el — jQuery object referring to the input element being validated
- config — Object containing the configuration of this form validation
- language — Object with error dialogs
- $form — jQuery object referring to the form element being validated

## Creating a custom module

A "module" is basically a javascript file containing one or more calls to [$.formUtils.addValidator()](#writing-a-custom-validator). The module file
should either have the file extension *.js* (as an ordinary javascript file) or *.dev.js*.

Using the file extension **.dev.js** will tell *$.formUtils.loadModules* to always append a timestamp to the end of the
URL, so that the browser never caches the file. You should of course never use *.dev.js* on a production website.

### Loading your module ###

```html
<html>
<head>
    <script src="js/form-validator/jquery.form-validator.min.js"></script>
    <script>
        $.formUtils.loadModules('mymodule.dev', 'js/validation-modules/');
    </script>
</head>
</html>
...
```

The first argument of $.formUtils.loadModules is a comma separated string with names of module files, without
file extension (add .dev if the file name is for example mymodule.dev.js, this will insure that the browser never
caches the javascript).

The second argument is the path where the module files is located. This argument is optional, if not given
the module files has to be located in the same directory as the core modules shipped together with this jquery plugin
(js/form-validator/)

## Show help information
It is possible to display help information for each input. The information will fade in when input is focused and fade out when input looses focus.

```html
<form action="" id="my_form">
	<p>
	  <strong>Why not:</strong>
	  <textarea name="why" data-validation-help="Please give us some more information" data-validation="required"></textarea>
	</p>
	...
```

## Fully customizable

Read about how to customize this plugin over at [http://formvalidator.net/#configuration](http://formvalidator.net/#configuration)

### Validate On Event ###
You can cause an element to be validated upon the firing of an event, by attaching an attribute to the form input element named `data-validation-event="click"`. When the configuration settings have `validateOnEvent : true`, the click event will trigger the onBlur validaton for that element. Possible use case: Checkboxes. Instead of waiting for the checkbox to lose focus (blur) and waiting for a validation to occurr, you can specify that elements validation should occur as soon as that checkbox element is clicked.

## Localization
This plugin contains a set of error dialogs. In case you don't define an inline error message the plugin
will fall back on one of the dialogs below. You can how ever add the attribute *data-validation-error-msg* to an
element, and that message will be displayed instead. All error dialogs can be overwritten by passing an
object into the validation function.

```javascript
var enErrorDialogs = {
    errorTitle : 'Form submission failed!',
    requiredFields : 'You have not answered all required fields',
    badTime : 'You have not given a correct time',
    badEmail : 'You have not given a correct e-mail address',
    badTelephone : 'You have not given a correct phone number',
    badSecurityAnswer : 'You have not given a correct answer to the security question',
    badDate : 'You have not given a correct date',
    lengthBadStart : 'The input value must be between ',
    lengthBadEnd : ' characters',
    lengthTooLongStart : 'The input value is longer than ',
    lengthTooShortStart : 'The input value is shorter than ',
    notConfirmed : 'Input values could not be confirmed',
    badDomain : 'Incorrect domain value',
    badUrl : 'The input value is not a correct URL',
    badCustomVal : 'The input value is incorrect',
    badInt : 'The input value was not a correct number',
    badSecurityNumber : 'Your social security number was incorrect',
    badUKVatAnswer : 'Incorrect UK VAT Number',
    badStrength : 'The password isn\'t strong enough',
    badNumberOfSelectedOptionsStart : 'You have to choose at least ',
    badNumberOfSelectedOptionsEnd : ' answers',
    badAlphaNumeric : 'The input value can only contain alphanumeric characters ',
    badAlphaNumericExtra: ' and ',
    wrongFileSize : 'The file you are trying to upload is too large (max %s)',
    wrongFileType : 'Only files of type %s is allowed',
    groupCheckedRangeStart : 'Please choose between ',
    groupCheckedTooFewStart : 'Please choose at least ',
    groupCheckedTooManyStart : 'Please choose a maximum of ',
    groupCheckedEnd : ' item(s)',
    badCreditCard : 'The credit card number is not correct',
    badCVV : 'The CVV number was not correct'
};
```

```html
<form action="script.php">
    ...
</form>
<script src="js/jquery.min.js"></script>
<script src="js/form-validator/jquery.form-validator.min.js"></script>
<script src="js/form-validator/locale.en.js"></script>
<script>
  $.validate({
    language : enErrorDialogs
  });
</script>
...
```

It's also possible to add inline error messages. If you add attribute `data-validation-error-msg` to an element the value of
that attribute will be displayed instead of the error dialog that the validation function refers to.

## Input length restriction
```html
<p>
  History (<span id="maxlength">50</span> characters left)
  <textarea rows="3" id="area"></textarea>
</p>
<script type="text/javascript">
  $('#area').restrictLength( $('#maxlength') );
</script>
```

## Program Flow
Form submit() event is bound to jQ func **validateForm()** when the form is submitted, it calls
jQ func **$.formUtils.validateInput**, which calls **validatorFunction** for the specific validation
rule assigned to the input element. If a validation fails, error messages are assigned and displayed
as configured. If **validateOnBlur** is set to true, jQ finds all form input elements with the
data-validation attribute and binds their onBlur event to call the function **validateInputOnBlur**.
it calls jQ func **$.formUtils.validateInput** to validate the single input when blurred.

## Changelog

#### 2.2.0 (unreleased)
* Now possible to define an error message for each validation rule on a certain input (issue #113)
* This plugin now serves as a html5 fallback. You can now use the native attributes to declare which type
of validation that should be applied.
* Use a template for error messages when having errorMessagePosition set to top
* Added validation of credit card number and CVV to the security module
* Event onElementValidate added
* Use the attribute data-validation-confirm to declare which input that should be confirmed when using validation=confirmation (issue #112)
* Validation "required" now supports inputs of type radio
* $.validateForm is now deprecated, use $.isValid instead

#### 2.1.47
* Incorrect error-styling when using datepicker or suggestions is now fixed
* Incorrect error-styling of select elements is now fixed
* Deprecated function $.validationSetup is now removed, use $.validate() instead
* You can now return an array with errors using the event `onValidate`
* You can now declare an element where all error messages should be placed (config.errorMessagePosition)

#### 2.1.36
* Now possible to use the native reset() function to clear error messages and error styling of the input elements

#### 2.1.34
* General improvements and bug fixes
* Added events "beforeValidation" and "validation" (see http://formvalidator.net/#configuration_callbacks for more info)

#### 2.1.27
 * E-mail validation support .eu top domain
 * Improvements in server validation
 * Now possible to re-initiate the validation. This makes it possible to dynamically change the form and then call $.validate() again to refresh the validation (issue #59)
 * Number validation now supports range

#### 2.1.15
 * E-mail addresses can now contain + symbol
 * Correction of the US states in validation "federatestate"
 * Fixed bug in server validation

#### 2.1.9
 * File validation now support multiple files
 * Length validation can now be used to validate the number of uploaded files using a file input that supports multiple files
 * Validation classes is no longer applied on inputs that for some reason shouldn't become validated

#### 2.1.8
 * Now possible to configure the decimal separator when validating float values. Use either the
 attribute *data-validation-decimal-separator* or the property *decimalSeparator* when
calling $.validate()
 * $.validationSetup is renamed to $.validate. You will still be able to initiate the validation by calling
 the $.validationSetup but it's considered deprecated.

#### 2.1.6
 * Modules can now be loaded from remote website

#### 2.1.5
 * Fixed language bug (issue #43 on github)
 * Validation on server side is now triggered by the blur event
 * Now using class names that's compliant with twitter bootstrap 3.x

#### 2.1
 * Code refactoring and some functions renamed
 * Validator "checkbox_group" added

#### 2.0.7
 * Now possible to validate file size, extension and mime type (using the file module)

#### 2.0
 * [min|max]_length is removed (now merged with length validation).
 * The number, int and float validation is merged together, all three variants is now validated by the number validation.
 * Phone validation is moved to "sweden" module and renamed to swephone.
 * The attribute to be used when defining the regular expression for custom validations is now moved to its own attribute (data-validation-regexp)
 * Length validation now looks at attribute data-validation-length (eg. min5, max200, 3-12).
 * The validation rule no longer needs to be prefixed with "validate_" (it's still possible to use the prefix but it's considered deprecated).
 * Some validation functions is moved to modules (see the function reference over at http://formvalidator.net).
 * Added function $.validationSetup() to reduce the amount of code that has to be written when initiating the form validation.

repository: yiiSpace/YiiSpace

gha_license_id: NOASSERTION

repo_name: yiiSpace/YiiSpace


text:
---
layout: default
---

# 1996-01-29 - Re: "German service cuts Net access" (to Santa Cruz)

## Header Data

From: "Declan B. McCullagh"<EMAIL_ADDRESS>To: "James A. Donald"<EMAIL_ADDRESS>Message Hash: e1b7a143deaecd05ac3d90272b48c08e26cc4a0b6718ec9a11a30a6d65debdb4

Message ID<EMAIL_ADDRESS>Reply To<EMAIL_ADDRESS>UTC Datetime: 1996-01-29 21:17:43 UTC

Raw Date: Tue, 30 Jan 1996 05:17:43 +0800

## Raw message

```
{% raw  %}From: "Declan B. McCullagh"<EMAIL_ADDRESS>Date: Tue, 30 Jan 1996 05:17:43 +0800
To: "James A. Donald"<EMAIL_ADDRESS>Subject: Re: "German service cuts Net access" (to Santa Cruz)
In-Reply-To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

Excerpts from internet.cypherpunks: 28-Jan-96 Re: "German service cuts
Ne.. by "James A. Donald"@echequ
> The German prosecuters are currently targeting the site of Mr Zundel, "who
> is well known for his open revisionist positions."
>
>
> Zundel is not in fact a Nazi, but an anti nazi:  Here is a sample
> of his work.
>
> Bottom line.

You're actually quoting from an inspired bit of trolling. See my recent
message: "Ernst Zundel impersonator on Usenet"

Whatever he is, Zundel is not an anti-Nazi. He's perhaps the world's
leading holocaust revisionist, and is now living in Canada. He's
well-known to our northern neighbors; his trial for speech crimes went
all the way to the Canadian Supreme Court. His web site is at:

       http://www.webcom.com/~ezundel/english/

But I agree with your basic point.

-Declan

{% endraw %}
```

## Thread

+ Return to [January 1996](/archive/1996/01)

+ Return to "["Declan B. McCullagh" <declan+@CMU.EDU>](/authors/declan_b_mccullagh_declan_at_cmu_edu_)"
+ Return to "["James A. Donald" <jamesd@echeque.com>](/authors/james_a_donald_jamesd_at_echeque_com_)"

+ 1996-01-29 (Tue, 30 Jan 1996 04:03:02 +0800) - [Re: "German service cuts Net access" (to Santa Cruz)](/archive/1996/01/e9dbea9be3e28d80572e99512a63d296c47e70fb169f7d28296d6cd664e2fcac) - _"James A. Donald"<EMAIL_ADDRESS>  + 1996-01-29 (Tue, 30 Jan 1996 05:17:43 +0800) - Re: "German service cuts Net access" (to Santa Cruz) - _"Declan B. McCullagh"<EMAIL_ADDRESS>


text:
# Sequelize Quick SSCCE Base Repository

Use this repository to quickly create an [SSCCE](http://www.sscce.org/) for your issue! This way your issue will be much easier to investigate.

By using this repository, you won't have to worry about setting up any database. You don't need to install anything, you don't need docker, you don't need to spend time configuring a development environment to create your SSCCE. Everything is already set up for you.

**You just [write your code](src/sscce.js) and it works, directly from GitHub!**

## Step 1 - Create the SSCCE

Go to the [src/sscce.js](https://github.com/papb/sequelize-sscce/blob/master/src/sscce.js) file in this repository, and click the edit button (a pencil).

 You will see this message:

Just create your SSCCE in that file, and commit it to your fork:

## Step 2 - Run your SSCCE with GitHub Actions

This step is **extremely easy**. Now that you have commited your SSCCE to your fork, just open a Pull Request (don't worry, *I won't accept it!*):

The idea here is that once you open the pull request, GitHub Actions will automatically execute it for you, since I have it configured in the main repository. I won't accept the pull request, since the goal is just to have your code executed.

It will run your SSCCE and show show a green checkmark (or a red X) next to the commit:

## What if you want to make some changes to the SSCCE?

Just add more commits on top of it, in your fork, and your PR will be updated automatically, and the SSCCE will be executed again.

## I don't want to open a pull request for this

Why not? This repository was created exactly for this purpose. Please feel free to use it.

However, if you prefer, you can also have your SSCCE executed in your own fork, via GitHub actions.

## Creating a dialect-specific SSCCE

By default, your SSCCE will be executed on all dialects. If you only want a specific dialect, you can check the `process.env.DIALECT` variable. For example, if you only want to run your SSCCE for postgres, you can add the following at the beginning of your SSCCE code:

```js
if (process.env.DIALECT !== "postgres") return;
// The rest of the SSCCE goes here...
```

## Enabling specific postgres extensions

If your issue needs a postgres extension such as `uuid-ossp`, you should enable it at the beginning of your SSCCE:

```js
await sequelize.query(`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`);
// The rest of the SSCCE goes here...
```

## Creating a SSCCE with TypeScript

Just use the [src/sscce.ts](src/sscce.ts) file instead of the [src/sscce.js](src/sscce.js) file. That's it, super easy. Also works directly from GitHub.

## Running the SSCCE locally

This repository also comes with built-in support for running your SSCCE locally on SQLite:

* Clone this repository
* `npm install`
* Edit the `src/sscce.js` as you like
* `npm start`

The above will run your SSCCE locally on SQLite, with no need for any other extra setup.

There is no local support for other dialects; this is harder because requires setting up local databases. It is doable, but out of scope for this repository. [Learn more](https://github.com/sequelize/sequelize/blob/master/CONTRIBUTING.md#3-database).

### Running the SSCCE locally for TypeScript

Do the same as above, except:

* Edit the `src/sscce.ts` file instead of the `src/sscce.js` file
* Run `npm run ts` instead of `npm start`

## License

MIT (c) Pedro Augusto de Paula Barbosa

repository: ephys/sequelize-sscce

repo_name: ephys/sequelize-sscce


text:
---
title: GKE Whitelisting
nav_text: GKE
categories: helpers-google
---

This page covers how to enable GKE IP Whitelisting. This feature is useful for deploying from a CloudBuild with GKE Private Clusters.

GKE Private Clusters whitelist and only allow authorized IPs to communicate with the Kubernetes control plane.  An issue with CloudBuild is that the IP address is not well-known.  Google creates a VM to run the CI scripts and throws it away when finished.  Kubes can detect the IP of the CloudBuild machine, add it to the cluster, deploy, and remove the IP afterward.

## Setup

To enable the GKE IP whitelisting feature, it's a few simple configurations:

.kubes/config/env/dev.rb

```ruby
KubesGoogle.configure do |config|
  config.gke.cluster_name = "dev-cluster"
  config.gke.google_region = ENV['GOOGLE_REGION']
  config.gke.google_project = ENV['GOOGLE_PROJECT']
  config.gke.enable_hooks   = KubesGoogle.cloudbuild?
  config.gke.enable_get_credentials = KubesGoogle.cloudbuild? # enable hook to call: gcloud container clusters get-credentials
end
```

This enables `kubes apply` before and after hooks to add and remove the current machine IP.

Notes:

* Notice the use of `KubesGoogle.configure` instead of `Kubes.configure` here.
* The `KubesGoogle.cloudbuild?` checks if kubes is running on a CloudBuild machine.  So hooks don't run locally on your machine.

## Options

Here are the `config.gke` settings:

Name | Description | Default
---|---|---
{% include plugins/gke-config.md %}

## Build Docker Image

To build kubes as a Docker image entrypoint for [Google CloudBuild Custom Builder](https://cloud.google.com/cloud-build/docs/configuring-builds/use-community-and-custom-builders).

    git clone http://github.com/boltops-tools/kubes
    cd kubes
    gcloud builds submit --tag gcr.io/$GOOGLE_PROJECT/kubes

Be sure to set GOOGLE_PROJECT to your own project id.

## Example Codebuild YAML

cloudbuild.yaml:

```yaml
steps:
- name: 'gcr.io/$PROJECT_ID/kubes'
  args: ['deploy']
  env:
  - 'DOCKER_REPO=gcr.io/$PROJECT_ID/demo'
  - 'GOOGLE_PROJECT=$PROJECT_ID' # .kubes/config.rb: config.repo
  - 'KUBES_ENV=$_KUBES_ENV'
  - 'KUBES_EXTRA=$_KUBES_EXTRA'
  - 'KUBES_REPO_AUTO_AUTH=0'

substitutions:
  _KUBES_ENV: dev
  _KUBES_EXTRA: ''
options:
    substitution_option: 'ALLOW_LOOSE'
```

Make sure to replace the substitutions with your own values. IE: _KUBES_ENV, etc.

## Google CloudBuild IAM Permissions

In order to update the GKE cluster master authorized IP and whitelist the CloudBuild IP, you'll need to allow the CloudBuild IAM role permissions.

Important: The "Kubernetes Engine Developer" that is available in the Cloud Build Settings page as described in [Configuring access for Cloud Build Service Account](https://cloud.google.com/cloud-build/docs/securing-builds/configure-access-for-cloud-build-service-account) does not suffice. You'll need to add the "Kubernetes Engine Cluster Admin" role. Here are the steps:

1. Go to the Google IAM Console and search "cloudbuild"
2. Click "Edit Member"
3. Add the "Kubernetes Engine Cluster Admin" role

## Run CloudBuild

Run cloudbuild to deploy the dev env:

    gcloud builds submit --config cloudbuild.yaml

To deploy the prod env:

    gcloud builds submit --config cloudbuild.yaml --substitutions _KUBES_ENV=prod

See [gcloud builds submit](https://cloud.google.com/sdk/gcloud/reference/builds/submit) reference docs for more options.

repository: edwinitdekker/kubes

repo_name: edwinitdekker/kubes


text:
# 题目描述
[原题链接](https://leetcode.com/problems/middle-of-the-linked-list/)

Given a non-empty, singly linked list with head node head, return a middle node of linked list.

If there are two middle nodes, return the second middle node.

```
Input: [1,2,3,4,5]
Output: Node 3 from this list (Serialization: [3,4,5])
The returned node has value 3.  (The judge's serialization of this node is [3,4,5]).
Note that we returned a ListNode object ans, such that:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, and ans.next.next.next = NULL.

Input: [1,2,3,4,5,6]
Output: Node 4 from this list (Serialization: [4,5,6])
Since the list has two middle nodes with values 3 and 4, we return the second one.
```

<!--more-->

# 分析
简单的做法是首先遍历一遍，并且存入数组中，最后返回数组中间的值即可

优雅的做法是，有两个指针一个快指针，一个慢指针，快的指针一下走两步，慢的一下走一步，这样当快的指针到终点时候，慢的指针刚好处于一半的位置

# 代码
空间复杂度O(N),时间复杂度O(1)
```Python
# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def middleNode(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        slow = fast = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
        return slow

```

url: https://raw.githubusercontent.com/ranglang/Algorithm/56b089b2c53e8c2d8bbac34b065c896ab9cf4782/leetcode/LinkedList/876. Middle of the Linked List.md

repository: ranglang/Algorithm

filename: 876. Middle of the Linked List.md

repo_name: ranglang/Algorithm


text:
# Network setup

ubuntu uses local DNS resolver, we need to change it. [source](https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/#known-issues)

Issue:

```bash
root@cka-1:~# kubectl get nodes
NAME    STATUS     ROLES           AGE   VERSION
cka-1   NotReady   control-plane   58m   v1.27.1
cka-2   NotReady   <none>          50m   v1.27.1
cka-3   NotReady   <none>          50m   v1.27.1
```

change host configuration. [solve](https://gist.github.com/superseb/f6894ddbf23af8e804ed3fe44dd48457)

```bash
sudo systemctl mask systemd-resolved
sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
```

Result:

```bash
root@cka-1:~# kubectl get nodes
NAME    STATUS   ROLES           AGE   VERSION
cka-1   Ready    control-plane   65m   v1.27.1
cka-2   Ready    <none>          57m   v1.27.1
cka-3   Ready    <none>          57m   v1.27.1
```

repository: SakibFarhad/mytools

repo_name: SakibFarhad/mytools


text:
# [VQMOD] Link Customer, Color Order Status and Display Payment Method in Admin > Sales > Orders

**Opencart**: v<IP_ADDRESS>
**Attention**: You have to install `[VQMOD]` for **Opencart** ( https://github.com/vqmod/vqmod/releases ) for this to work!

Upload the contents of the `upload` folder.


text:
---
title: Resources for Education and Career Guidance Personnel
permalink: /guides/business/career-guidance/resources-for-education-and-career-guidance-personnel
breadcrumb: Resources for Education and Career Guidance Personnel
collection_name: business-career-guidance
published: true
---

### Guide Index

* [Introduction](#introduction)
* [Books](#books)
* [Databases](#databases)
* [Accessing National Library Board Singapore Resources](#accessing-national-library-board-singapore-resources)
* [Author](#author)

## Introduction

Education and Career Guidance (ECG) refers to imparting the necessary knowledge, skills, values and information to help students to make informed decisions about their education and career options.

Professionals and educators provide education and career guidance to students to help them learn more about their own interests, abilities and passions. By exploring the learning or education pathways and career opportunities available across different industries, students can take positive steps towards their aspirations as well as embrace lifelong learning.

These are some selected materials on the topic of resources for education and career guidance personnel that are available from NLB or the Internet. As this list is not intended to be exhaustive, please search the [NLB catalogue](http://catalogue.nlb.gov.sg/) or the Internet for more resources.

| **Search Terms** | **Call Numbers** |
| Career interests | 331.7 |
| Educational guidance, educational counselling | 371.4, 346.7 |
| Career decision making, career life-plan, vocational education | 650.1 |

### Books

(listed in alphabetical order)

101+ careers in public health

by Beth Seltzer

Call No.: R 362.1023 SEL

This book provides an extensive overview of the numerous and diverse career options available and the many different roads to achieve them. It covers public health careers in the military, public health and aging, and careers in cutting-edge areas such as nanotechnology and public health genetics..

All rights reserved, New York: Springer Publishing Company, 2016.

This title is also available as an ebook on [Overdrive](https://nlb.overdrive.com/media/2519654). myLibrary ID is required to access this ebook.

50 ways to get a job: An unconventional guide to finding work on your terms

by Dev Aujla and Lodro Rinzler

Through a series of pragmatic exercises, the author offers a practical guide for job seekers looking at an uncertain job market to find a job that meet their desires, skills and abilities.

All rights reserved, Boston: Houghton Mifflin Harcourt, 2018.

This title is available as an ebook on [Overdrive](https://nlb.overdrive.com/media/3309188). myLibrary ID is required to access this ebook.

Bridging the gaps: College pathways to career success

by James E. Rosenbaum, Caitlin E. Ahearn, and Janet E. Rosenbaum

Call No.:<PHONE_NUMBER>73 ROS -\[BIZ\]

Using case studies, the authors evaluate the shortcomings and successes of community colleges and investigate how these institutions can promote alternatives to the bachelor’s degree and traditional college procedures to increase graduation rates and improve job payoffs.

All rights reserved, New York: Russell Sage Foundation, 2017.

Careers for dummies

by Marty Nemko

This is a comprehensive career guide that may assist in jump starting a career. Learn about available career opportunities, aided by detailed job descriptions and find out about the certifications, degrees and continuing education options which can assist in building one’s career.

All rights reserved, Hoboken, NJ: Wiley, 2018.

This title is available as an ebook on [Overdrive](https://nlb.overdrive.com/media/3655926). myLibrary ID is required to access this ebook.

Teach to work: How a mentor, a mentee and a project can close the skills gap in America

by Patricia Alper

Call No.: 658.3124 ALP -\[BIZ\]

The book provides a step-by-step guide to help professionals share their knowledge with the next generation of workers through this inter-generational experience. The author is experienced in mentoring inner-city high-school students and reveals how corporations and professionals can have a significant impact on the career pathways of America’s youths.

All rights reserved, New York: Bibliomotion, 2017.

The career guide for creative and unconventional people

by Carol Eikleberry and  Carrie Pinsky

Call No.: 331.702 EIK -\[BIZ\]

This is a practical career guide for creatively inclined job seekers of all ages. This new edition delves more deeply into freelancing as a career, explores social media as it relates to creative job searches, provides new success stories, provides up-to-date salary information and adds new job descriptions to the directory of more than 280 creative occupations..

All rights reserved, Berkeley, CA: Ten Speed Press, 2015.

This title is also available as an ebook on [Overdrive](https://nlb.overdrive.com/media/2209299). myLibrary ID is required to access this ebook.

The myth of the nice girl: Achieving a career you love without becoming a person you hate

by Fran Hauser

Call No.: 650.1 HAU -\[BIZ\]

The author provides a useful guide on how women can achieve satisfying careers of power and leadership without sacrificing kindness. She also gives tips on how to strategise, cultivate confidence and balance personal and professional values.

All rights reserved, Boston: Houghton Mifflin Harcourt, 2018.

This title is also available as an ebook on [Overdrive](https://nlb.overdrive.com/media/3360087). myLibrary ID is required to access this ebook.

The third door: The wild quest to uncover how the world’s most successful people launched their careers

by Alex Banayan

Learn about the unconventional adventures of successful people in business such as Bill Gates, Maya Angelou, Steve Wozniak, Jane Goodall, Larry King, Jessica Alba, Tim Ferriss, Quincy Jones, Warren Buffett, Lady Gaga and more.

All rights reserved, New York: The Crown Publishing Group, 2018.

This title is also available as an ebook on [Overdrive](https://nlb.overdrive.com/media/3684920). myLibrary ID is required to access this audiobook.

	Who do you think you are?: Three crucial conversations for coaching teens to college and career success

by Stephen M. Smith and Shaun Fanning

Call No.: R 371.4 SMI

This book details an easy-to-follow road map for families, school counselors and mentors who help young people to make career choices that allow them to excel. This intuitive guidebook helps in orchestrating discussions and unearthing the right options for each child.

 All rights reserved, Hoboken, NJ: John Wiley & Sons, Inc., 2017.

### Websites

(listed in alphabetical order)

* Australian Department of Education and Training. (2017). [Information for career practitioners](https://www.education.gov.au/information-career-practitioners). Retrieved 3 July, 2018, from Australian Department of Education and Training website:

https://www.education.gov.au/information-career-practitioners

This website provides information on career practitioner resources for career advisers in schools, universities and Technical and Further Education (TAFEs), Vocational education and Training (VET) teachers and coordinators, counsellors and those operating in community-based organisations. It also provides employment related programmes which can be downloaded. In addition, there are links provided to career practitioner associations in Australia.

* National Career Development Association. (2017, June 23). [Internet sites for career planning](https://www.ncda.org/aws/NCDA/pt/sp/resources). Retrieved 2 July, 2018, from National Career Development Association website:

https://www.ncda.org/aws/NCDA/pt/sp/resources

The site offers resources on career development that are useful for career counsellors, coaches, and specialists. Resource topics covered include Self-Assessment, General Occupational Information, Industry and Occupation-Specific Information, Education Topics and Employment Trends.

### Databases

(listed in alphabetical order)

* Bowers, H., Lemberger-Truelove, M., & Brigman, G. (2018). A social-emotional leadership framework for school counselors. Professional School Counseling, 21(1), 1-10. Retrieved October 5, 2018, from ProQuest Central.

Discover the leadership approaches of school counselors in keeping the delicate balance between responding to the complex needs of others and one’s own priorities and capacities as a school leader. The Social-emotional learning framework (SEL) requires school counselors to maintain the integrity of their own social-emotional experiences while supporting those of others thus leading to improved school counseling practices and outcomes.

* Lomako, G., Coward, V., & Ifill, A. (2018). How to become happy – provide students with the skills they need. The Business & Management Review, 9(3) 291-295. Retrieved October 5, 2018, from ProQuest Central.

This article shares how educators help students through co-curricular activities to discover their gifts, talents and abilities when doing course assignments, interdisciplinary team projects and researches. These help and provide guidance to meet students’ careers choice in future.

### Accessing National Library Board Singapore Resources

Accessing the Print Materials

You can search the library catalogue (for physical materials) in the library and from home (http://catalogue.nlb.gov.sg). The easy search function allows you to search/browse by author, title, keyword, subject and ISBN/ISSN whereas the advanced search allows you to narrow your searches to specific media types or language holdings. In both instances, you will also be able to limit your search to specific libraries by clicking on the “limit by branch” option.

**To search Lee Kong Chian Reference Library’s Holdings**

If you wish to search for only materials available in the Lee Kong Chian Reference Library, please always click on the “Limit by Branch” button at the bottom of the page, after you have keyed in your search term. This brings you to a new page whereby you will be able to select the library of your choice. Choose “Lee Kong Chian Reference Library” and select “yes” under the “Display only items available in the selected branch below” and then click on search.

**Things to note:**

Once you have identified the title that you need, please double-check the following information and write down the necessary info:

i. The “Status” of the item: the item is not available in the library, if the status displayed is “in transit”, “in process” or “not ready for loan”.

ii. Double-check that the item is in Lee Kong Chian Reference Library under “Branch”.

iii. Write down the Location Code and the Call Number of the item. This helps you to locate the item within Lee Kong Chian Reference Library. Please refer to the table below for more information (Note: Please feel free to approach the counter staff for help in locating the books.)

All featured books and periodicals are located at the Lee Kong Chian Reference Library.

### Accessing the Databases

The National Library Board (NLB)’s eResources are free for all NLB members. Click [here](http://eresources.nlb.gov.sg/HowDoI.aspx) to find out how to register as a member.

If you’re having problems registering or logging in, please [contact us](http://www.nlb.gov.sg/ContactUs.aspx). If you wish to find information in the databases but am not sure where to begin, or need recommendations on which databases to use, please use the [“Ask A Librarian”](http://www.nlb.gov.sg/Research/AskUs.aspx) function or send an email to [ref<EMAIL_ADDRESS>for help. The librarian will get back to you within three working days.

### Author

Hameedah M Ibrahim

The information in this resource guide is valid as at October 2018 and correct as far as we are able to ascertain from our sources. It is not intended to be an exhaustive or complete history on the subject. Please contact the Library for further reading materials on the topic.

All Rights Reserved. National Library Board Singapore 2018.

repository: nlbnls/nlb-reference

repo_name: nlbnls/nlb-reference


text:
# ggshapes

[![Travis build
status](https://travis-ci.org/EmilHvitfeldt/ggshapes.svg?branch=master)](https://travis-ci.org/EmilHvitfeldt/ggshapes)

The goal of ggshapes is to add more shapes such and stars and other
curves to ggplot2 the same way
[ggforce](https://github.com/thomasp85/ggforce) adds regular polygons
and circles.

## Installation

You can install the released version of ggshapes from
[CRAN](https://CRAN.R-project.org) with:

``` r
# Not released yet
install.packages("ggshapes")
```

And the development version from [GitHub](https://github.com/) with:

``` r
# install.packages("devtools")
devtools::install_github("EmilHvitfeldt/ggshapes")
```

## Examples

ggshapes provides many closed curves, one of which is the simple
[rose](https://en.wikipedia.org/wiki/Rose_\(mathematics\)) curve.

``` r
library(ggshapes)
#> Loading required package: ggplot2
ggplot() +
  geom_rose(aes(n = 2, d = 1, c = 0))
```

Each of these geoms comes with some tuning parameters that result in
widely different curves so you should play around.

``` r
data <- data.frame(a = rep(1:6, times = 6),
                   b = rep(1:6, each = 6),
                   delta = 1)

ggplot(data) +
  geom_lissajous(aes(a = a, b = b, delta = delta)) +
  facet_grid(a ~ b) +
  labs(title = "lissajous curves at varying values of a and b", x = "b", y = "a") +
  theme_minimal() +
  theme(axis.ticks.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.x = element_blank(),
        axis.text.x = element_blank())
```

ggshapes doesn’t natively work with
[gganimate](https://github.com/thomasp85/gganimate) but gifs can be
hacked together using
[gifski](https://ropensci.org/technotes/2018/07/23/gifski-release/).

``` r
library(gifski)
makeplot <- function(){
  data <- expand.grid(tips = 2:10, time = seq(0, pi * 2, length.out = 50)[-1])

  datalist <- split(data, data$time)
  lapply(datalist, function(data){
    p <- ggplot(data) +
           geom_star(aes(n_tips = tips, rotation = time)) +
           coord_fixed() +
           theme_void() +
           xlim(-1, 1) +
           ylim(-1, 1) +
           facet_wrap(~tips)
    print(p)
  })
}

gif_file <- save_gif(makeplot(), width = 800, height = 800, res = 200, delay = 0.01, gif_file = "man/example.gif")
```

![](man/example.gif)

## Design choices

All the geoms that produces closed curves (under certain choice of
parameters) comes with a couple of geom specifit tuning parameters (`n`,
`d` and `c` for `geom_star()`) and some shared aesthetics

  - x0
  - y0
  - xscale
  - yscale
  - rotation

which denote the x and y coordinate of the center, the x and y scaling
of the curve and its rotation in radians. By defaults the geoms produces
curves bounded between -1 and 1, centered around (0, 0). Rotation is not
applied by default. If rotation and scaling is applied then the curve
will not be bounded anymore (as it retains its scale).

``` r
ggplot() +
  geom_rect(aes(xmin = -1, ymin = -1, xmax = 1, ymax = 1), fill = NA, color = "red", size = 1) +
  geom_lissajous(aes(a = 5, b = 4, delta = 2)) +
  theme_minimal() +
  coord_fixed() +
  labs(title = "The curve is bounded by the square going from (-1, -1) to (1, 1)")
```

``` r
ggplot() +
  geom_rect(aes(xmin = -1, ymin = -1, xmax = 1, ymax = 1), fill = NA, color = "red", size = 1) +
  geom_lissajous(aes(a = 5, b = 4, delta = 2, rotation = pi / 7)) +
  theme_minimal() +
  coord_fixed() +
  labs(title = "Rotation will leave the curve at the same size")
```

## Inspiration

The original inspiration for this package came from the post [film
flowers](http://bl.ocks.org/sxywu/raw/d612c6c653fb8b4d7ff3d422be164a5d/)
by [Shirley Wu](https://twitter.com/sxywu) which drove me to the
realization that such visualizations are quite the hassle to do in
ggplot2 right now.

repository: EmilHvitfeldt/ggshapes

gha_language: R

repo_name: EmilHvitfeldt/ggshapes


text:
# oF-piCam-surveillance
Open frameworks app that captures and uploads images to dropbox when contours are detected.

Uses the following addons:

ofxCv

ofxOpenCv

ofxOMXCamera

Can be used with Dropbox Uploader script: https://github.com/andreafabrizi/Dropbox-Uploader

The techniques are largely the same as in this python example by Adrian Rosebrock: https://www.pyimagesearch.com/2015/06/01/home-surveillance-and-motion-detection-with-the-raspberry-pi-python-and-opencv/

repository: oxcdx/oF-piCam-surveillance

gha_language: Makefile

repo_name: oxcdx/oF-piCam-surveillance


text:
---
layout: default
title: Home
nav_order: 1
description: "Takeaways"
permalink: /
---

# Capture what I have learned!
{: .fs-9 }

These takeaways are to help me review the concept of the courses for each topic and to share what I studied through CS courses.
{: .fs-6 .fw-300 }

[Get started now](#getting-started){: .btn .btn-primary .fs-5 .mb-4 .mb-md-0 .mr-2 } [View it on GitHub](https://github.com/happygoals/takeaways){: .btn .fs-5 .mb-4 .mb-md-0 }

---

## CS Courses that I took at Purdue University Fort Wayne
- Human-Computer Interaction (Docs are coming Soon!)
- [Project Management](https://www.haeminryu.com/takeaways/docs/project-management)
- Computer Architecture
- Software Engineering
- Intro To Computer Graphics
- Web App Development
- Operating Systems Design
- Computer In Society

## Self study materials for my professional work (Software Development)
- [Advanced Visual Programming](https://www.haeminryu.com/takeaways/csharp)
- [XML](https://www.haeminryu.com/takeaways/docs/xml)
- [JQuery](https://www.haeminryu.com/takeaways/jquery)
- [Front-end Development Basics](https://www.haeminryu.com/takeaways/docs/front-end)

### Quick start

1. Find the course name on the left side navigation bar.
2. click the topic of each lesson.
3. Feel free to ask me through my email (design.haemin.ryu at gmail dot com).

## Template of the documents
This template is from Just the Docs, a documentation theme for Jekyll and it is © 2017-2019 by [Patrick Marsceill](http://patrickmarsceill.com).

repository: happygoals/takeaways

repo_name: happygoals/takeaways


text:
# Email Signature Detector
Extracts signatures from emails.

## Usage

### Node

Install: npm install email-signature-detector

```js
const signature = require('email-signature-detector');

const body = `Dave,

See ticket #50366

Why do we issue this

Ron

Ron Smith
VP, Product Solutions
acme.com<http://acme.com/>
714.949.3001<EMAIL_ADDRESS>
const from = { email<EMAIL_ADDRESS>displayName: 'Ron Smith' };
const ret = signature.getSignature(body,from);

```
### Browser

TBD

##	API Reference

### getSignature(body,from,bodyNoSig)
returns - { signature: the signature text, bodyNoSig: see optional bodyNoSig parameter below }
body - contains the email body text
from - optional: contains email and displayName used to detect the sender name in the signature. (see example in Usage)
bodyNoSig - optional: if true the return object includes bodyNoSig : the email text until the beginning of the signature.

## How does it work ?

Currently, the library implements a simple algorithm to detect candidate signature starts, and score each by examining the lines following the start.

For example, words such as Thanks and Regards, when used in short lines are considerd a candidate. the score of each candidate is determined by the content of the following lines, such as phone number, email address, url, sender name.

Note: The detectors of phone numbers, email addresses and urls are simple and their purpose is to support the signature scoring. They shouldn't be used standalone. refer to a specialized detector and validation libraries for that.

repository: WillBMease/email-signature-detector

repo_name: WillBMease/email-signature-detector


text:
[Home](./index.md) > [decentraland-ecs](./decentraland-ecs.md) > [Curve3](./decentraland-ecs.curve3.md) > [CreateCatmullRomSpline](./decentraland-ecs.curve3.createcatmullromspline.md)

## Curve3.CreateCatmullRomSpline() method

Returns a Curve3 object along a CatmullRom Spline curve :

Signature:

```typescript
static CreateCatmullRomSpline(points: Vector3[], nbPoints: number, closed?: boolean): Curve3;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  points | Vector3[] | (array of Vector3) the points the spline must pass through. At least, four points required |
|  nbPoints | number | (integer) the wanted number of points between each curve control points |
|  closed | boolean | (boolean) optional with default false, when true forms a closed loop from the points |

Returns:

`Curve3`

the created Curve3

repository: LeonardoVenezia/decentraland-Shoes-Shop

repo_name: LeonardoVenezia/decentraland-Shoes-Shop


text:
# Peanut

A simple framework for working with the pnut.io API.

## Authorization

First, create a `Client` value with your Client ID and Password Grant Secret. These can be found in your account's [Developer settings](https://pnut.io/dev/).

```swift
let client = Client(id: "client-id", passwordGrantSecret: "client-secret", scope: [.basic, .stream])
```

or configure the `shared` value:

```swift
Client.shared.id = "client-id"
Client.shared.passwordGrantSecret = "client-secret"
Client.shared.scope = [.basic, .stream]
```

Then request authentication using your username and password:

```swift
let request = Authorization(username: "username", password: "password", client: client).request()

URLSession.shared.data(for: request) { result in
    print(result.success)   // APIAuthorizationResponse(id: ...)
}
```
> Note: if you've configured the `shared` client simply ommit the client parameter; it will be used by default.

## Fetching Data

Fetching streams, updating objects, and performing actions are all done via the same protocol: `APIRequestable`. To fetch the posts from the global stream:

```swift
let request = Post.Stream.global.request(pagination: APIPagination(count: 10))

URLSession.shared.data(for: request) { result in
    print(result.success)   // APIObjectResponse<Post>(meta: ..., data: ...)
}
```

More complicated requests are possible. For example, it is possible to include request specific parameters, pagination, token and even an API (though only `v0` exists at the moment):

```swift
let request = Post.Stream.mentions(4).request(for: .v0, parameters: [.includeRaw: true, .includeUser: false, .includeHTML: false], token: token, pagination: APIPagination(before: 379886, count: 2))
```

> Note: Including `[.includeUser: false]` with `User.Stream` endpoints is not currently supported and an error will be thrown while parsing.

## Composing Posts

Creating posts is similar to fetching data. For this example I’ve uploaded a photo to pnut and have a `File` value handy. Simply append a replacement value to your draft:

```swift
var draft = Post.Draft(text: "Terry Loves Yogurt!")
draft.raw.append(.oembedReplacement(id: file.id, token: file.token!))
```

Then create the request using a `Post.Mutation` endpoint:

```swift
let request = Post.Mutation.publish(draft, updatePersonalStreamMarker: true).request(parameters: [.includePostRaw: true], token: token)

URLSession.shared.data(for: request) { result in
    // ...
}
```

## Uploading Files

Similar to posts, publishing a file starts with a draft:

```swift
let draft = File.Draft(type: "com.my-app.image", mimeType: .png, name: "terry-loves-yogurt.png")
```

Then use a `File.Mutation` endpoint to publish a draft with the accompanying image data:

```swift
let image = UIImage(named: "...")!
let request = File.Mutation.publish(draft, content: UIImagePNGRepresentation(image)!, sha256: nil).request(token: token)

URLSession.shared.data(for: request) { result in
    // ...
}
```

## To-Do
This is very much a work-in-progress. Next on the list:

- User editing
- Avatar and cover image uploading
- Better documentation

## Contact

You can find me on [pnut.io](https://pnut.io/@shawn) and [Twitter](https://twitter.com/shawnthroop)

repository: shawnthroop/Peanut

repo_name: shawnthroop/Peanut


text:
---
name: Feature request
about: Suggest an idea for this mod
title: "[Request]: "
labels: enhancement
assignees: ''

---

**Before you request, please read this (and then remove it)**
1. Has someone already requested this feature? Make sure when you search for duplicates to search in closed issues as well.
2. Is this request reasonable? Ask yourself "Would this actually get implemented?"
3. Is this the right place to request the feature? If the feature would be in vanilla Minecraft, please request it on the [official feedback site](https://feedback.minecraft.net/hc/en-us/). Please do not request new gameplay/content that is not specific to VR.
4. Put the Minecraft version in the title (eg "[1.16]: Suggestion: release the mod" :p ).

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

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

**Additional context**
Add any other context or screenshots about the feature request here.

repository: Penguin-Spy/Minereality

repo_name: Penguin-Spy/Minereality


text:
# COVID-OpenConnect
Track of Open connection around you using Bluetooth.

## Background
In view of COVID-19 out-break, thought to have an app that keep track of the unique mobile devices that are in the near field of less than 10mts.

### How it helps to track the chain
For example you are a charity member / a citizen providing support for the needy; you many connect to people and you don't know how their health is going to be after 10days. By installing this app on all mobiles it keeps track of unique-mobile ids that are surrounded by you in less than 10mts.

The App automatically scans frequently and captures the surrounding mobile ids. The captured information is stored in mobile and synced to central database; data is stored for a period of 21days.

If member(A) of this app is tested with COVID +ve; he / his close member submit his status in the app; it will trigger the notification to all other community members with whom (B) he have connected in past 20days. Those who got the notification has to be self quarantine for few days to be safe for your family and rest of the community. If member (B) also +ve then it will send notification to his connected devices.

***We only track the MAC address of the two open connect mobiles and stored in our database.***

***This is to track Open-connected people (Social connected) and not for Close connected like your family members staying in a single home***

## Blue Print
- Community member has to install the app on their mobile and grant permission for app to control Bluetooth.
- App register with unique id based on the mobile hardware information hashed. With this re-installing the app will registered with same unique id keeping your history for desired period of time.
  - To generate Unique ID per device have to use hardware information like (IMEI and MAC Address)
- Members who staying with other community users in the same house has to update other devices as their family / closed group. With this app will filter from the tracking to save energy.
- Member has to update home location(optional), so app can automatically on its track when you away from your home.
- App will scan near by devices and stores the information that you are open connected in a day.
- Any community user who tested +ve has to inform in the app and all the open connected devices in last 20days will be get notified. This app is not sharing your personal information and it just alerts with your unique registered ID.
- All the users have to self quarantine for few more days and any symptoms they have to reach Govt Authorities.
- Additional steps to keep every citizen safe and secure.
  - Members health information tracking.
  - Quarantine days tracking.
  - Sharing health tips during the quarantine period.

## Contribution
Invite everyone to contribute your support and ideas to improve this app more helpful to everyone.

## License
COVID-OpenConnect is released under the MIT License.


text:
---
title: Simulating digital contact tracing to control COVID-19
date: 2020-04-19
description:
categories:
image: knitted_tree.jpg
author_staff_member: michelle
---

The latest work of the Oxford BDI Pathogen Dynamics team shows that digital contact tracing can have a profound, life-saving impact on the progression of COVID-19. I wrote a blog post about this which you can find on the group website here.

gha_language: SCSS


text:
---
title: Xamarin.Android warning XA1009
description: XA1009 warning code
ms.date: 03/19/2019
---
# Xamarin.Android warning XA1009

## Issue

The {assembly} is Obsolete. It will probably be removed
in the next release of Xamarin.Android.

## Solution

To correct this issue, upgrade to the stated version of
the assembly.

repository: xamarin/xamarin-android

gha_language: C#

repo_name: xamarin/xamarin-android


text:
# update

This is the Home Automation Card firmware update tool.

## Usage

```bash
~$ git clone https://github.com/SequentMicrosystems/ioplus-rpi.git
~$ cd ioplus-rpi/update/
~/ioplus-rpi/update$ ./update 0
```

If you clone the repository already, skip the first step.
The command will download the newest firmware version from our server and write it  to the board.
The stack level of the board must be provided as a parameter.
During firmware update we strongly recommend to disconnect all outputs from the board since they can change state unpredictably.

repository: flaguyme/ioplus-rpi

repo_name: flaguyme/ioplus-rpi


text:
# Wired.SlackErrors #

Push unhandled errors in an ASP.Net project directly into a [Slack](https://slack.com) channel.

## Documentation ##

Setting up is nice and easy. First you need to get a URL from your Slack channel.

1.  Open up the custom integration builder from your Slack app, the URL will be something like this:

        https://<your-app-name>.slack.com/apps/build/custom-integration

2.  Create a new _Incoming WebHook_.
3.  Choose the channel you want to post to and click _Add_.
4.  Note the _WebHook URL_, this is what you need in all the web applications that you want to post into this channel.
5.  Install the _Wired.SlackErrors_ library into your app by manually referencing the DLL or adding the Nuget package (adding to Nuget is a TODO for me!)
6.  In your `web.config` file, you need to add the following line into the `configSections` element. This registers the configuration element in the next step

    <section name="slackErrors" type="Wired.SlackErrors.Module.Configuration.SlackErrorsConfiguration, Wired.SlackErrors.Module" />

7.  Add in the following configuration element:

        <slackErrors appName="<website name>">
            <channels>
                <add name="<channel name>"
                     postUrl="<webhoook-url>" />
            </channels>
        </slackErrors>

8. Make sure to replace the `appName` (this is posted into teh Slack channel so you can easily identify the error source), the channel name (this is only useful for you to identify where the URL is posting to) and the `postUrl` (as given above in the Slack configuration)

That's all that is needed. Now any unhandled errors (those pesky things that cause your ASP.Net application to show the yellow screen of death) will get posted to Slack.

## Filtering ##

It is possible to filter the errors that get posted, this is especially useful if you are only interested in specific error type or you're looking for specific text in the stack trace. You can filter on exception type or stack trace, for example this will ensure that only `NullReferenceException` exceptions are sent to Slack:

    <add name="Website Errors Channel"
         postUrl="https://hooks.slack.com/services/..."
         typeFilter="System\.NullReferenceException" />

If you want to filter on stack trace, use `traceFilter` instead:

    <add name="Website Errors Channel"
         postUrl="https://hooks.slack.com/services/..."
         traceFilter="......" />

Both `traceFilter` and `traceFilter` use [regular expressions](https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx) to match. So for example if you only wanted to see `SqlException` and `ApplicationException` exceptions, you can do this:

    <add name="Website Errors Channel"
         postUrl="https://hooks.slack.com/services/..."
         typeFilter="System\.(Sql|Application)Exception" />

You can use filtering to post different exception types to different channels, so if you wanted all `SqlException` in one channel and all `ApplicationException` in another, just add two channels with specific filters:

    <add name="Application Errors Channel"
         postUrl="https://hooks.slack.com/services/...URL2"
         typeFilter="System\.ApplicationException" />
    <add name="SQL Errors Channel"
         postUrl="https://hooks.slack.com/services/...URL1"
         typeFilter="System\.SqlException" />


text:
Imitate snippets feature of Sublime Text, and bring it to [Brackets](http://brackets.io/).

# Screen demo
![brackets-snippets-demo.gif](http://edwardchu.org/assets/images/brackets-snippets-demo.gif "Demo gif of the extension")
> Gif size ~500kb, please wait until loaded

# Features
1. Insert snippets by pressing `Tab` key
2. Select next variables or cursors by pressing `Tab` key
3. Edit multiple variables at one time
4. Fully customize your own snippets in `Snippets Manager` (See below)
5. Hang around `Snippets Library` and find some other awesome snippets! (See below)

# Articles And Tutorials
#### Traditional Chinese 繁体中文
- [如何在brackets實現code hinting GSAP](http://www.deartet.com/29487/%E5%A6%82%E4%BD%95%E5%9C%A8brackets%E5%AF%A6%E7%8F%BEcode-hinting-gsap)

#### Japanese 日本語
- [Brackets × "スニペット管理" で爆速コーディングを実現する](http://qiita.com/assialiholic/items/c6d12a829f87f8d5fdab)
- [Brackets：様々な言語のスニペット登録・管理ができるエクステンション「Brackets Snippets (by edc)」](http://www.nxworld.net/services-resource/brackets-extension-brackets-snippets-by-edc.html)
- [Brackets Snippets (by edc)を使って、Sassの&（アンパサンド）をより楽に記述する方法](http://www.nxworld.net/services-resource/brackets-easy-use-sass-ampersand-pseudo-classes.html)
- [Bracketsの「Emmet」と「Brackets Snippets (by edc)」が競合する問題を解決する](https://jugedred.net/2015/12/14/200424)
- [WordPress開発が捗りそうなBracketsおすすめ拡張40個まとめ](http://nelog.jp/brackets-extensions)

#### English
- [My Recommended Brackets Extensions](https://johnpapa.net/my-recommended-brackets-extensions/)
- [Widely Used Plugins/Extensions of Brackets](http://parthhdave.blogspot.com/2016/10/widely-used-pluginsextensions-of.html)

#### Russian русский язык
- [Обзор Brackets #0](https://youtu.be/o-uMp8HITHE?t=7m19s)

#### Korean 한국어
- [코딩의 작업효율을 올려주는 Brackets 확장기능](http://sapjil.net/brackets-extension/#t12)

# Snippets Manager
<EMAIL_ADDRESS>"Snippets Manager Screenshot")

# Snippets Library
![snippets-library.png](https://cloud.githubusercontent.com/assets/6262943/6541326/fdf7a3f8-c503-11e4-8a3d-c3f726b38218.png "Snippets Library Screenshot")
> The library is currently maintained by myself, you can contribute more snippets by simply creating an issue and submit your snippets, or
>
> 1. Fork this project;
> 2. Edit [library-hints.yml](https://github.com/chuyik/brackets-snippets/blob/master/library-hints.yml), then commit changes and push it to your repository;
> 3. Perform a [pull request](https://github.com/chuyik/brackets-snippets/pulls).

# Installation
Search `Brackets Snippets (by edc)` in Brackets Extension Manager, and install it.

Failed to download it in Brackets? Try the alternative instructions:

1. [Download](http://brackets.dnbard.com/extension/edc.brackets-snippets) .zip package of the latest version
2. Drag the file into the bottom-left position of Extension Manager
3. Restart Brackets

# Syncing
Please read [#48](https://github.com/chuyik/brackets-snippets/issues/48)

# Todo
1. Support more triggers like `{{`  `/*` (#10)
2. Insert keystroke (#30)
3. Support ctrl/cmd-save
4. Work with emmet
5. Add [Environment Variables](http://docs.sublimetext.info/en/latest/extensibility/snippets.html#environment-variables) support like what Sublime Text provides (Anyone need this?)

# Credits
1. [JavaScript & NodeJS Snippets for Sublime Text 2/3](https://github.com/zenorocha/sublime-javascript-snippets)
2. [HTML snippets for Sublime Text](https://github.com/joshnh/HTML-Snippets)
3. [CSS snippets for Sublime Text](https://github.com/joshnh/CSS-Snippets)

repository: tgorgdotcom/brackets-snippets

repo_name: tgorgdotcom/brackets-snippets


text:
# ClassCollections

Collection of useful methods and classes

Each class has notes detailing how it works and usage examples.

DIR

  Getting Started:

    SimpleLogger.cs - simple text logger for recording logs in an application.

    GetTextBetweenWords.cs - simple string editior to select text between two words.

  Some Fun With Windows:

  StartApplicationAtStartup.cs regedit to change the startup behavior to load the application when windows starts.

  PowershellGetADUser.cs runs a powershell script in our c# code to retrive user information.

  Rest API:

    PostToServiceNow.cs - Shows how to create a service-now incident using the REST API and an http message.

repository: LostZerglings/ClassCollections

repo_name: LostZerglings/ClassCollections


text:
# emergency-auth-code-api

[![GoDoc](https://godoc.org/github.com/companieshouse/emergency-auth-code-api?status.svg)](https://godoc.org/github.com/companieshouse/emergency-auth-code-api)
[![Go Report Card](https://goreportcard.com/badge/github.com/companieshouse/emergency-auth-code-api)](https://goreportcard.com/report/github.com/companieshouse/emergency-auth-code-api)

Temporary - Server side application for the emergency auth code solution.

## Requirements

In order to run this service locally, you will need:

- [Go](https://golang.org/doc/install)
- [Git](https://git-scm.com/downloads)
- [MongoDB](https://www.mongodb.com/)

## Getting Started

1. Clone this repository: `go get github.com/companieshouse/emergency-auth-code-api`
1. Build the executable: `make build`

## Configuration

Variable                            | Default | Description
:-----------------------------------|:-------:|:-----------
`BIND_ADDR`                         | `-`     | The host:port to bind to
`MONGODB_URL`                       | `-`     | The mongo DB connection string
`MONGO_AUTHCODE_DATABASE`           | `-`     | Authcode mongo database
`MONGO_AUTHCODE_COLLECTION`         | `-`     | Authcode mongo collection
`MONGO_AUTHCODE_REQUEST_DATABASE`   | `-`     | Authcode Request mongo database
`MONGO_AUTHCODE_REQUEST_COLLECTION` | `-`     | Authcode Request mongo collection
`ORACLE_QUERY_API_URL`              | `-`     | URL of the Oracle Query API
`QUEUE_API_LOCAL_URL`               | `-`     | URL of the Queue API

## Endpoints

Method   | Path                                                                         | Description
:--------|:-----------------------------------------------------------------------------|:-----------
**GET**  | `/emergency-auth-code-service/healthcheck`                                                               | Standard healthcheck endpoint
**GET**  | `emergency-auth-code-service/company/{company_number}/officers`              | Get list of eligible officers
**GET**  | `emergency-auth-code-service/company/{company_number}/officers/{officer_id}` | Get officer details
**POST** | `emergency-auth-code-service/auth-code-requests`                             | Create auth code request
**GET**  | `emergency-auth-code-service/auth-code-requests/{auth_code_request_id}`      | Get auth code request
**PUT**  | `emergency-auth-code-service/auth-code-requests/{auth_code_request_id}`      | Update auth code request


text:
# Understanding Programs

It's not enough just to know the language features in JS. Before you can write
good programs you need to learn how to understand code that you did not write.

At first this might not sound right, but it makes sense if you think about it.
It will usually take you at least 20 minutes (usually much more) to write a
program. In that time you will write, delete, rewrite, and change your code many
times. You'll forget what you wrote, or you'll remember something from 10
minutes ago but not the most recent code.

All this means that you can't rely on your memory to understand everything going
on in your program (even professional developers can't do this!). Instead you
need to learn how to read and understand your own code so you can figure out
what's happening when something goes wrong.

So how can you practice this? By reading and understanding code someone else
wrote. If you can understand their code, hopefully you can understand your own!

repository: bermarte/welcome-to-js

repo_name: bermarte/welcome-to-js


text:
socket
======

[![Available on Hackage][badge-hackage]][hackage]
[![License MIT][badge-license]][license]
[![Build Status][badge-travis]][travis]

### Motivation

This library aims to expose a minimal and cross platform interface for
POSIX compliant networking code.

### Implementation Philosophy

  - Every operation and every flag exposed should be supported with same
    semantics on every platform. If this cannot be guaranteed it should
    be supplied by another (extension) package.

  - Absolutely no conditional exports.

  - No `#ifdef` madness in the Haskell sources. The Haskell binding code
    uses the FFI to reference the platform's native networking functions.
    If they are not POSIX compliant (i.e. on Windows) a level of
    indirection is introduced to create a POSIX compliant equivalent in C
    using whatever the platform specific building blocks are.

### Platform Support

#### Linux

Working.

#### MacOS

Working.

#### Windows

Fully supported on Windows7 (maybe Vista) or higher :-)

GHC's runtime system on Windows does not offer an event notification mechanism for sockets.
The original [network](https://hackage.haskell.org/package/network) library
suffers from this, too. For example, connection attempts are non-interruptible etc.
The approach taken to circumvent this in this library is to poll the
non-blocking sockets with increasing delay. This guarantees non-interruptability
and fairness between different threads. It allows for decent throughput
while also keeping CPU consumption on a moderate level if a socket has not seen
events for a longer period of time (maximum of 1 second delay after 20
polling iterations). The only drawback is potentially reduced response time
of your application. The good part: Heavy load (e.g. connection requests or
incoming traffic) will reduce this problem. Eventually your accepting thread
won't wait at all if there are several connection requests queued.

This workaround may be removed if someone is willing to sacrifice to improve
the IO manager on Windows.

### Dependencies

   - base
   - bytestring

### Tests

Run the default test suites:

```bash
cabal test
```

[badge-travis]: https://img.shields.io/travis/lpeterse/haskell-socket.svg
[travis]: https://travis-ci.org/lpeterse/haskell-socket
[badge-hackage]: https://img.shields.io/hackage/v/socket.svg?dummy
[hackage]: https://hackage.haskell.org/package/socket
[badge-license]: https://img.shields.io/badge/license-MIT-green.svg?dummy
[license]: https://github.com/lpeterse/haskell-socket/blob/master/LICENSE
[issues]: https://github.com/lpeterse/haskell-socket/issues
[Github]: https://github.com/lpeterse/haskell-socket


text:
# tiff 3.8.2

Support, library and utilities for manipulating TIFF (Tag Image File Format)
images.

**Bug:** segmentation fault.

## Notes

1.  Unzip, compile and install the tar source code into a local root, and modify
    `test.sh` so that `TIFFROOT` and `TIFFSRCROOT` point to the correct locations.
    Unzip/untar `tests.tar.gz`; it contains image files that are used in the test scripts.

2.  To get a preprocessed version of `tif_lzw.c` (originally in `$SRC/libtiff`),
    compile a fresh version of the tiff source code and look through the output for
    the line that compiles `tif_lzw.c` into object code. Copy it, cd into `libtiff`, and
    rerun it, adding the `--save-temps` flag to the compiler. My command looks like:

    ```
    /bin/sh ../libtool --tag=CC --mode=compile gcc --save-temps -DHAVE_CONFIG_H -I. -I. -I. -I. -g -O2 -Wall -W -MT tif_lzw.lo -MD -MP -MF .deps/tif_lzw.Tpo -c -o tif_lzw.lo tif_lzw.c
    ```

3.  The initial coverage paths are huge. This folder includes filtered versions,
    an approach you may want to emulate (I wrote a python script to strip
    duplicates).

## Files

* `fake-gcc.sh`: script for compiling program variants
* `mytest`: input file for good tests
* `tif_lzw.c`: original file under repair, not preprocessed.
* `tif_lzw.i`: preprocessed file under repair
* `tiff-3.8.2.zip`: original tiff source code
* `wololo.tif`: image used by negative test case, causes `tiffcp` to seg fault.
* `tests.tar.gz`: tarball of input image files for the positive test cases.

## Tests

* **Negative:** executes tiffcp on a malformed image and checks for a code dump
  (indicating a segmentation fault). Passes if no segmentation fault occurs.
* **Positive:** executes tiffcp on a number of benign images found in the tests
  folder.

repository: afsafzal/RepairBox

repo_name: afsafzal/RepairBox


text:
# Alerts

Alerts are modelled with the following fields:

- subject:
    - will be saved inside the database so the user is able to know which alert was sent/not sent
- status:
    - pending/sent/failure
- sent_at:
    - timestamp which visualizes when the mail was sent
- user_id:
    - connection between email and user
- created_at
- updated_at

repository: bakku/easyalert

gha_language: Go

repo_name: bakku/easyalert


text:
## Common Elements

All of the common elements used within this specification are described in this Document. Common elements include the data types, and their properties used in this specificaiton.

### Cardinality

All the variables in the specification will have a cardinality. The cardinality attribute defines the number of values allowed for the variable and whether the variables are ordered.

Supported types of cardinality are:
- _single_: only one value is allowed for the variable
- _multiple_: one or more values are allowed for the variable
- _ordered_: ordered list of values are allowed for the variable

### Data Types

#### string
String data types should be used to represent string literal values.

#### integer
Integer data types should be used to represent numbers without a fractional part.

#### float
Float data types should be used to represent numbers with a fractional part.

#### boolean
Boolean data types should be used to represent values with two states: true or false.

#### uri
URI data types should be used to represent Uniform Resource Identifier (URI) reference values.

#### map
Map data type should be used for variables whose values are key-value pairs. Map is a non-primitive data type with the following attributes.

| Attribute | Schema | Description |
| --- | ----- | ----------- |
| key | dataType: *string*,
 required: *true* | a map cannot contain duplicate keys and each key can map at most one value |
| value | dataType: *any*,
 required: *false*, defaultValue: *NULL* | value can be of any other data type defined in QuML. value is optional and is by default set to NULL, if not provided |

#### coordinate
Coordinate data type should be used to represent coordinates (x and y) of a single point in a canvas.

| Attribute | Schema | Description |
| --- | ----- | ----------- |
| x | dataType: *float*,
 required: *true* | x-coordinate value of the point |
| y | dataType: *float*,
 required: *true* | y-coordinate value of the point |

#### points
Points data type should be used for variables whose values represent an area on a canvas. Points are made up of a shape and the coordinates that define the boundary of the area.

| Attribute | Schema | Description |
| --- | ----- | ----------- |
| shape | dataType: *string*,
 required: *true*,
 range: *“point”, “circle”, “ellipse”, “poly”, “rect”* | represents the shape of points. it must be equal one of the predefined values defined in the range |
| coordinates | dataType: *list of coordinate objects*,
 required: *true* | Coordinates should have at least one coordinate object. The number of coordinates depend on the shape. |

#### media
Media data type should be used for representing a single media file. Media are re-usable to create assets which are used in questions and/or tests.

| Attribute | Schema | Description |
| -- | ------ | --------- |
| id | dataType: *string*,
 required: *true* | identifier of the media object |
| mimeType | dataType: *string*,
 required: *true* | technical mime type of the asset used by QuML players to understand the format of the asset. Supported types are image/png, audio/mp3, video/mp4, and video/webm |
| mediaType | dataType: *string*, required: *true* | type of the asset. this should be auto-derived from the mimeType value, current supported types are image, audio and video |
| src | dataType: *string*, required: *true* | path of the media file. QuML players will use this value to load all the media used in a question/test |
| baseUrl | dataType: *string*, required: *false* | baseUrl of the server where the media is stored. Base URL can be used by QuML players to load media in a browser without CORS issues. this is achieved by QuML server proxying path to the provided base url. |

repository: snehar-nd/QuML

repo_name: snehar-nd/QuML


text:
# idPay Payment for Python

You should have a [Payment Token](https://idpay.ir/dashboard/web-services) to use this code .
> Then you should place your **Token** in TOKEN constant ( Line 7 )

## Documentation
[IdPay Payment Documentation](https://idpay.ir/web-service/v1.1/index.html)