text:
OBSOLETE

Cluster lifecycle includes deployment (infrastructure provisioning and bootstrapping Kubernetes), scaling, upgrades, and turndown.

Owner: @kubernetes/sig-cluster-lifecycle (kubernetes-sig-cluster-lifecycle at googlegroups.com, sig-cluster-lifecycle on slack)

There is no one-size-fits-all solution for cluster deployment and management (e.g., upgrades). There's a spectrum of possible solutions, each with different tradeoffs:
* opinionated solution (easier to use for a narrower solution space) vs. toolkit (easier to adapt and extend)
* understandability (easier to modify) vs. configurability (addresses a broader solution space without coding)

Some useful points in the spectrum are described below.

There are a number of tasks/features/changes that would be useful to multiple points in the spectrum. We should prioritize them, since they would enable multiple solutions.

See also:
* [Feature-tracking issue](https://github.com/kubernetes/features/issues/11)
* [Cluster deployment v2 issue](https://github.com/kubernetes/kubernetes/issues/23174)
* [Shared infrastructure issue](https://github.com/kubernetes/kube-deploy/issues/123)
* [Kube-up replacement that works for everyone](https://github.com/kubernetes/kubernetes/issues/23478)
* https://github.com/kubernetes/kubernetes/labels/area%2Fcluster-lifecycle
* [Deployment DX Notes](https://docs.google.com/document/d/1jAQ5H222pJzpv-m0OsezZgdhdkf299E7H8Q9yzNrAjg/edit#)

We need to improve support/behavior for cluster updates/upgrades, as well. TODO: make a list of open issues. Examples include [feature gating](https://github.com/kubernetes/kubernetes/issues/4855), [node upgrades](https://github.com/kubernetes/kubernetes/issues/6079), and [node draining](https://github.com/kubernetes/kubernetes/issues/6080).

## Single-node laptop/development cluster

Should be sufficient to kick the tires for most examples and for local development. Should be dead simple to use and highly opinionated rather than configurable.

Owner: @dlorenc

See also:
* https://github.com/kubernetes/minikube

To do:
* Replace single-node getting-started guides
  * [Docker single-node](http://kubernetes.io/docs/getting-started-guides/docker/)

## Portable multi-node cluster understandable reference implementation

For people who want to get Kubernetes running painlessly on an arbitrary set of machines -- any cloud provider (or bare metal), any OS distro, any networking infrastructure. Porting work should be minimized via separation of concerns (composition) and ease of modification rather than automated configuration transformation. Not intended to be highly optimized by default, but the cluster should be reliable.

Also a reference implementation for people who want to understand how to build Kubernetes clusters from scratch.

Ideally cluster scaling and upgrades would be supported by this implementation.

Replace [Docker multi-node guide](http://kubernetes.io/docs/getting-started-guides/docker-multinode/).

To facilitate this, we aim to provide an understandable, declarative, decoupled infrastructure provisioning implementation and a portable cluster bootstrapping implementation. Networking setup needs to be decoupled, so it can be swapped out with alternative implementations.

For portability, all components need to be containerized (though Kubelet may use an alternative to Docker, so long as it is portable and meets other requirements) and we need a default network overlay solution.

Eventually, we'd like to entirely eliminate the need for Chef/Puppet/Ansible/Salt. We shouldn't need to copy files around to host filesystems.

For simplicity, users shouldn't need to install/launch more than one component or execute more than one command per node. This could be achieved a variety of ways: monolithic binaries, monolithic containers, a launcher/controller container that spawns other containers, etc.

Once we have this, we should delete out-of-date, untested "getting-started guides" ([example broken cluster debugging thread](https://github.com/kubernetes/dashboard/issues/971)).

See also:
* [Summary proposal](https://git.k8s.io/kubernetes-anywhere/PROPOSAL.md)
* [kubernetes-anywhere umbrella issue](https://github.com/kubernetes/kubernetes-anywhere/issues/127)
* https://git.k8s.io/kubernetes/docs/proposals/cluster-deployment.md
* [Bootstrap API](https://github.com/kubernetes/kubernetes/issues/5754)
* [jbeda's simple setup sketch](https://gist.github.com/jbeda/7e66965a23c40a91521cf6bbc3ebf007)

To do:
* [Containerize](https://github.com/kubernetes/kubernetes/issues/246) all the components in order to achieve OS-distro independence
* [Self-host](https://github.com/kubernetes/kubernetes/issues/18735) as much as possible, such as using Deployment, DaemonSet, [ConfigMap](https://github.com/kubernetes/kubernetes/issues/1627)
  * Eliminate the need to read configurations from local disk
  * [Dynamic Kubelet configuration](https://github.com/kubernetes/kubernetes/issues/27980)
  * [Kubelet checkpointing](https://github.com/kubernetes/kubernetes/issues/489) in order to reliably run control-plane components without static pods
  * [Run Kubelet in a container](https://github.com/kubernetes/kubernetes/issues/4869)
  * [DaemonSet updates](https://github.com/kubernetes/community/wiki/Roadmap:-DaemonSet)
  * [DaemonSet for bootstrapping](https://github.com/kubernetes/kubernetes/issues/15324)
  * [Bootkube](https://docs.google.com/document/d/1VNp4CMjPPHevh2_JQGMl-hpz9JSLq3s7HlI87CTjl-8/edit)
* Adopt a default network overlay, but enable others to be swapped in via composition
  * Need to make it clear that this is for simplicity and portability, but isn't the only option
* [Link etcd and the master components](https://github.com/kubernetes/kubernetes/issues/5755) into a monolithic [monokube-like](https://github.com/polvi/monokube) binary and/or [finish hyperkube](https://github.com/kubernetes/kubernetes/issues/16508)
* [Replace multi-node Docker getting-started guide](https://github.com/kubernetes/kubernetes/issues/24114)
* Make it easy to get the right version of Docker on major Linux distros (e.g., apt-get install...)
  * It's easy to get the wrong version: docker, docker.io, docker-engine, ...

Starting points:
* https://github.com/kubernetes/kubernetes-anywhere
* https://github.com/Capgemini/kubeform

## Building a cluster from scratch

For people starting from scratch:
* http://kubernetes.io/docs/getting-started-guides/scratch/
* https://github.com/kelseyhightower/kubernetes-the-hard-way
* https://news.ycombinator.com/item?id=12022215

We should simplify this as much as possible, and clearly document it.

This is probably the only viable way to support people who want to do significant customization:
* cloud provider (including bare metal)
* OS distro
* cluster size
* master and worker node configurations
* networking solution and parameters (e.g., CIDR)
* container runtime (Docker or rkt) and its configuration
* monitoring solutions
* logging solutions
* ingress controller
* image registry
* IAM
* HA
* multi-zone
* K8s component configuration

To do:
* Simplify release packaging and installation
  * Finding and installing the right version of Docker itself can be hard (`apt-get install docker/docker.io/docker-engine` isn't the right thing)
  * Build rpms, debs?
* Verify that system requirements have been satisfied (docker version, kernel configuration, etc.)
  * And ideally degrade gracefully and warn if they are not
* Documentation
  * What is the latest release, how can I find it, how do I install it, what version of Docker/rkt/etc. is required?
  * An architectural diagram (like the one we use in our presentations) would help, too.
  * Explain the architecture
    * Link to instructions about how to manage etcd
    * Link to [Chubby paper](http://static.googleusercontent.com/media/research.google.com/en//archive/chubby-osdi06.pdf)
  * Document system requirements ("Node Spec")
    * OS distro versions
    * kernel configuration
    * resources
    * IP forwarding
  * [Document how to set up a cluster](https://docs.google.com/document/d/1c4DMomZgS1i6AlKbb_8CiTcuimotkcJZAqJtQTN1iqc/edit#heading=h.58fpuhrw9g2o)
  * Adequately document how to configure our components.
    * Improve/simplify/organize command help
    * Hide/remove/deemphasize test-only options
  * Document how to integrate IAM
  * [Create guides to help with key decisions for production clusters](https://github.com/kubernetes/kubernetes/issues/10100)
    * Selecting a networking model
    * Managing a CA
    * Managing user authentication and authorization
    * Initial deployment requirements (memory, cpu, networking, storage)
    * Upgrading best practices
* Code changes
  * Finish [converting components to use configuration files rather than command-line flags](https://github.com/kubernetes/kubernetes/issues/12245)
  * Facilitate [managing that configuration using ConfigMap](https://github.com/kubernetes/kubernetes/issues/1627)
  * [Cluster config](https://github.com/kubernetes/kubernetes/issues/19831)
  * Reduce external dependencies
    * APIs for reusable building blocks, such as [TLS bootstrap](https://github.com/kubernetes/kubernetes/issues/18112), [certificate signing for addons](https://github.com/kubernetes/kubernetes/issues/11725), [teardown](https://github.com/kubernetes/kubernetes/issues/4630)
  * Need key/cert rotation ([master](https://github.com/kubernetes/kubernetes/issues/4672), [service accounts](https://github.com/kubernetes/kubernetes/issues/20165))
  * Finish generalization of [component registration](https://github.com/kubernetes/kubernetes/pull/13216)
  * [Improve addon management](https://github.com/kubernetes/features/issues/18)

## Production-grade, easy-to-use cluster management tools/services

Easy to use and opinionated. Potentially highly optimized. Acceptable for production use. Not necessarily easily portable nor easy to extend/adapt/change.

Examples:
* [Kube-AWS](https://github.com/coreos/coreos-kubernetes/tree/master/multi-node/aws)
* [kops](https://github.com/kubernetes/kops)
* [Kargo](https://github.com/kubespray/kargo)
  * (is https://git.k8s.io/contrib/ansible still needed?)
* [kompose8](https://github.com/digitalrebar/kompos8)
* [Tectonic](https://tectonic.com/)
* [Kraken](https://github.com/samsung-cnct/kraken)
* [NavOps Launch](https://www.navops.io/launch.html)
* [Photon Cluster Manager](https://github.com/vmware/photon-controller/tree/master/java/cluster-manager)
* [Platform 9](https://platform9.com/blog/containers-as-a-service-kubernetes-docker/)
* [GKE](https://cloud.google.com/container-engine/)
* [Stackpoint.io](https://stackpoint.io/)
* [Juju](https://jujucharms.com/canonical-kubernetes)

repository: kubernetes/community

gha_language: Jupyter Notebook

repo_name: kubernetes/community


text:
### [CVE-2018-5785](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-5785)
![](https://img.shields.io/static/v1?label=Product&message=n%2Fa&color=blue)
![](https://img.shields.io/static/v1?label=Version&message=n%2Fa&color=blue)
![](https://img.shields.io/static/v1?label=Vulnerability&message=n%2Fa&color=brighgreen)

### Description

In OpenJPEG 2.3.0, there is an integer overflow caused by an out-of-bounds left shift in the opj_j2k_setup_encoder function (openjp2/j2k.c). Remote attackers could leverage this vulnerability to cause a denial of service via a crafted bmp file.

### POC

#### Reference
- https://github.com/uclouvain/openjpeg/issues/1057

#### Github
- https://github.com/andir/nixos-issue-db-example

license: MIT

repository: trickest/cve

branch_name: refs/heads/main

extension: md

gha_language: HTML

gha_license_id: MIT

license_type: permissive

repo_name: trickest/cve


text:
# submit your in/out list

1. Fork this repo.
2. Create a new folder under src/pages and name this folder the date of your list.
3. Create a new index.md file in your new folder. Put your list formatted in markdown here.
4. Make sure the frontmatter of your index.md file matches the other posts. All posts must have path, date, title (your name), and tags (your name).
5. When you're done create a pull request.

This site was built using Gatsby Starter blog. Their readme is below.

# gatsby-starter-default
The default Gatsby starter.

For an overview of the project structure please refer to the [Gatsby documentation - Building with Components](https://www.gatsbyjs.org/docs/building-with-components/).

## Install

Make sure that you have the Gatsby CLI program installed:
```sh
npm install --global gatsby-cli
```

And run from your CLI:
```sh
gatsby new gatsby-example-site
```

Then you can run it by:
```sh
cd gatsby-example-site
gatsby develop
```

repository: amrules/in-out-lists

branch_name: refs/heads/master

gha_language: JavaScript

repo_name: amrules/in-out-lists


text:
# STED website

The website is prepared for STED's owner - Magdalena Szczepaniak - Polish language teacher in Australia.

The STED website is built on top of the Bootstrap framework (v3.3.6).

## How to build the website

To build the website following components are needed:

* bootstrap - sass framework
* node modules to run build scripts

Type in Terminal following command:

### `gulp build`

STED website will be built and all the files you will find under 'dist' folder.

## Author
* Martyna Bogdanska (martyna-bogdanska.com)

repository: MartynaBogdanska/STED-Speak-Polish

repo_name: MartynaBogdanska/STED-Speak-Polish


text:
# CheckerBoard
![Mixture.CheckerBoard](../../images/Mixture.CheckerBoard.png)
## Inputs
Port Name | Description
--- | ---
UV |
Even Color |
Odd Color |
X Cell Count |
Y Cell Count |
Z Cell Count |
Smooth |

## Output
Port Name | Description
--- | ---
Out |

## Description
Generate a checkerboard patter, in 3D this node generates a cubic checkerboard pattern.

repository: alelievr/Mixture

gha_language: C#

repo_name: alelievr/Mixture


text:
## Original code
https://github.com/jonas747/template

Slightly modified version of the stdlib text/template package:

Changes:

 - allows newlines inside actions

repository: mrbentarikau/pagst

gha_language: Go

repo_name: mrbentarikau/pagst


text:
# History

## v0.4.31 - September 23th, 2013

* Component support

## v0.4.30 - August 30th, 2013

* BufferedAmount could be undefined, default to 0 \[TooTallNate\]
* Support protocols as second argument and options as third \[TooTallNate\]
* Proper browserify shim \[mcollina\]
* Broadcasting example in README \[stefanocudini\]

## v0.4.29 - August 23th, 2013

* Small clean up of the Node 0.11 support by using NAN from the NPM registry \[kkoopa\]
* Support for custom `Agent`'s through the options. \[gramakri\] & \[TooTallNate\]
* Support for custom headers through the options \[3rd-Eden\]
* Added a `gypfile` flag to the package.json for compiled module discovery \[wolfeidau\]

## v0.4.28 - August 16th, 2013

* Node 0.11 support. \[kkoopa\]
* Authorization headers are sent when basic auth is used in the url \[jcrugzz\]
* Origin header will now include the port number \[Jason Plum\]
* Race condition fixed where data was received before the readyState was updated. \[saschagehlich\]

## v0.4.27 - June 27th, 2013

* Frames are no longer masked in `wscat`. \[slaskis\]
* Don't retrain reference to large slab buffers. \[jmatthewsr-msi\]
* Don't use Buffer.byteLength for ArrayBuffer's. \[Anthony Pesch\]
* Fix browser field in package.json. \[shtylman\]
* Client-side certificate support & documentation improvements. \[Lukas Berns\]
* WebSocket readyState's is added to the prototype for spec compatiblity. \[BallBearing\]
* Use Object.defineProperty. \[arlolra\]
* Autodetect ArrayBuffers as binary when sending. \[BallBearing\]
* Check instanceof Buffer for binary data. \[arlolra\]
* Emit the close event before destroying the internal socket. \[3rd-Eden\]
* Don't setup multiply timeouts for one connection. \[AndreasMadsen\]
* Allow support for binding to ethereal port. \[wpreul\]
* Fix broken terminate reference. \[3rd-Eden\]
* Misc node 0.10 test fixes and documentation improvements. \[3rd-Eden\]
* Ensure ssl options are propagated to request. \[einaros\]
* Add 'Host' and 'Origin' to request header. \[Lars-Magnus Skog\]
* Subprotocol support. \[kanaka\]
* Honor ArrayBufferView's byteOffset when sending. \[Anthony Pesch\]
* Added target attribute for events. \[arlolra\]

## v0.4.26 - Skipped

## v0.4.25 - December 17th, 2012

* Removed install.js. \[shtylman\]
* Added browser field to package.json. \[shtylman\]
* Support overwriting host header. \[Raynos\]
* Emit 'listening' also with custom http server. \[sebiq\]

## v0.4.24 - December 6th, 2012

* Yet another intermediate release, to  not delay minor features any longer.
* Native support installation issues further circumvented. \[einaros\]

## v0.4.23 - November 19th, 2012

* Service release - last before major upgrade.
* Changes default host from <IP_ADDRESS> to <IP_ADDRESS>. \[einaros\]

## v0.4.22 - October 3rd, 2012

* clear failsafe cleanup timeout once cleanup is called \[AndreasMadsen\]
* added w3c compatible CloseEvent for onclose / addEventListener\("close", ...\). \[einaros\]
* fix the sub protocol header handler \[sonnyp\]
* fix unhandled exception if socket closes and 'error' is emitted \[jmatthewsr-ms\]

## v0.4.21 - July 14th, 2012

* Emit error if server reponds with anything other than status code 101. \[einaros\]
* Added 'headers' event to server. \[rauchg\]
* path.exists moved to fs.exists. \[blakmatrix\]

## v0.4.20 - June 26th, 2012

* node v0.8.0 compatibility release.

## v0.4.19 - June 19th, 2012

* Change sender to merge buffers for relatively small payloads, may improve perf in some cases \[einaros\]
* Avoid EventEmitter for Receiver classes. As above this may improve perf. \[einaros\]
* Renamed fallback files from the somewhat misleading '\*Windows'. \[einaros\]

## v0.4.18 - June 14th 2012

* Fixed incorrect md5 digest encoding in Hixie handshake \[nicokaiser\]
* Added example of use with Express 3 \[einaros\]
* Change installation procedure to not require --ws:native to build native extensions. They will now build if a compiler is available. \[einaros\]

## v0.4.17 - June 13th 2012

* Improve error handling during connection handshaking \[einaros\]
* Ensure that errors are caught also after connection teardown \[nicokaiser\]
* Update 'mocha' version to 1.1.0. \[einaros\]
* Stop showing 'undefined' for some error logs. \[tricknotes\]
* Update 'should' version to 0.6.3 \[tricknotes\]

## v0.4.16 - June 1st 2012

* Build fix for Windows. \[einaros\]

## v0.4.15 - May 20th 2012

* Enable fauxe streaming for hixie tansport. \[einaros\]
* Allow hixie sender to deal with buffers. \[einaros/pigne\]
* Allow error code 1011. \[einaros\]
* Fix framing for empty packets \(empty pings and pongs might break\). \[einaros\]
* Improve error and close handling, to avoid connections lingering in CLOSING state. \[einaros\]

## v0.4.14 - Apr 30th 2012

* use node-gyp instead of node-waf \[TooTallNate\]
* remove old windows compatibility makefile, and silently fall back to native modules \[einaros\]
* ensure connection status \[nicokaiser\]
* websocket client updated to use port 443 by default for wss:// connections \[einaros\]
* support unix sockets \[kschzt\]

## v0.4.13 - Apr 12th 2012

* circumvent node 0.6+ related memory leak caused by Object.defineProperty \[nicokaiser\]
* improved error handling, improving stability in massive load use cases \[nicokaiser\]

## v0.4.12 - Mar 30th 2012

* various memory leak / possible memory leak cleanups \[einaros\]
* api documentation \[nicokaiser\]
* add option to disable client tracking \[nicokaiser\]

## v0.4.11 - Mar 24th 2012

* node v0.7 compatibillity release
* gyp support \[TooTallNate\]
* commander dependency update \[jwueller\]
* loadbalancer support \[nicokaiser\]

## v0.4.10 - Mar 22th 2012

* Final hixie close frame fixes. \[nicokaiser\]

## v0.4.9 - Mar 21st 2012

* Various hixie bugfixes \(such as proper close frame handling\). \[einaros\]

## v0.4.8 - Feb 29th 2012

* Allow verifyClient to run asynchronously \[karlsequin\]
* Various bugfixes and cleanups. \[einaros\]

## v0.4.7 - Feb 21st 2012

* Exposed bytesReceived from websocket client object, which makes it possible to implement bandwidth sampling. \[einaros\]
* Updated browser based file upload example to include and output per websocket channel bandwidth sampling. \[einaros\]
* Changed build scripts to check which architecture is currently in use. Required after the node.js changes to have prebuilt packages target ia32 by default. \[einaros\]

## v0.4.6 - Feb 9th 2012

* Added browser based file upload example. \[einaros\]
* Added server-to-browser status push example. \[einaros\]
* Exposed pause\(\) and resume\(\) on WebSocket object, to enable client stream shaping. \[einaros\]

## v0.4.5 - Feb 7th 2012

* Corrected regression bug in handling of connections with the initial frame delivered across both http upgrade head and a standalone packet. This would lead to a race condition, which in some cases could cause message corruption. \[einaros\]

## v0.4.4 - Feb 6th 2012

* Pass original request object to verifyClient, for cookie or authentication verifications. \[einaros\]
* Implemented addEventListener and slightly improved the emulation API by adding a MessageEvent with a readonly data attribute. \[aslakhellesoy\]
* Rewrite parts of hybi receiver to avoid stack overflows for large amounts of packets bundled in the same buffer / packet. \[einaros\]

## v0.4.3 - Feb 4th 2012

* Prioritized update: Corrected issue which would cause sockets to stay open longer than necessary, and resource leakage because of this. \[einaros\]

## v0.4.2 - Feb 4th 2012

* Breaking change: WebSocketServer's verifyOrigin option has been renamed to verifyClient. \[einaros\]
* verifyClient now receives { origin: 'origin header', secure: true/false }, where 'secure' will be true for ssl connections. \[einaros\]
* Split benchmark, in preparation for more thorough case. \[einaros\]
* Introduced hixie-76 draft support for server, since Safari \(iPhone / iPad / OS X\) and Opera still aren't updated to use Hybi. \[einaros\]
* Expose 'supports' object from WebSocket, to indicate e.g. the underlying transport's support for binary data. \[einaros\]
* Test and code cleanups. \[einaros\]

## v0.4.1 - Jan 25th 2012

* Use readline in wscat \[tricknotes\]
* Refactor \_state away, in favor of the new \_readyState \[tricknotes\]
* travis-ci integration \[einaros\]
* Fixed race condition in testsuite, causing a few tests to fail \(without actually indicating errors\) on travis \[einaros\]
* Expose pong event \[paddybyers\]
* Enabled running of WebSocketServer in noServer-mode, meaning that upgrades are passed in manually. \[einaros\]
* Reworked connection procedure for WebSocketServer, and cleaned up tests. \[einaros\]

## v0.4.0 - Jan 2nd 2012

* Windows compatibility \[einaros\]
* Windows compatible test script \[einaros\]

## v0.3.9 - Jan 1st 2012

* Improved protocol framing performance \[einaros\]
* WSS support \[kazuyukitanimura\]
* WSS tests \[einaros\]
* readyState exposed \[justinlatimer, tricknotes\]
* url property exposed \[justinlatimer\]
* Removed old 'state' property \[einaros\]
* Test cleanups \[einaros\]

## v0.3.8 - Dec 27th 2011

* Made it possible to listen on specific paths, which is especially good to have for precreated http servers \[einaros\]
* Extensive WebSocket / WebSocketServer cleanup, including changing all internal properties to unconfigurable, unenumerable properties \[einaros\]
* Receiver modifications to ensure even better performance with fragmented sends \[einaros\]
* Fixed issue in sender.js, which would cause SlowBuffer instances \(such as returned from the crypto library's randomBytes\) to be copied \(and thus be dead slow\) \[einaros\]
* Removed redundant buffer copy in sender.js, which should improve server performance \[einaros\]

## v0.3.7 - Dec 25nd 2011

* Added a browser based API which uses EventEmitters internally \[3rd-Eden\]
* Expose request information from upgrade event for websocket server clients \[mmalecki\]

## v0.3.6 - Dec 19th 2011

* Added option to let WebSocket.Server use an already existing http server \[mmalecki\]
* Migrating various option structures to use options.js module \[einaros\]
* Added a few more tests, options and handshake verifications to ensure that faulty connections are dealt with \[einaros\]
* Code cleanups in Sender and Receiver, to ensure even faster parsing \[einaros\]

## v0.3.5 - Dec 13th 2011

* Optimized Sender.js, Receiver.js and bufferutil.cc:
  * Apply loop-unrolling-like small block copies rather than use node.js Buffer\#copy\(\) \(which is slow\).
  * Mask blocks of data using combination of 32bit xor and loop-unrolling, instead of single bytes.
  * Keep pre-made send buffer for small transfers.
* Leak fixes and code cleanups.

## v0.3.3 - Dec 12th 2011

* Compile fix for Linux.
* Rewrote parts of WebSocket.js, to avoid try/catch and thus avoid optimizer bailouts.

## v0.3.2 - Dec 11th 2011

* Further performance updates, including the additions of a native BufferUtil module, which deals with several of the cpu intensive WebSocket operations.

## v0.3.1 - Dec 8th 2011

* Service release, fixing broken tests.

## v0.3.0 - Dec 8th 2011

* Node.js v0.4.x compatibility.
* Code cleanups and efficiency improvements.
* WebSocket server added, although this will still mainly be a client library.
* WebSocket server certified to pass the Autobahn test suite.
* Protocol improvements and corrections - such as handling \(redundant\) masks for empty fragments.
* 'wscat' command line utility added, which can act as either client or server.

## v0.2.6 - Dec 3rd 2011

* Renamed to 'ws'. Big woop, right -- but easy-websocket really just doesn't cut it anymore!

## v0.2.5 - Dec 3rd 2011

* Rewrote much of the WebSocket parser, to ensure high speed for highly fragmented messages.
* Added a BufferPool, as a start to more efficiently deal with allocations for WebSocket connections. More work to come, in that area.
* Updated the Autobahn report, at [http://einaros.github.com/easy-websocket](http://einaros.github.com/easy-websocket), with comparisons against WebSocket-Node 1.0.2 and Chrome 16.

## v0.2.0 - Nov 25th 2011

* Major rework to make sure all the Autobahn test cases pass. Also updated the internal tests to cover more corner cases.

## v0.1.2 - Nov 14th 2011

* Back and forth, back and forth: now settled on keeping the api \(event names, methods\) closer to the websocket browser api. This will stick now.
* Started keeping this history record. Better late than never, right?

repository: ChathurangaCPM/io-chat

repo_name: ChathurangaCPM/io-chat


text:
# Sorting

There are tons of different sorting methods available.  Reading about
them is one thing; watching them run is something entirely different.
This project allows you to easily watch as various sorting algorithms
perform their magic, helping you to gain a better understanding of how
they work.

# Setup

Getting started with this project is as easy as

    git clone https://github.com/jasonamyers/sorting.git
    cd sorting
    pip install -r requirements.txt
    python <filename_of_algorithm>

# Contribute

If you would like to add an additional sorting mechanism,
just look at one of the existing files, like `bubble_sort.py`,
to see how it's done.

In short, you write a function that implements a sorting algorithm,
then call `animation.show_sorting_movie(my_sort_function)`
to see it at work.

repository: whitmo/sorting

repo_name: whitmo/sorting


text:
Use with HttpKernel middlewares
================================

Nice uses Symfony's `HttpKernelInterface` under the hood. This means that Nice is compatible
with [stack middlewares](http://stackphp.com).

Add your favorite middlewares to your project:

```bash
php composer.phar require stack/builder:dev-master stack/run:dev-master
```

Then, in your front controller:

```php
<?php

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\HttpCache\HttpCache;
use Symfony\Component\HttpKernel\HttpCache\Store;
use Nice\Application;
use Nice\Router\RouteCollector;

require __DIR__ . '/../vendor/autoload.php';

// Create your app
$app = new Application();

// ..add your routes
$app->set('routes', function (RouteCollector $r) {
    // ...
});

// ..and then create the stack
$stack = new Stack\Builder();
$stack->push(function ($app) {
        return new HttpCache($app, new Store(__DIR__.'/cache'));
    });

$app = $stack->resolve($app);

// Run the app
Stack\run($app);
```

Custom Middlewares
------------------

Check out the [Stack](http://stackphp.com/) website for more information on custom middlewares.

Putting it all together
-----------------------

Now that we've seen how the basic parts of Nice work, we can put all the pieces together in a nice,
maintainable application. Check out these [additional notes](putting-it-together.md) on building great apps.

repository: nice-php/docs

branch_name: refs/heads/latest

repo_name: nice-php/docs


text:
# Android Transition Sample Using Blueprints

This is a demo project implementing search bar animation using transitions logic (duration, curve, delay's) from a blueprint.

# Demo

<img src="readme_assets/demo_transition.gif" height="720"/>


text:
# Mock Redis Client
- - -

A redis mock for node

[![NPM version](https://badge.fury.io/js/mock-redis-client.svg)](http://badge.fury.io/js/mock-redis-client) [![Build Status](https://travis-ci.org/darrylwest/mock-redis-client.svg?branch=develop)](https://travis-ci.org/darrylwest/mock-redis-client) [![Dependency Status](https://david-dm.org/darrylwest/mock-redis-client.svg)](https://david-dm.org/darrylwest/mock-redis-client)

# Introduction

The mock redis client borrows methods from [node-redis-mock](https://github.com/darrylwest/mock-redis-client) which was originally cloned from redis-mock.  There are a few more implementations, like mset, mget, etc.

This project isn't a clone of mock-redis-client or mock-redis, rather it uses encapulation to inherit methods implemented by the base object.  It's a cleaner way of extending the original works from both projects.

# Installation

~~~
	npm install mock-redis-client --save-dev
~~~

# Use

~~~
	var MockRedisClient = require('mock-redis-client');

    var client = new MockRedisClient();
~~~

Or if you need to mock redis itself, then do this:

~~~
    var redis = require('mock-redis-client').createMockRedis();

    var client = redis.createClient();
~~~

# API

Currently implemented are the following:

## General

* createClient
* end

## Events

* ready
* connect
* end
* subscribe
* unsubscribe
* message

## Publish/subscribe
* publish
* subscribe
* unsubscribe

## Keys
* del
* keys
* exists
* expire

## Strings
* get
* set
* incr
* mset
* mget

## Hashing
* hset
* hsetnx
* hget
* hexists
* hdel
* hlen
* hgetall
* hmset
* hkeys
* hincrby

## Lists
* llen
* lpush
* rpush
* lpushx
* rpushx
* lpop
* rpop
* blpop
* brpop
* lindex
* lset
* rpoplpush

## Server
* flushdb
* flushall
* save
* lastsave
* time
* dbsize (always returns zero)
* ping

## Transactions
* multi
* exec
* every previous supported commands can be chained

# Tests

~~~
    make test

    or

    make watch

    or

    grunt mochaTest jshint validate-package
~~~

- - -

Copyright © 2014-2016, rain city software | Version 0.91.13

repository: darrylwest/mock-redis-client

repo_name: darrylwest/mock-redis-client


text:
---
title: weighted composite analysis
publication_types:
  - "2"
authors:
  - Zhiang Xie
  - Anmin Duan
  - Qun Tian
doi: " https://doi.org/10.1002/asl.786"
publication: In Atmospheric Science Letter
abstract: The arbitrariness of composite analysis due to criterion of defining
  positive and negative events is an unsolved problem. To deal with it, a new
  method based on the covariance and defined as weighted composite analysis was
  developed in this study. Two ideal cases reveal that the new method can
  eliminate noise more effectively in small sample size, and has a higher signal
  to noise ratio than the traditional method in some cases. And a real case on
  the relationship between ENSO and geopotential height over East Asia in summer
  indicates that the new method shows some similar features with composite
  analyses, but can effectually avoid some inappropriate conclusions. It
  therefore provides an alternative approach to investigate linkages between
  different variables.
draft: false
featured: false
tags:
  - statistic method
image:
  filename: https://rmets.onlinelibrary.wiley.com/cms/asset/9546d30c-94f9-4739-8b4c-ea2b02a821a3/asl2786-fig-0001-m.jpg
  focal_point: Smart
  preview_only: false
date: 2017-10-16T13:00:00.000Z
---


text:
--------------------------------------------------------------------------------

## Treebank Statistics (UD_Hebrew)

This feature is language-specific.
It occurs with 1 different values: `Junk`.

159 tokens (0%) have a non-empty value of `Xtra`.
82 types (0%) occur at least once with a non-empty value of `Xtra`.
28 lemmas (0%) occur at least once with a non-empty value of `Xtra`.
The feature is used with 1 part-of-speech tags: [he-pos/X]() (159; 0% instances).

### `X`

159 [he-pos/X]() tokens (100% of all `X` tokens) have a non-empty value of `Xtra`.

`X` tokens may have the following values of `Xtra`:

* `Junk` (159; 100% of non-empty `Xtra`): ה, קפידבין, ב, קפספבין, ה_, קפכות, קפספקו, ו, בנקים, יחסים

`Xtra` seems to be **lexical feature** of `X`. 100% lemmas (28) occur only with one value of `Xtra`.

## Relations with Agreement in `Xtra`

The 10 most frequent relations where parent and child node agree in `Xtra`:
<tt>X --[dep]--> X</tt> (20; 100%),
<tt>X --[det:def]--> X</tt> (12; 100%),
<tt>X --[case]--> X</tt> (12; 100%).

repository: PhyloStar/UDTelugu

repo_name: PhyloStar/UDTelugu


text:
---
layout: page
title: Our Sponsors
permalink: oursponsors
subtitle: Sponsors of UNSWLoLSoc

---
Our society is extremely fortunate to have partnerships with the following sponsors in 2018. We would like to thank our sponsors for their constant support and encourage our members to engage with them as they continue to provide amazing prizes, venues
and opportunities for our society.

 ARC UNSW:

 STUDENT ORGANISATION

      Arc is UNSW's student organisation that sponsors and oversees all UNSW student ARC-affiliated societies. All UNSW students are eligible to sign up to Arc membership for free.

 Click here to find out more about Arc and sign up for an Arc membership

 GIGABYTE:

 TECHNOLOGY

      As a pioneer in the motherboard industry, GIGABYTE also excels in information technology and gaming products. To "Upgrade Your Life" is the idea behind GIGABYTE which conveyed our core values of innovation and inspiration. Their unlimited passion for
      technology drives them to be a worldwide leader in ICT industry and achieve brilliant reputations from the media and the public.

 Click here to check out their great accessories

 NVIDIA:

 TECHNOLOGY

      NVIDIA’s work in visual computing — the art and science of computer graphics — has led to thousands of patented inventions, breakthrough technologies, deep industry relationships and a globally recognised brand. For two decades, they have pioneered this
      uniquely powerful medium, which has transformed the PC from a tool for productivity into one for creativity and discovery.

 Click here to check out their latest graphic hardware for the best gaming experience

 WANGYU:

 CONCEPT INTERNET CAFÉ

      Established in 1998, WangYu is striving relentlessly to a healthy, joyful e-entertainment, pushing cyber café to a positive healthy direction, and redefining cyber café an unique mixture of service and culture. 15 years of dedication, WangYu is well known
      by the community and loved by many! The WangYu team are keen to every effort in leading the Cyber Café industry.

 Click here to find out more about their latest cyber cafe facilities

 AOC:

 COMPUTER MONITORS

      AOC is positioned to be one of the top global players in providing the best value display technology. With long-term dedicated research and development, AOC today offers a wide range of top performing LCD monitors. AOC provides businesses and individuals
      the opportunity to own the latest monitor displays that boast cutting edge performance and innovative styling. Through an extensive, award winning distribution network and competitive pricing, AOC offers our products to a broad range of consumers
      around the world.

 Click here to check out their latest monitors on offer

 LOGITECH G:

 COMPUTER AND MOBILE ACCESSORIES

      Logitech G offers quality peripherals to provide a unique, immersive gaming experience. Starting from specially designed mice, keyboards and headsets for the standard PC gamers to new innovations such as gamepads that offer PC gamers the experience of
      console games, Logitech G continues to be at the forefront of PC and gaming technology.

 Click here to check out their latest products


text:
**IMPORTANT NOTE**
The API has been developed hand in hand with its implementation in our LabVIEW software.
Hence, the examples provided are in LabVIEW. Matlab examples will be provided in the near future.

The functions prototypes in the API are 'C' compliant. Hence users can use it in any other environment using standard DLL API call methods (however, success is not guaranteed).

### Using the API

The API calculates chirps for a full frame  plane or a set of ROIs based ( a 'record' ).

This chirp computation forms the core of the AOL controller based microscope software. The aim of this API is to enable integration of Silverlab's AOL based microscopy into any compatible 3rd party software.

![](media/api_schematic.PNG)
figure 4. API positioning within the microscopy software.

The number of lines is limited to 2048 for each run of the API.

__The API consists of 2 main functions -__

`getRecordSize` : This function calculates array sizes for AOL records.
These size values are then used to pre-allocate arrays for input to the main
AOL chirp record function.

`getAolRecord`  : Computes the AOL chirp record.

The following figure shows the function call sequence logic -
![](media/function_call_seq.PNG)

figure 5. function call sequence

The details of each function are as follows -

#### getRecordSize

```
int getRecordSize
(
  int no_of_lines,                //input
  double *scanVariables,          //input
  double *start_coordinates,      //input
  int *no_of_rows,	          //output
  int *record_size,               //output
  int *imaging_mode               //output
);
```

`int no_of_lines` : Is equal to the frame size for full frame imaging or equal to
the cumulative total or all lines for ROI based imaging (32 bit / 4 byte integer).

`double *scanVariables` : 1-D Array (8-byte double) of scanning variables to be obtained from the microscopy software GUI. Described in detail in the following section.

`double *start_coordinates` : 2-D Array (8-byte double) of XYZ start co-ordinates.
X and Y coordinates are normalised. The Z coordinates are in micrometers.
For full frame live imaging, a the 2-D array consists of a single row. In this row, the X and Y co-ordinates are both 0.

`int *no_of_rows` : Reserved, used for debugging.

`int *record_size` : one dimension of the 2-D arrays to be pre-allocated for the main  *getAolRecord* function.

`int *imaging_mode` : Reserved, used for debugging.

#### getAolRecord

```
int getAolRecord
(
	int field_correction_input,            //input
	double *pixels_per_line,               //input
	double *XYZ_start,                     //input
	double *XYZ_stop,                      //input
	double *arrayDims,                     //input
	double *scanVariables,                 //input
	double *AOL_Params,                    //input
	double *Scan_Params,                   //input
	double *drive_param_1,                 //output
	double *drive_param_2,                 //output
	double *drive_param_3,                 //output
	double *drive_param_4,                 //output
	double *drive_param_5,                 //output
	double *field_correction_1,            //output
	double *field_correction_2,            //output
	double *field_correction_3,            //output
	double *field_correction_4,            //output
	double *field_correction_5             //output
);
```

`int field_correction_input` : Flag of whether the chirp calculation is for imaging or field correction
0 = false, 1 = true

`double *pixels_per_line` : This input is reserved for future developments. Hence only send an empty array.

`double *XYZ_start` : 2-D Array (8-byte double) of X, Y and Z start coordinates of all lines.
X and Y coordinates are normalised. The Z coordinates are in micrometers.
For full frame live imaging, a the 2-D array consists of a single row. In this row, the X and Y co-ordinates are both 0.

`double *XYZ_stop` : 2-D Array (8-byte double) of X, Y and Z stop coordinates of all lines.
X and Y coordinates are normalised. The Z coordinates are in micrometers.
For full frame live imaging, a the 2-D array consists of a single row. In this row, the X and Y co-ordinates are both 0.

`double *arrayDims` : 1-D Array (8-byte double) of the following -

| Index No.  | Input |
| ------------- | ------------- |
| 0 | length of XYZ_start or XYZ_stop  |
| 1  | 3 (fixed)  |
| 2  | 1 (fixed)  |

`double *scanVariables` :	1-D Array (8-byte double) of the following -
(please take a careful note of the units)

| Index No.  | Input |
| ------------- | ------------- |
| 0 | AOL mode (see sep. table)  |
| 1 | laser wavelength [m]  |
| 2 | Centre frequency [Hz]  |
| 3 | Acceptance angle [rad]  |
| 4 | Frame size / x pixel density  |
| 5 | Dwell time [s]  |
| 6 | True (Reserved)  |
| 7 | No of pixels per line scan  |
| 8 | False (Reserved)  |
| 9 | False (Reserved)  |
| 10 | True (Reserved)  |
| 11 | Zoom  |

***Important Note***
Users are advised to strictly adhere to the values provided for reserved variables.
Else, the results would be unpredictable.
For 'false', use value 0, for 'true' use value 1.

The AOL modes are as follows

| No.  | AOL Modes |
| ------------- | ------------- |
| 0  | Invalid  |
| 1  | Raster  |
| 2  | Structural  |
| 3  | Pointing  |
| 4  | Line Scan  |

`double *AOL_Params`:
1-D Array (8-byte double) of the following -

| Index No.  | Input |
| ------------- | ------------- |
| 0 | Calibrated wavelength [m]  |
| 1 | Sum X |
| 2 | Sum Y |
| 3 | Diff X |
| 4 | Diff Y |
| 5 | Distortion correction|
| 6 | Z norm to micron scaling|
| 7 | X norm to micron scaling|
| 8 | 0 (Reserved) |
| 9 | Controller FPGA clock frequency [Hz] |
| 10 | Data time interval [seconds] |
| 11 | Control System T0 [seconds] |
| 12 | Control System Ta [seconds] |
| 13 | DAQ FPGA clock frequency [Hz] |
| 14 | DAQ FPGA samples to wait after trigger [ticks] |
| 15 | DAQ FPGA AOD Fill time [micro-seconds] |
| 16 | DAQ FPGA start up delay [ticks] |

`double *Scan_Params`:
1-D Array (8-byte double) of the following -

| Index No.  | Input |
| ------------- | ------------- |
| Swap XY on Stage  | false = 0, true = 1  |

`double *drive_param_1,
double *drive_param_2,
double *drive_param_3,
double *drive_param_4,
double *drive_param_5,
double *field_correction_1,
double *field_correction_2,
double *field_correction_3` : Preallocate empty arrays of the following size and generate pointers -
2-D array (8-byte double), size = *record_size* x 4
(*record_size* is obtained from *getRecordSize*)

`double *field_correction_4`:
Preallocate empty arrays of the following size and generate pointers -
1-D array (8-byte double), size = *record_size* x 1

`double *field_correction_5`:
Single value pointer of the type 8-byte double


text:
# dipenWeatherApp

A Weather App, where you can enter the city name with state (country) and forecast the weather.
Made with AngularJS and openweather API.

##[View Site](https://nepid.github.io/dipenWeatherApp/)

repository: nepid/dipenWeatherApp

repo_name: nepid/dipenWeatherApp


text:
This is a small Flask website which is only meant to reproduce this error by doing a ping from the browser to the server.

## Steps to reproduce error:

    virtualenv venv
    . venv/bin/activate
    pip install -r requirements.txt
    gunicorn --worker-class eventlet -b <IP_ADDRESS>:5000 -w 1 app:app

Then open the browser at http://<IP_ADDRESS>:5000 and see the terminal output, which should show something like this:

    016-04-15 17:01:34 [31122] [ERROR] Error handling request
    Traceback (most recent call last):
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/workers/async.py", line 45, in handle
        self.handle_request(listener, req, client, addr)
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/workers/async.py", line 102, in handle_request
        resp.close()
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 369, in close
        self.send_headers()
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 284, in send_headers
        tosend = self.default_headers()
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 265, in default_headers
        elif self.should_close():
      File "/Users/kramer65/repos/gunicorn-error/venv/lib/python2.7/site-packages/gunicorn/http/wsgi.py", line 198, in should_close
        if self.status_code < 200 or self.status_code in (204, 304):
    AttributeError: 'Response' object has no attribute 'status_code'


text:
# Machine Learning Trivia Challenge

> Rules

A multiple choice trivia game based on machine learning questions. Click the Start button to begin. Choose the best answer from the listed options. Answer each question within 20 seconds. An unanswered question is counted as an incorrect answer. Answer all 5 questions to ace the challenge!

## Screenshots

Main Page

Sample Question

Summary Page

## Installing / Getting started

Simply head [here](http://amritsingh.ca/TriviaGame/) to to start playing!

## Developing

Feel free to modify/expand upon my code for your purposes!

```shell
git clone https://github.com/singha53/TriviaGame.git
cd TriviaGame/
```

## Scripting/Programming Languages

- HTML, CSS (including Bootstrap), JavaScript (and libraries jQuery and Chart.js)

## Features

- progress bar
- correct answer is displayed after each question
- Summary of Correct and incorrect answers displayed using a donut chart

## Contributing

If you'd like to contribute, please fork the repository and use a feature
branch. Pull requests are warmly welcome.

## Links

Even though this information can be found inside the project on machine-readable
format like in a .json file, it's good to include a summary of most useful
links to humans using your project. You can include links like:

- Game homepage: http://amritsingh.ca/TriviaGame/
- Repository: https://github.com/singha53/TriviaGame/

## Licensing

The code in this project is licensed under MIT license.


text:
---
identifier: MIR:00000479
name: JCGGDB
description: JCGGDB (Japan Consortium for Glycobiology and Glycotechnology DataBase) is a database that aims to integrate all glycan-related data held in various repositories in Japan. This includes databases for large-quantity synthesis of glycogenes and glycans, analysis and detection of glycan structure and glycoprotein, glycan-related differentiation markers, glycan functions, glycan-related diseases and transgenic and knockout animals, etc.
prefix: jcggdb
pattern: ^JCGG-STR\d{6}$
prefixed: 0
local_id: JCGG-STR008690
synonyms:
 - Japan Consortium for Glycobiology and Glycotechnology DataBase
resources:
 - identifier: MIR:00100614
   accessurl: http://jcggdb.jp/idb/jcggdb/${lid}
   keyword: GlyTouCan
   description: JCGGDB at Advanced Science Institute (Japan)
   homepage: http://jcggdb.jp/index_en.html
   institution: Advanced Science Institute(ASI), Chemical Biology Department Systems Glycobiology research Group, Saitama
   location: Japan
   official: false
---

repository: cmungall/registry

repo_name: cmungall/registry


text:
# IoTorii

Copyright (C) 2018 Elisa Rojas(1), Hedayat Hosseini(2);

                     (1) GIST, University of Alcala, Spain.

                     (2) CEIT, Amirkabir University of Technology (Tehran Polytechnic), Iran.

Developed in OMNet++5.2.1, based on INET framework.

LAST UPDATE OF THE INET FRAMEWORK: inet3.6.3 @ December 22, 2017

In the simulation, the width and length of HLMAC address are unlimited.
Some parts of the Mac sub layer and all of the physical layer in the simulation are based on the IEEE802.15.4 of INET framework.

repository: NETSERV-UAH/IoTorii

repo_name: NETSERV-UAH/IoTorii


text:
# ArithmeticGunner

I am trying to study WPF like UI framework Avalonia.
ArithmeticGunner is game for kids to train the multiplication table and other arithmetic opertions.

Screenshot:
![ScreenShot](screen1.jpg)

Screenshot with comments:
![ScreenShot with comments](screen1_with_comments.jpg)

repository: al-al-se/ArithmeticGunner

repo_name: al-al-se/ArithmeticGunner


text:
## Requirements

This role only is needed/runs on RHEL and its derivatives.

## Role Variables

See `defaults/main.yml`.

## Dependencies

None.

## Add to Requirements

    - src: https://github.com/nexcess/ansible-role-repo-go-repo-io.git
      name: nexcess.go-repo-io

## Example Playbook

    - hosts: servers
      roles:
        - nexcess.go-repo-io

## License

MIT

repository: nexcess/ansible-role-repo-go-repo-io

repo_name: nexcess/ansible-role-repo-go-repo-io


text:
---
id: production
title: Go to production
---

Read this document to prepare for production when self-hosting Ory Kratos.
Feel free to [open an issue or pull request](https://github.com/ory/docs/) when you have an idea how to improve this
documentation.

Read more about [deployment fundamentals and requirements for Ory](https://www.ory.sh/docs/ecosystem/deployment).

## Database

Ory Kratos requires a production-grade database such as PostgreSQL, MySQL, CockroachDB. Don't use SQLite in production!

## Security

When preparing for production it's paramount to omit the `--dev` flag from `kratos serve`.

### HTTP clients

In some scenarios you might want to disallow HTTP calls to private IP ranges. To configure this feature, set the following
configuration:

```yaml
clients:
  http:
    disallow_private_ip_ranges: true
```

If enabled, all outgoing HTTP calls done by Ory Kratos will be checked whether they're against a private IP range. If that's the
case, the request will fail with an error.

### Admin API

Never expose the Ory Kratos Admin API to the internet unsecured. Always require authorization. A good practice is to not expose
the Admin API at all to the public internet and use a Zero Trust Networking Architecture within your intranet.

## Scaling

There are no additional requirements for scaling Ory Kratos, just spin up another container!

repository: ory/docs

gha_language: TypeScript

repo_name: ory/docs


text:
# Solution File Diff

[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
![Works with Visual Studio 2019](https://img.shields.io/static/v1.svg?label=VS&message=2019&color=5F2E96)

Download the extension from the [VS Marketplace](https://marketplace.visualstudio.com/items?itemName=MattLaceyLtd.SlnFileDiff)

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

Visual Studio extension that allows you to diff files from the Solution Explorer.

* Select two files in solution explorer
* Right-click
* Select "Diff selected files"
* See those files open in a diff window

simple.

repository: mrlacey/SlnFileDiff

repo_name: mrlacey/SlnFileDiff


text:
# Dianoga

An automatic image optimizer for the Sitecore media library. Reduce the size of your images served from Sitecore by 8-70%, completely automatically.

When media images are requested, Dianoga automatically runs [mozjpeg](https://github.com/mozilla/mozjpeg), [PNGOptimizer](http://psydk.org/pngoptimizer), [nQuant](https://nquant.codeplex.com/), or [SVGO](https://github.com/svg/svgo) on the image data immediately after it is placed in the Sitecore media cache.

Dianoga ensures that your site is always serving fully optimised media library images even if you are using Sitecore's dynamic resizing features (for example with [Adaptive Images](https://marketplace.sitecore.net/en/Modules/Sitecore_Adaptive_Images.aspx)). Even if you have already optimized every image uploaded into the media library, after Sitecore performs image processing the result is _not_ optimized (an unfortunate limitation of most other image optimization libraries for Sitecore is that they only apply to the original image).

Dianoga is also great for situations where content editors may not be image editing experts and upload images that contain gobs of EXIF data and other nonessential metadata - these are removed automatically before being shown to visitors. All of the optimizations done are lossless (no quantizing, etc) so you lose no image quality.

## Format Support

Dianoga supports:
* JPEGs (via mozjpeg - lossless optimization)
* PNGs (via PNGOptimizer - lossless, and/or nQuant - lossy)
* SVGs (via SVGO - lossless, and automatic gzipping of SVG media responses)

Additional format support is possible to add via new processors in the `dianogaOptimize` pipeline.

## Performance

By default, Dianoga runs asynchronously _after_ the image is saved into the media cache. This means it has practically no effect on the site's frontend performance (though it does use some CPU time in the background). The performance of Dianoga is logged into the Sitecore log. PNGs are very fast because it's a native P/Invoke call to a C DLL - about 20ms for a small one. JPEGs result in executing a program and are slightly slower - around 200ms for a medium sized image. Larger images several MB in size can take a second or two depending on the hardware in use.

Once the image is in cache for the requested size, there is no performance penalty as the file is read from the media cache unless it is changed again.

Note that because the cache is updated after the first image request, the _first_ hit to images will result in the unoptimized version being served, to preserve the responsiveness of the request. Subsequent requests will receive the optimized version from cache.

## Limitations

Because Dianoga uses a DLL version of PNGOptimizer, it is platform-specific and only runs on 64-bit application pools. You can still use nQuant for PNGs on 32-bit pools.

Dianoga depends on the Dianoga Tools folder that is installed by the NuGet package into the web project it is installed on. You can relocate these tools if you wish by changing the paths in the `App_Config/Include/Dianoga/(Dianoga.Jpeg.config|Dianoga.Png.config|Dianoga.Svg.config)` files.

## Options

### Optimization Strategies

In Dianoga 3, you can choose your optimization strategy. Most people if serving media locally are best off with the defaults, which optimize the media as it is placed into the media cache. This results in minimal impact to the experience for front end visitors.

However, for folks using CDNs those sources must be sent the optimized version of the media immediately. For these situations, you can enable `Dianoga.Strategy.GetMediaStreamSync.config.disabled` and disable `Dianoga.Strategy.MediaCacheAsync.config`. This will cause optimization to occur synchronously as the media is first requested, which is appropriate if the media is being sent to a CDN. This may however cause a delay for the first hit user before they start seeing images.

If you want to execute the Dianoga optimization pipeline programmatically (e.g. as part of a CDN upload background process), you can use the `MediaOptimizer` class to execute optimization on any Sitecore `MediaStream` object at will.

### Ignoring Paths

Dianoga 3 allows for ignoring specific paths in the media library. See `Dianoga.ExcludePaths.config.example` for an example of this.

## Installation

Dianoga has a NuGet package for Sitecore 7 and 8 (.NET 4.5). Just install it, __clear your App_Data/MediaCache folder__, and you're done. Note: Installing the package will take longer than most NuGet packages due to the bundled optimizers.

The code should compile against Sitecore 6.x without issue.

To perform a manual installation:

* Copy the `Dianoga Tools` folder to the `App_Data` folder of your website
* Copy `Default Config Files/*.config` to `App_Config\Include\Dianoga`
* Reference `Dianoga.dll` or the source project in your web project

## Upgrade

Upgrading from Dianoga 2.0 to 3.0 is fairly simple.

1. Upgrade the NuGet package.
2. Remove any `App_Config\Include\Dianoga.config` that may exist (config has changed, you must reapply settings if changed in the new scheme)
3. Remove `Dianoga Tools` if it exists (Dianoga 3 places tools under App_Data\Dianoga Tools instead so that IIS defaults to not serving anything there)
4. Delete your MediaCache folder (defaults to App_Data/MediaCache) on all servers after deployment of Dianoga (otherwise unoptimized caches will remain present)
5. Have fun.

## Troubleshooting

If you're not seeing optimization take place, there are a couple of possibilities:

* The image might already be in the media cache (by default, `/App_Data/MediaCache`). Sitecore does not reprocess images in cache until needed, so Dianoga may never be called. Delete this folder, clear your browser cache or use ctrl-F5, and try again.
* The image may be in your browser cache. Check using the browser's network tab or Fiddler that Sitecore was not returning a `HTTP 304 Not Modified` response code for the media. If it was, the media cache was not evaluated for the response. Try a hard refresh instead.
* An error is occurring. The Sitecore logs catch all errors that occur when generating a media stream, so look there first. If an error occurs, the result of the pipeline is thrown away and the unmodified stream returned so you may not see broken images if this occurs, just oddly sized - if resizing - or unoptimized ones.

## Extending Dianoga

You can optimize any type of image that the media library supports with Dianoga.

Adding a new `Processor` to the config will enable you to call a micro-pipeline you define to process that type.

In your `Optimizer` micro-pipeline you can add or remove optimizers (e.g. nQuant) that are applied in order to the specified file type.

Comments are available in the config files and source for your perusal.

repository: patocl/Dianoga

repo_name: patocl/Dianoga


text:
---
title: Custom Presets
taxonomy:
    category: docs
    tag: [gantry4]
---

This section covers the creation of a new custom preset in a Gantry-enabled template.

[ui-tabs position="top-left" active="0"]
[ui-tab title="Joomla"]

[plugin:youtube](https://www.youtube.com/watch?v=n6FsulE58lU)

! Creating a custom preset is a very simple task with Gantry. Check out this short video on how to customize your layout then create a custom preset based on your configuration options.

[/ui-tab]
[ui-tab title="WordPress"]

[plugin:youtube](https://www.youtube.com/watch?v=_bU95HLptUs)

! Creating a custom preset is a remarkably straightforward task with Gantry. Check out this short video on how to customize your layout and create a custom preset based on your configuration options.

[/ui-tab]
[/ui-tabs]

Step 1: Preparing
-----------------

Gantry provides the ability for you to create your own custom presets based on any parameter in the template administrator. You should determine which parameters you wish to make a part of the presets. Write down their names as found in the **templateDetails.xml** file.

Step 2: Saving a Custom Preset
------------------------------

There are two types of presets. The first type is defined by the template itself. These are located in the `$gantry_presets` variable located in the **gantry.config.php** file.

```php
$gantry_presets = array(
    'presets' =>>> array(
        'preset1' =>>> array(
            'name' =>>> 'Preset 1',
            'cssstyle' =>>> 'style1',
            'linkcolor' =>>> '#2698de',
            'font-family' =>>> 's:helvetica'
    ),
        'preset2' =>>> array(
            'name' =>>> 'Preset 2',
            'cssstyle' =>>> 'style2',
            'linkcolor' =>>> '#ff0000',
            'font-family' =>>> 's:helvetica'
    ),
    ...
```

This array contains a set of presets comprised of another array of parameters along with a special parameter called **name** which is the display name for this preset.

[ui-tabs position="top-left" active="0"]
[ui-tab title="Joomla"]

The second kind of preset is the custom preset you can save from the template administrator. If you set a bunch of parameters in the administrator, you can click **Save Preset** from the Save button dropdown and save as **new preset**. This will save the same parameters as defined in the `$gantry_presets` variable. If you want to save new parameters, you will also need to add them to the `$gantry_presets` variable in order for them to be saved as a custom preset. If you save a custom preset, Gantry will create a file called **presets.ini** in your `YOUR_SITE/templates/YOUR_TEMPLATE/custom/` folder. In the example below, we saved a custom preset and chose the name "New Preset" in the popup dialog.

[/ui-tab]
[ui-tab title="WordPress"]

The second kind of preset is the custom preset that you can save from the template settings page. If you set a bunch of parameters in the administrator, you can click **Save Preset** from the Save button dropdown and save as **new preset**. This will save the same parameters as defined in the `$gantry_presets` variable. If you want to save new parameters, you will also need to add them to the `$gantry_presets` variable in order for them to be saved as a custom preset. If you save a custom preset, Gantry will create a file called **presets.ini** in your `YOUR_SITE/wp-content/themes/YOUR_TEMPLATE/custom/` folder.

[/ui-tab]
[/ui-tabs]

```ini
newpreset_name="New Preset"
newpreset_linkcolor="#db2c2c"
newpreset_font-family="s:helvetica"
```

Step 3: Creating a Custom Thumbnail
-----------------------------------

[ui-tabs position="top-left" active="0"]
[ui-tab title="Joomla"]

When you create a new custom preset, there is a default image used in the preset chooser to represent this. You can create your own thumbnail for each style by creating a PNG file which is the 'short' name of the preset with the dimensions of 180px x 100px. For example, for our custom preset above, we would just create a small thumbnail called **newpreset.png** and put this file in the `YOUR_SITE/templates/YOUR_TEMPLATE/admin/presets/` folder.

[/ui-tab]
[ui-tab title="WordPress"]

When you create a new custom preset, there is a default image used in the preset chooser to represent this. You can create your own thumbnail for each style by creating a png file that is the 'short' name of the preset with the dimensions of 180px x 100px. For example, for my custom preset above, I would just create a small thumbnail called **newpreset.png** and put this file in the `YOUR_SITE/wp-content/themes/YOUR_TEMPLATE/admin/presets/` folder.

[/ui-tab]
[/ui-tabs]

Step 4: Adding To Gantry's Presets
----------------------------------

To transfer one of the custom presets into the core Gantry config file, you just need to convert the values in the **preset.ini** file into the array format as used in the `gantry.config.php` file. We've added this custom preset portion to the bottom of the array in the file:

```php
...
'preset2' =>>> array(
    'name' =>>> 'Preset 1',
    'cssstyle' =>>> 'style1',
    'linkcolor' =>>> '#2698de',
    'font-family' =>>> 's:helvetica'
),
'newpreset' =>>> array(
    'name' =>>> 'New Preset',
    'cssstyle' =>>> 'style2',
    'linkcolor' =>>> '#db2c2c',
    'font-family' =>>> 's:helvetica'
),
...
```

repository: gantry/docs

branch_name: refs/heads/develop

gha_language: Twig

repo_name: gantry/docs


text:
Forseti smart contracts POC

# Dependencies
[![truffle](https://img.shields.io/badge/truffle-v3.4.11-orange.svg)](https://truffle.readthedocs.io/en/latest/)
[![solidity](https://img.shields.io/badge/solidity-docs-red.svg)](http://solidity.readthedocs.io/en/develop/types.html)
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Join the chat at https://gitter.im/ForsetiTeam](https://badges.gitter.im/forseti/forseti.svg)](https://gitter.im/ForsetiTeam)

## Overview

Forseti is a decentralized arbitration/mediation network and reputation system framework based on smart contracts

Purpose of this repository to serve as live documentation page for all contributers. Everyone , not only Forseti team members can contribute to this repo.

## Contributing
The general contribution rules can be found at [Contribution ](https://forseti.gitbooks.io/forseti-doc/content/contribution.html)

# Smart contracts

## Core contracts
Core contracts responsible for permissions managment, deals managment

## Reputation contracts
### _disclaimer_ : deprecated
contracts responsible for reputation storing

## Dispute Resolution Contracts
### _disclaimer_ : Currently in private repository
Contracts responsilble for Dispute Resolution process and extensions for external Dapp integration

## Get in touch

If you have any question , reach us at [Gitter Channel](https://gitter.im/ForsetiTeam)


text:
---
layout: page
title: About
permalink: /about/
---

I'm Tom, a teenager from Ireland.

I've set this website up to take over from another one, tommccarthyprojects.com, which deals mainly with my Fusor project.  I've got other projects and interests running too though, and there should be posts here about more than just the Fusor.  Fusor posts still run on [tommccarthyprojects.com](https://tommccarthyprojects.com/).

Some blogs I like the feel of:

* [Paul Graham](https://paulgraham.com)
* [Oliver Nash](https://olivernash.org)
* [Zach Holman](https://zachholman.com)

I wanted something simple for a blog/website, but also more open to experimentation than Wordpress, so this new departure is hosted on Github Pages and Jekyll.  Using Jekyll-Now to simplify things.

Twitter: [@fusorfusion](https://twitter.com/fusorfusion)

Email: tommccarthyprojects at gmail


text:
# Extensions

## Table of Content

* [Introduction](#introduction)
* [Convert a Bundle](#convert-to-extension)
* [Enabling an Extension](#enable-extension)
* [Extension Start File](#start-file)
* [Configuring an Extension](#configure-extension)
	- [Disable configuration](#disable-configure-extension)
	- [Dependencies Management](#dependency-extension)

## Introduction

Extension may contain widget or resources (components) to be added for Orchestra Platform. By principle Extension in Orchestra Platform is a bundle except that Orchestra will manage setup process:

* Migration for bundle
* Publish asset for bundle

## Convert a Bundle

The process is simple, an extension is a Bundle except that first it need to have a definition file. The definition file will be stored in `bundles/bundle-name/orchestra.json`, this tell Orchestra Platform to handle the bundle as an extension. Here's an example of Definition File for OneAuth extension.

	{
		"name"        : "OneAuth",
		"description" : "OAuth, OAuth2 and OpenID Auth bundle for Laravel",
		"author"      : "Mior Muhammad Zaki",
		"url"         : "http://bundles.laravel.com/bundle/oneauth",
		"version"     : "0.1.0",
		"config"      : {
			"handles" : "oneauth"
		},
		"require"     : {}
	}

> The definition file can easily be created using `php artisan orchestra::toolkit definition`.

## Enabling an Extension

Extensions will be manage by Orchestra Platform Administrator Interface. Login as an
administrator and go to **Extensions** on the top navigation.

Few things to consider:

* Only activated extensions will be run on runtime.
* Orchestra will start bundle which is activated as extensions.

## Extension Start File

Extension start file (optional) allow extension to run start script (as Laravel run bundles start.php file). The start file will be stored in `bundles/bundle-name/orchestra.php`.

> The definition file can easily be created using `php artisan orchestra::toolkit start`.

What inside the file depends on how extension would interact with Orchestra Platform and this can be diverse depending on use cases.

Some examples:

* [OneAuth Start File](https://github.com/codenitive/laravel-oneauth/blob/master/orchestra.php)
* [Cello CMS Start File](https://github.com/orchestral/cello/blob/master/orchestra.php)
* [Robotix Start File](https://github.com/orchestral/robotix/blob/master/orchestra.php)

## Configuring an Extension

By default, administrator are able to configure any extension based on requirement of the application including `handles` value using Orchestra Platform Administrator Interface. This allow non-technical administrator to take charge of the application without having to understand any of the code.

To configure an extension, the extension need to be activated. Once this is done, all extension that allow configuration can be configured. Simply click on the extension name to navigate to the configuration page.

### Disable configuration

Extension developer can disable configuration option by adding `"configurable" : false`, To do this edit your definition file.

	{
		/* ... */

		"config"      : {
			"handles"      : "oneauth",
			"configurable" : false
		}
	}

By doing so, Orchestra will take extension as it is and will not try to modify any of the configuration.

### Dependencies Management with Extension

Managing dependencies has never been easier, extension developer can define and manage dependencies using `"require" : {}`, as you would using composer.

	{
		/* ... */

		"require" : {
			"cartie" : ">=0.1.0",
			"s3"     : "bundle"
		}
	}

An extension may also depends on certain bundle (which is not registered as an extension), in this case just define the minimum compatible version as `"bundle"` to indicate such dependencies.

> Credit to [@lordcoste](http://github.com/lordcoste) for the feature.

repository: maneeshs/orchestra

repo_name: maneeshs/orchestra


text:
---
title: Manage opt-out
description: Learn how to manage opt-out and privacy
feature: Journeys
topic: Content Management
role: User
level: Intermediate
---
# Manage opt-out {#consent}

Use [!DNL Journey Optimizer] to track your recipients' consent for communication and understand how they want to engage with your brand by managing their preferences and subscriptions. <!--Their preferences and subscriptions are handled through Consent management.-->

Regulations such as GDPR state that you must comply with specific requirements before being able to use information from Data Subjects. Moreover, Data Subjects should be able to modify their consent at any time.

**Why is it important?**

* Failing to comply with these regulations introduces regulatory legal risks for your brand.
* It helps you avoid sending unsolicited communications to your recipients, which could make them mark your messages as spam and harm your reputation.

Learn more on managing Privacy and the applicable regulations in the [Experience Platform documentation](https://experienceleague.adobe.com/docs/experience-platform/privacy/home.html?lang=en).

<!--* Recipients should be able to opt-in/opt-out from receiving electronic communication through one or more channel
* Recipients expect the brand to offer preference centre capability that controls how brand should engage with them (example: channel of communication, invasive and non-invasive tracking etc). This helps to fulfil regulatory obligations and also facilitates quality engagement with recipient.
* The third category is the capability to offer subscription to recipients (newsletter, etc)-->

## Opt-out management {#opt-out-management}

Providing the capability to recipients to unsubscribe from receiving communications from a brand is a legal requirement. Learn more about the applicable legislation in the [Experience Platform documentation](https://experienceleague.adobe.com/docs/experience-platform/privacy/regulations/overview.html?lang=en#regulations).

Therefore, you must always include an **unsubscribe link** in every email sent out to recipients:
* Upon clicking this link, the recipients will be directed to a landing page including a button to confirm opting out.
* Upon clicking the opt-out button, an Adobe I/O call will be made to update the profile data with this information. [Learn more about this](#consent-service-api).

To add an unsubscribe link, follow the steps below:

1. Build your unsubscription landing page.
1. Host your landing page on the third-party system of your choice.
1. [Create a message](../../help/using/create-message.md) in [!DNL Journey Optimizer].

    <!--The link to your landing page should contain a static URL and the profile ID.-->

1. Select text in your content and insert a link using the contextual toolbar.

    ![](assets/opt-out-insert-link.png)

1. Select **[!UICONTROL Unsubscription link]** from the **[!UICONTROL Link type]** drop-down list.

    ![](assets/opt-out-link-type.png)

1. In the **[!UICONTROL Unsubscription page URL]** frame, copy the link to your landing page.

    ![](assets/opt-out-link-url.png)

1. Click **[!UICONTROL Save]**.

1. Save your content and [publish your message](../../help/using/publish-manage-message.md).

    >[!NOTE]
    >
    >Your third-party landing page URL will include three parameters that will be used to update the profiles' preferences through an Adobe I/O call. [Learn more in this section](#consent-service-api).

1. Send your message with the link to your landing page through a [journey](building-journeys/journey.md).

1. Once the message is received, if the recipient clicks the unsubscribe link, your landing page is displayed.

    ![](assets/opt-out-lp-example.png)

1. If the recipient clicks the opt-out button in the landing page (here, the **Unsubscribe** button), the profile data is updated through an [Adobe I/O call](#opt-out-api).

    The opted-out recipient is then redirected to a confirmation message screen indicating that opting out was successful.

    ![](assets/opt-out-confirmation-example.png)

    As a result, this user will not receive communication from your brand unless subscribed again.

To check that the corresponding profile's choice has been updated, go to Experience Platform and access the profile by selecting an identity namespace and a corresponding identity value. Learn more in the [Experience Platform documentation](https://experienceleague.adobe.com/docs/experience-platform/profile/ui/user-guide.html?lang=en#getting-started).

![](assets/opt-out-profile-choice.png)

In the **[!UICONTROL Attributes]** tab, you can see the value for **[!UICONTROL choice]** has changed to **[!UICONTROL no]**.

<!--The opt-out URL is resolved upon each recipient receiving the message. It is then personalized with the relevant encrypted parameters (profile ID, profile name, journey ID, sandbox ID, and message execution ID).-->

## Opt-out API call {#opt-out-api}

Once the recipient has opted out by clicking the unsubscribe link, an Adobe I/O API <!--Consent service API to capture the encrypted data and-->is called to update the corresponding profile's preference.

This Adobe I/O POST call is as follows:

Endpoint: cjm.adobe.io/imp/consent/preferences

Query parameters:
* **params**: contains the encrypted payload
* **sig**: signature <!--which signature?-->
* **pid**: encrypted profile ID

These parameters are available from the unsubscribe link sent to your recipient, i.e. the URL that will open your third-party landing page for a given recipient:

![](assets/opt-out-parameters.png)

<!--QUESTION: How do you get the URL built for each recipient? Do you have to wait until each targeted recipient receives the unsubscribe link or can you deduce it in advance? Is it done automatically upon the API call or do you have to do something manually for each profile? In other words will the LP automatically include the 3 parameters or do you have to insert something manually? Still not completely clear-->

Header requirements:
* x-api-key
* x-gw-ims-org-id
* x-sandbox-name
* authorization (user token from your technical account) <!--How do you find this information? And other header elements?-->

Request body:

```
{
   "marketing": [
       {
            "type": "email",
            "choice": "no",
            "scope": "channel"
        }
    ],

}
```

<!--The Consent service /-->[!DNL Journey Optimizer] will <!--decrypt and-->use these parameters to update the corresponding profile's choice. <!--and provide an answer back to the landing page.-->

## Unsubscribe link in header {#unsubscribe-email}

If the recipients' email client supports displaying an unsubscribe link in the email header, emails sent with [!DNL Journey Optimizer] automatically include this link.

For example, the unsubscribe link will display like this in Gmail:

![](assets/unsubscribe-email.png)

Depending on the email client, clicking the unsubscribe link from the header will have one of the following impacts:

* The corresponding profile is immediately opted out and this choice is updated in Experience Platform. Learn more in the [Experience Platform documentation](https://experienceleague.adobe.com/docs/experience-platform/profile/ui/user-guide.html?lang=en#getting-started).

* It has the same effect as clicking the unsubscribe link from the email content: the recipient is redirected to a landing page including a button to confirm opting out. Learn more on opt-out management in [this section](#opt-out-management).

## Push opt-out management {#push-opt-out-management}

Push recipients can unsubscribe through their devices themselves.

For example, upon downloading or when using your app, they can select to stop notifications. Similarly, they can change the notification settings through the mobile operating system.


text:
## How to convert DOC to PDF from uploaded file for DOC to PDF API in PHP using PDF.co Web API

### Step By Step Tutorial: how to convert DOC to PDF from uploaded file for DOC to PDF API in PHP

The documentation is designed to help you to implement the features on your side. PDF.co Web API was made to help with DOC to PDF API in PHP. PDF.co Web API is the Web API with a set of tools for documents manipulation, data conversion, data extraction, splitting and merging of documents. Includes image recognition, built-in OCR, barcode generation and barcode decoders to decode bar codes from scans, pictures and pdf.

PHP code samples for PHP developers help to speed up the application's code writing when using PDF.co Web API. This PHP sample code should be copied and pasted into your project. After doing this just compile your project and click Run. Enjoy writing a code with ready-to-use sample PHP codes to add DOC to PDF API functions using PDF.co Web API in PHP.

ByteScout free trial version is available for FREE download from our website. Programming tutorials along with source code samples are included.

## Get In Touch

[Click here to get in touch](https://bytescout.zendesk.com/hc/en-us/requests/new?subject=PDF.co%20Web%20API%20Question)

or send email to [support@bytescout.com](mailto:support@bytescout.com?subject=PDF.co%20Web%20API%20Question)

## Free Trial Download

[Get Your 60 Day Free Trial](https://bytescout.com/download/web-installer?utm_source=github-readme)

## Web API (On-demand version)

[Get your free API key](https://pdf.co/documentation/api?utm_source=github-readme)

## API Documentation and References

[Explore PDF.co Web API Documentation](https://bytescout.com/documentation/index.html?utm_source=github-readme)

[Explore Web API Documentation](https://pdf.co/documentation/api?utm_source=github-readme)

[Check Free Training Sessions for PDF.co%20Web%20API](https://academy.bytescout.com/)

## Video Review

[https://www.youtube.com/watch?v=NEwNs2b9YN8](https://www.youtube.com/watch?v=NEwNs2b9YN8)

url: https://raw.githubusercontent.com/repohoarder/ByteScout-SDK-SourceCode/32dd9367cebb66e3aa16bd803798c026d7dfeed5/PDF.co Web API/DOC To PDF API/PHP/Convert DOC To PDF From Uploaded File/README.md

repository: repohoarder/ByteScout-SDK-SourceCode

repo_name: repohoarder/ByteScout-SDK-SourceCode


text:
=================
Django-Googlytics
=================

    Google + Analytics = Googlytics

An application to use the google analytics tracking snippet in a Django project.

There are a couple of other apps like this one, but I wasn't fully satisfied so I've implemented googlytics on top of the ideas expressed in this [StackOverflow Q&A](http://stackoverflow.com/questions/629696/deploying-google-analytics-with-django).

Features:

- Ability to turn off googlytics in development.
- Ability to turn off googlytics for (logged-in) admin users.
- Tests.
- Simplicity.

Install
-------

Add the app to the `INSTALLED_APPS`:

    INSTALLED_APPS = (
        ...
        'googlytics',
        ...
    )

Add its context processor to `TEMPLATE_CONTEXT_PROCESSORS`:

    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        'googlytics.context_processors.googlytics',
        ...
    )

Then in your development settings add:

    GOOGLE_ANALYTICS_KEY = ''

And in your production settings add the real google analytics key:

    GOOGLE_ANALYTICS_KEY = 'UA-XXX-X'

Usage
-----

Use the template tag:

    {{ googlytics_code }}

to inject the goole analytics snippet wherever you want:

Settings
--------

### GOOGLE_ANALYTICS_KEY

A string with the google analytics key:

    GOOGLE_ANALYTICS_KEY = 'UA-XXX-X'

It can also be set to an empty string (`''`) to avoid displaying the tracking snippet.

### GOOGLE_ANALYTICS_IGNORE_ADMIN

Default: `False`

Set it to `True` to prevent google analytics from tracking (logged-in) admins:

    GOOGLE_ANALYTICS_IGNORE_ADMIN = True

repository: rikpg/django-googlytics

repo_name: rikpg/django-googlytics


text:
<!-- .slide: data-background="./Images/header.svg" data-background-repeat="none" data-background-size="40% 40%" data-background-position="center 10%" class="header" -->

# Lesson: Conditionals

<!-- Put a link to the slides so that students can find them -->

**📝  Class Materials:**
  <!-- Put a link to the slides -->
* [**Slides**](https://docs.google.com/presentation/d/17HQIrW_Zl_BUx9EQdH_Na6WBr0eDSDgJPPF1-PjLIhA/edit?usp=sharing)

* **Repls:**
  * Coding Exercise 1: [https://repl.it/@MakeSchool/ComparisonOperators](https://repl.it/@MakeSchool/ComparisonOperators)
  * Coding Exercise 2: [https://repl.it/@MakeSchool/Membership](https://repl.it/@MakeSchool/Membership)
  * Coding Exercise 3: [https://repl.it/@MakeSchool/WritingConditionals](https://repl.it/@MakeSchool/WritingConditionals)
  * Coding Exercise 4: [https://repl.it/@MakeSchool/functionswithconditionals](https://repl.it/@MakeSchool/functionswithconditionals)
<!-- > -->

repository: KitsuneNoctus/makeschool

repo_name: KitsuneNoctus/makeschool


text:
# Bash Automated Testing System - Docker Image

## How to reference the libraries in you test scripts

When creating a test script file, you must load the references as the following example:

```sh
#!/usr/bin/env bats
load '/bats-support/load.bash'
load '/bats-assert/load.bash'

@test "Check BATS version" {
    run bats --help
    assert_line --partial 'Bats 1.1.0'
}
```

## How to run the tests

Once all your test files and test scripts were created, you can execute them using `docker run` command.

It's important to mount the current local folder inside the container. In the following example, the current local folder will be mounted as `/test` in the target.

In order to execute all the tests scripts `*.bats`, you should reference the path of the scripts in the container (`/tests/`).

Example:

```sh
$ docker run -v "$(pwd):/tests" -it testingtoollab/bats:1.0.1 /tests/
```

## Current library versions

| Library | Version |
|---|---|
| bats-core | 1.1.0 |
| bats-support | 0.3.0 |
| bats-assert | 0.3.0 |
| bats-file | 0.2.0 |

## References

The following references are forks from the original repositories.

1. [bats-core](https://github.com/testingtoollab/bats-core)
2. [bats-support](https://github.com/testingtoollab/bats-support)
3. [bats-assert](https://github.com/testingtoollab/bats-assert)
4. [bats-file](https://github.com/testingtoollab/bats-file)

repository: testingtoollab/bats

repo_name: testingtoollab/bats


text:
# unconstrainedml
Reproduce experiments in "The Implicit Fairness Criterion of Unconstrained Learning" (ICML 2019)

## Instructions

1. Clone this repository.
2. Download `adult.data.txt` and `adult.test.txt` from the [UCI Adult Dataset](https://archive.ics.uci.edu/ml/datasets/adult) to the root folder.
3. Download `BROWARD_CLEAN.csv` from the [Broward County Dataset](https://www.cs.dartmouth.edu/farid/downloads/publications/scienceadvances17/) to the root folder.
4. Run all cells in `adult.ipynb` and `broward.ipynb` with Python 2.7.15.

## Citation
Lydia T. Liu, Max Simchowitz, Moritz Hardt. The implicit fairness criterion of unconstrained learning. Proceedings of the 36th International Conference on Machine Learning (ICML), Long Beach, CA, USA, 2019.

## References for datasets

- Dheeru Dua and Efi Karra Taniskidou. UCI machine learning
repository, 2017. URL http://archive.ics.uci.edu/ml
- J. Dressel, H. Farid, The accuracy, fairness, and limits of predicting recidivism. Sci. Adv.
4, eaao5580 (2018)

## License
This repository is licensed under the BSD 3-Clause "New" or "Revised" License.

repository: stjordanis/unconstrainedml

repo_name: stjordanis/unconstrainedml


text:
# Fabric Example Mod - Kotlin
![Gradle build](https://github.com/natanfudge/fabric-example-mod-kotlin/workflows/Gradle%20build/badge.svg)
## Setup

0. Create a new mod repository by pressing the "Use this template" button and clone the created repository.

1. Import build.gradle file with IntelliJ IDEA

2. Edit build.gradle and mod.json to suit your needs.
    * The "mixins" object can be removed from mod.json if you do not need to use mixins.
    * Please replace all occurences of "modid" with your own mod ID - sometimes, a different string may also suffice.
3. Run!

## License

This template is available under the CC0 license. Feel free to learn from it and incorporate it in your own projects.

repository: natanfudge/fabric-example-mod-kotlin

gha_language: Java

repo_name: natanfudge/fabric-example-mod-kotlin


text:
---
path: '/tips/post-279'
date: '2021-04-07'
title: 'How to easily use the webcam with some JS'
languages: ['HTML', 'CSS', 'Javascript']
img: 'https://res.cloudinary.com/duejrcpct/image/upload/q_auto/f_auto/w_1000/v1617796633/tips/279-1_g6imxx.png'
description: 'Streamiing video from a webcam usng Javascript'
number: 279
status: true
---

![alt text](https://res.cloudinary.com/duejrcpct/image/upload/q_auto/v1617796756/tips/279-2_p1owta.gif 'Webcam tester')

How to use the webcam with Javascript 📷

For today's snippet we'll check how easy it is to stream video from a webcam to a webpage just by using some simple JavaScript.

In order to do this, we'll first create our HTML where we'll have two buttons (one to start the stream, and another to stop it) and a video element where we'll display the stream. This video element should have an ID for us to use in JS and 'autoplay' set to true.

```html
<h1>Webcam Tester</h1>

<div class="buttons">
  <button onclick="startWebcam()">Turn on webcam</button>
  <button onclick="stopWebcam()">Turn off webcam</button>
</div>

<video id="webcam-vid" autoplay="true" />
```

Using 'navigator.mediaDevices.getUserMedia' we'll have access to the stream and we just need to apply it to the video element srcObject.

```javascript
const videoEl = document.getElementById('webcam-vid')

const startWebcam = () => {
  if (navigator.mediaDevices.getUserMedia) {
    navigator.mediaDevices
      .getUserMedia({ video: true })
      .then(stream => {
        videoEl.srcObject = stream
      })
      .catch(err => {
        console.log('Something went wrong', err)
      })
  }
}

const stopWebcam = () => {
  var stream = videoEl.srcObject
  var tracks = stream.getTracks()

  for (var i = 0; i < tracks.length; i++) {
    var track = tracks[i]
    track.stop()
  }
  videoEl.srcObject = null
}
```

To stop the stream, we need to first get it from the video srcObject, get the 'tracks' on this stream and use the 'stop' method on them.

```css
h1 {
  color: #424242;
}

.buttons {
  display: flex;
  justify-content: center;
  margin-top: 2rem;
}

button {
  background-color: #45fce4;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 700;
  border: none;
  border-radius: 8px;
  padding: 1rem;
  margin: 0 1.5rem;
  cursor: pointer;
}

video {
  width: 525px;
  height: 400px;
  margin-top: 3rem;
}
```

And we're done! On a later tip we'll check how we can use this to take screenshots of the webcam stream and show them on the webpage. See you soon! 🤓✌


text:
---
title: Prerequisite Resources
weight: 12
pre: "<b>1.2. </b>"
---

> 🎯 Get your AWS account ready!

* [x] AWS Account

    You have received AWS credentials; make sure you have sufficient privileges in your AWS account.

* [x] [AWS CloudFormation: provision your AWS Cloud resources](https://devops.job4u.io/Modern-Apps/VPC-Cloud9-IDE/index.html)

> 🎯 Install AWS CDK

```bash
npm install -g aws-cdk
cdk --version
```


text:
# Deploying Functions

After you have created your function class and all the handler code, you'll need to deploy it to AWS Lambda.

The simplest way to deploy and activate all of your configured functions is to run the following command

```shell
php artisan sidecar:deploy --activate
```

When you run that, you'll see an output log similar to the one below:

```text
[Sidecar] Deploying App\Sidecar\OgImage to Lambda as `SC-Laravel-local-Sidecar-OgImage`.
          ↳ Environment: local
          ↳ Runtime: nodejs12.x
          ↳ Packaging function code.
          ↳ Creating a new zip file.
          ↳ Zip file created at s3://sidecar-us-east-2-XXX/sidecar/001-79a5915eaec296be04a0f4fb7cc80e40.zip
[Sidecar] Activating function App\Sidecar\OgImage.
          ↳ Activating Version 1 of SC-Laravel-local-Sidecar-OgImage.
```

The deployment process consists of
- zipping the handler code
- uploading the zip file to S3
- creating the Lambda function if it doesn't exist
- updating the function if it already exists
- (optionally) activating the newest version of the function

## Deploying vs. Activating

There are two required steps in order to make your functions live and usable.
- The first is to **deploy** the handler code and create the Lambda function.
- The second step is to **activate** that new version of your Lambda function.

Because your handler code may require you to `npm install`, `bundle install`, or something similar, you may be building and deploying your handler code in CI or from your local computer.

Once that handler code is all bundled and deployed to Lambda, there may be a secondary step required to deploy your main application.

During this secondary step, your Lambda functions are going to be updated but your application code will not be, which could lead to errors for your users.

That's why we have separated the two steps into Deploy and Activate.

To deploy but not activate your code, you would run the deploy command without the `--activate` flag.

```shell
php artisan sidecar:deploy
```

Then, when it is time to flip the switch over to your new application code, you can call `sidecar:activate` to activate the newest version of all your Sidecar functions on Lambda.

```shell
php artisan sidecar:activate
```

## A Vapor Example

Laravel Vapor provides you with [two hooks](https://docs.vapor.build/1.0/projects/deployments.html#build-hooks) during its deploy process. The first is the `build` hook, where you can install all of your dependencies, run any scripts, etc, _on the machine that is running the deployment._

The second step is the `deploy` hook, that is _run in the Vapor environment_.

You might set your `vapor.yml` up to use those hooks to deploy and activate your functions:

```yaml
id: XXX
name: hammerstonedev
environments:
  production:
    domain: hammerstone.dev
    memory: 512
    cli-memory: 512
    build: # [tl! ~~]
      - 'php artisan sidecar:deploy --env=production' # [tl! ~~]
    deploy: # [tl! ~~]
      - 'php artisan sidecar:activate' # [tl! ~~]
```

Your functions would be built and deployed on whatever machine is handling the Vapor deploy process, and then would be activated as Vapor activates your newest application code.

> Note that in this example we're setting the environment to "production" in the build, because it's likely that your "build" step is running in an environment that doesn't have it's ENV set to "production." See below for more details.

## Faking the Environment

Sidecar names your function based on environment, to prevent collisions between local, staging, production, etc. This could pose a problem if you are deploying your production functions from your build or CI server.

If you need to deploy an environment other than the one you are in, you can override the environment from the config by passing an `--env` flag to the Deploy and Activate commands.

```shell
php artisan sidecar:deploy --env=production
php artisan sidecar:activate --env=production
```

To read more about environments, head to the [Environments section](../environments) of the docs.

## Setting Environment Variables

This is covered in the [Environment Variables](customization#environment-variables) section of the Customization docs, but we'll cover strategies around env vars and deployment here.

Some of your functions will require environment variables, either from your Laravel application or something completely distinct. In some cases, you may need to set a static variable so that some library will work [(LibreOffice example)](https://github.com/hammerstonedev/sidecar/issues/24):

```php
// torchlight! {"summaryCollapsedIndicator": "{ ... }" }
class ExampleFunction extends LambdaFunction
{
    public function handler() // [tl! collapse:start]
    {
        //
    }

    public function package()
    {
        //
    } // [tl! collapse:end]

    public function variables()
    {
        return [
            'FONTCONFIG_PATH' => '/opt/etc/fonts',
        ];
    }
}
```

Setting static variables like that is quite straightforward.

If, however, you want to share some secrets or environment variables _from your Laravel_ application, it will be important that you are sharing them from the correct environment.

Imagine the scenario where you want to share your AWS keys with your Lambda function:

```php
// torchlight! {"summaryCollapsedIndicator": "{ ... }" }
class ExampleFunction extends LambdaFunction
{
    public function handler() // [tl! collapse:start]
    {
        //
    }

    public function package()
    {
        //
    } // [tl! collapse:end]

    public function variables()
    {
        return [
            'aws_key' => config('services.aws.key'),
            'aws_secret' => config('services.aws.secret'),
        ];
    }
}
```

You pull your key and secret using the Laravel `config` function, which in turn likely delegates to the `env()` function.

Sidecar sets the environment variables _upon activation_. If you are deploying from CI and then activating from e.g. Vapor, you'll want to make sure you have those variables in the Vapor environment.

Environment variables are set before activation, and before any pre-warming takes place.

And remember! If Sidecar manages the environment variables for a function, it will clobber any changes you make in the AWS UI, so you cannot use both methods simultaneously.

## Reusing Package Files

If you're deploying your Sidecar functions every time you deploy your app, you will likely be deploying functions that have not changed at all.

In the case where no code has changed, Sidecar will not upload a new zip file to your bucket, but will reuse the old one.

In the event that neither the code nor function configuration have changed, Sidecar won't touch the Lambda function at all!

You will see output similar to the following:

```text
[Sidecar] Deploying App\Sidecar\OgImage to Lambda. (Runtime nodejs12.x.)
          ↳ Function already exists, potentially updating code and configuration.
          ↳ Packaging function code.
          ↳ Package unchanged, reusing previous code package at s3://sidecar-us-east-2-XXX/sidecar/001-79a5915eaec296be04a0f4fb7cc80e40.zip.
          ↳ Function code and configuration are unchanged! Not updating anything. [tl! focus]
[Sidecar] Activating function App\Sidecar\OgImage.
          ↳ Activating Version 1 of SC-Laravel-local-Sidecar-OgImage.
```

repository: hammerstonedev/sidecar

gha_language: PHP

repo_name: hammerstonedev/sidecar


text:
# packer-development
=========

A brief description of the role goes here.

# Requirements
------------

Any pre-requisites that may not be covered by Ansible itself or the role should
be mentioned here. For instance, if the role uses the EC2 module, it may be a
good idea to mention in this section that the boto package is required.

python3+
pipenv

# Role Variables
--------------

A description of the settable variables for this role should go here, including
any variables that are in defaults/main.yml, vars/main.yml, and any variables
that can/should be set via parameters to the role. Any variables that are read
from other roles and/or the global scope (ie. hostvars, group vars, etc.) should
be mentioned here as well.

## Packer Variables
"aws_region": "us-east-1",
"environment": null,
"build_version": null,
"share_with_aws_accounts": "",
"packer_instance_type": "t3.micro",
"security_group_name": "external_protected",
"ansible_extra_args": "",
"build_tag": "acarberry/development"

# Dependencies
------------

A list of other roles hosted on Galaxy should go here, plus any details in
regards to parameters that may need to be set for other roles, or variables that
are used from other roles.

https://github.com/ajcarberry/ansible-role-development.git

### Ansible Variables
Pyenv Version to install
pyenv_version: "v1.2.20"

Python versions to install
pyenv_python_versions:
  - "3.8.5"
  - "3.7.8"
  - "3.6.11"
  - "2.7.18"

Set global pyenv version
pyenv_global: "3.8.5 system"

Code-Server DNS name
host_name: development.local

Service Code-Server Owner
owner_user: root
owner_group: root
service_owner: root

# Example Usage
----------------

pipenv update
pipenv shell
packer build -only='amazon-ebs' -var 'environment=prod' -var 'build_version=0.0.1' development.json

# License
-------

MIT

# Author Information
------------------

Alex Carberry

repository: ajcarberry/system-development

repo_name: ajcarberry/system-development