text:
---
meta_title: Learn How to Reduce Churn |  Limeproxies
yoast_keyword: Reduce Churn
description: >-
  One of the top goals of business owners is to increase their profit margin. If
  that’s not one of their goals, then they should not be operating a business.
path: /how-to-reduce-churn/
title: How to Reduce Churn?
author: Expert
date: 2018-05-10T08:01:53.000Z
excerpt: >-
  One of the top goals of business owners is to increase their profit margin. If
  that’s not one of their goals, then they should not be operating a business,
  but a non-profit organization.  There are a lot of strategies that businesses
  can employ in order to achieve their goal of increasing their company’s profit
  margin.
thumbnail: /assets/Focus-on-your-company’s-products.png
altText: Reduce Churn
tags:
  - churn
  - customer
  - reduce churn
---
One of the top goals of business owners is to increase their profit margin. If that’s not one of their goals, then they should not be operating a business, but a non-profit organization.  There are a lot of strategies that businesses can employ in order to achieve their goal of increasing their company’s profit margin.

For one, companies can increase their products’ prices. This definitely works for companies who have not increased their prices since the time they started. By going over your pricing model, you may see that there is a need to increase your prices. In effect, this will increase your profit.

Another effective way to increase profit margin is to upsell.   Companies should always think about how to increase the value of their client’s purchases, and should find ways on how to get customers to spend more within a single transaction.

Companies also need to reexamine their workflows and eliminate activities and steps that are costly and don’t add value. Look at your onboarding process and see if every step is really necessary for your customers. You can also revisit your reorder process, and find ways on how to make it simpler and more cost-effective. Every money you save from cutting steps that don’t add value will go to your profit margin.

These are the three mostly used strategies in order for business to increase their profit margin. There is another strategy that is not that popular for businesses, but this can effectively help them achieve their goal of increasing profit margin. This is by reducing churn.

Churn in the business world is when an existing customer stops doing business with a company. When a customer closes his account, terminates his membership, cancels his subscription, or simply buy from another supplier, this translates to customer churn. To put it simply, churn is when you are losing your customers.

Why do this happen?

There are countless reasons why customers stop doing business with a company – they found a better deal with someone else, they are not satisfied with your products and services, or they simply want to try out something new. But it all boils down to one thing: your company has competitors, and you might lose your existing customers to them.

So how do you keep your customers happy? The ideal churn rate is 0%, and it is ideal in every sense of the word. 0% churn rate is not possible even for large corporations such as Microsoft, Apple, General Motors, and Toyota, to name a few.

Customer turnover is always present, no matter how big or small a company is, and no matter what industry you are in. The goal should be to at least reduce the churn rate, and keep it as close to 0% as possible.

In this article, we have compiled five ways to effectively reduce churn in your companies. Read on for more details.

## **Focus on your company’s products**

Customers do business with your company because there is a perceived need for your products or services. Even before the point of purchase, customers have certain expectations regarding your products, and when these expectations are not met, then customer churn happens.

Thus, an effective way to reduce churn is by focusing on your products.

## **Get to know your product – its features and limitations**

Make sure that the right expectations are set during the first transaction with the customer. Communicate truthfully to your customers not only about the features of your product, but also its limitations. This way, customer expectations are managed well and when customers get to experience your product, expectations will somehow match reality.

This will entail educating your staff properly about what your product is all about. A staff that do not know major details about a company’s product is a major turnoff, and this will ultimately cause customers to leave your company. Again, make sure that your staff knows everything about the product, including its limitations and restrictions.

## **Constantly improve your product**

In this world where everyone is coming up with something new every minute, it is important to keep your product up to date. When you fail to do this, another company will come up with a similar product that has a lot more to offer, and sooner or later, your customers will start buying the other product.

We could cite several examples of companies who refused to adapt to changes and has suffered the consequence. One such example is Kodak, the leading company in the camera industry in the 1900’s. It looked Kodak had everything in place – color film, Instamatic camera, handheld movie camera, etc.

And then the era of digital photography started. File sharing applications, software, and third party applications soon followed. Kodak, on the other hand, refused to move. It continued with its filmed camera business. By the 1980s, it was too late for the company.  Although it has tried to venture into other industries such as healthcare imaging, pharmaceuticals, and document managing, Kodak has never been the same.

Another story of a company who failed to innovate and ended up losing customers is Motorola. Motorola was the first company to ever manufacture and sell the world’s first ever mobile phone. In 2003, the company was at the top of the industry with its Razr.

However, Motorola did not venture into smartphones, and before they knew it, they are losing their customers to new mobile phone companies such as Apple, LG, and Samsung. While competitors saw the demand for phones that can handle email, internet, and other data, Motorola failed to adapt.

Now, the cellphone division of Motorola is not earning income and has been turned into a separate company so that Motorola can focus on its core products.

## **Invest in your staff**

Your employees are the first touch of all potential customers.  Customers still talk to your staff even after a sales transaction. Thus, every company must see the importance of their employees. However, this is not usually the case.

Sadly, one of the first steps companies take when their business is not profitable is to retrench staff members. Others opt to spend less on their staff – not giving them bonuses, cutting some allowances and incentives, and the likes.

When this happens, employee morale become low, and employee’s see the company in a bitter light. Ultimately, this negative feeling towards the company will translate to how your employees treat your customers.

Your staff member’s behavior, tone, and their overall attitude towards the customer will reflect your company. When employee morale is low, customers can feel this in the way they are treated, and this is one of the major reasons why customers leave a company.

Therefore, it is wise to invest in your staff in terms of money and time.

## **Invest money on your staff**

Allow your staff to join company-paid trainings that will help develop their skills. Offer rewards in the form of incentives and bonuses when they exceed their goals.  You also have to invest time on them. Schedule regular one on one meetings, to discuss anything that is work related. Take time to listen to them and let them know that you care,

Apart from this, group sessions can also help you get the feel of your staff member’s relationships with one another.

## **Show your customers that you care**

It’s not always about all the big things, but the little things also matter. How long does it take for your company to respond to customer’s query? How often do you email your customers?

More and more companies are finding out that it’s the little things that keep customers coming back. Simple things such as follow up letters or emails, allowing them to reply to emails, and responding to their queries in a timely manner, will truly help improve customer experience with your company.

Here are a few tips on how to show customers that you really care about them.

## **Respond quickly**

When an issue arises, prompting customers to contact you, make sure that you get back to the customer in a timely manner. No matter how small or big the problem is, the fact that the customer took time to write the email or leave you a message, should not be overlooked.

Quickly responding to customer concerns show that you care about them, and that you are working to solve the issue with them on your mind.

## **Talk to your customers**

Most companies only get to talk to their customers when (1) a problem arises and the customer contacted the company first, and (2) the company wants to sell something more or something else to the customer.

However, it will be a breath of fresh air to customers if companies contact them regularly about things that are not related to the two items above. Send them email to ask how they are doing, and ask if there’s anything you can do to help. The following items will definitely let your customers know that you are there for them, always:

### **Feedback Bar**

Feedback Bars are a great avenue for customers to leave comments, questions, and reviews. Customers mostly have questions or comments in mind, but does not have the energy or the will to contact your company.

But if your product has a feedback bar, they can easily drop off what’s on their mind.

### **Surveys**

If done right, you can get a lot of information from surveys. A lot of companies were able to innovate and see the unmet needs of their customers because of surveys. However, avoid making surveys that are too long. Thirty questions can significantly gather a lot of information about your customers, but it will not attract them at all.

Keep your surveys five to ten numbers long. More than that, and customers will not take the time to truthfully answer the survey.

New Feature Announcements

Social Media

## **Offer incentives**

Special discounts and promo will most likely help customers decide to stay with your company. Incentives such as these will make them feel special, thereby preventing customers to churn.

You also need to balance this out though. Giving incentives to a customer who is not that great of a spender is not a good idea. So only give out discounts to customers who you know are spending money on your products or services.

### **Be honest**

Everyone makes mistakes. Even huge corporations are bound to commit mistakes. So when this happens to your company, the only thing to do is to be honest. Admit your company’s mistake, apologize, and offer a solution to the customer.

Honesty is the best policy, even in the business world. Customers feel more secure to conduct business with a company who own up to its mistake, rather than play the blame game.

## **The Bottom Line**

Customers these days have so many options to choose from. If one company is not making them happy, they can easily turn to the next company on the block. Thus, companies should strive to be the choice of customers.

Without customers, companies will be at the losing end. They will never reach the goal of increasing their profit margin, no matter how great their products and services are. Apart from attracting new customers, companies need to retain existing one and reduce churn.

There are so many ways by which a company can reduce customer churn rate. However, the most effective one is by improving customer service, investing on your staff members, and focusing on your products and services.

With these three things in mind, you can definitely reduce customer churn, and even make your customers loyal to your company.

  <button style="background-color: #9acd32; border-radius: 5%; border: solid 2px #9ACD32;">GET STARTED TODAY FOR FREE</button>

repository: a-ditucalan/limeproxies

repo_name: a-ditucalan/limeproxies


text:
# libcubescript

![CubeScript REPL](https://ftp.octaforge.org/q66/random/libcs_repl.gif)

## Overview

Libcubescript is an embeddable implementation of the CubeScript scripting
language. CubeScript is the console/config language of the Cube engines/games
(and derived engines/games). It's a simplistic language defined around the
idea of everything being a string, with Lisp-like syntax (allowing various
control structures to be defined as commands).

## Benefits and use cases

CubeScript is suitable for any use that calls for a simple scripting language
that is easy to embed. It's particularly strong at macro processing, so it can
be used as a preprocessor, or for any string-heavy use. Since it has descended
from a console language for a video game, it can still be used for that very
purpose, as well as a configuration file language.

Its thread-friendliness allows for usage in any context that requires parallel
processing and involvement of the scripting system in it.

As far as benefits over the original implementation go, while it is based on
the original implementation, it's largely rewritten; thus, it's gained many
advantages, including:

* Independent implementation (can be embedded in any project)
* No global state (multiple CubeScripts in a single program)
* Modern C++17 API (no macros, use of strongly typed enums, lambdas, ranges etc.)
* C++17 lambdas can be used as commands (including captures and type inference)
* Error handling including recovery (protected call system similar to Lua)
* Stricter parsing (strings cannot be left unfinished etc.)
* Loop control statements (`break` and `continue`)
* No manual memory mangement, values manage themselves
* Clean codebase that is easy to read and contribute to
* Support for arbitrary size integers and floats (can be set at compile time)
* Allows building into a static or shared library, supports `-fvisibility=hidden`

There are some features that are a work in progress and will come later:

* More helpful debug information (proper line infos at both parse and run time)
* A degree of thread safety (see below)
* Custom allocator support (control over how heap memory is allocated)
* Coroutines

The API is currently very unstable, as is the actual codebase. Therefore you
should not use the project in production environments just yet, but you're
also free to experiment - feedback is welcome.

**The project is also open for contributions.** You can use pull requests on
GitHub and there is also a discussion channel `#octaforge` on FreeNode; this
project is a part of the larger OctaForge umbrella.

## Threads and coroutines

*(In progress)*

Libcubescript supports integration with coroutines and threads by providing a
concept of threads itself. You can create a thread (child state) using the
main state and it will share global data with the main state, but it also
has its own call stack.

The "global" state is thread safe, allowing concurrent access from multiple
threads. The "local" state can be yielded as a part of the coroutine without
affecting any other threads.

This functionality is not exposed into the language itself, but it can be
utilized in the outside native code.

## Building and usage

The only dependency is libostd:

https://git.octaforge.org/OctaForge/libostd

https://github.com/OctaForge/libostd

If libostd can work on your system, so can libcubescript.

Libostd is built using Meson. Therefore, you need to install Meson and then
you can compile it as usual. Typically, this will be something like

~~~
mkdir build && cd build
meson ..
meson compile
~~~

Link the libcubescript library together with your application and everything should just work.
It also builds the REPL.

The project also bundles the linenoise line editing library which has been modified
to compile cleanly as C++ (with the same flags as libcubescript). It's used strictly
for the REPL only (you don't need it to build libcubescript itself). The version
in the repository tracks Git revision https://github.com/antirez/linenoise/commit/c894b9e59f02203dbe4e2be657572cf88c4230c3.

## Licensing

See COPYING.md for licensing information.

repository: Croydon/libcubescript

branch_name: refs/heads/master

extension: md

gha_license_id: NOASSERTION

license_type: permissive

repo_name: Croydon/libcubescript


text:
# Consensus Module

### `getSendDifficulty`

`getSendDifficulty` replies with a Send Difficulty. It takes in zero arguments and the result is an int of the current difficulty.

### `getDataDifficulty`

`getDataDifficulty` replies with a Data Difficulty. It takes in zero arguments and the result is an int of the current difficulty.

### `getStatus`

`getStatus` replies with the Status for the specified Transaction. It takes in one argument:
- hash (string)

The result is an object, as follows:
- `verifiers`  (array of strings): The list of verifiers for this Transaction.
- `merit`      (int):              Merit of all the Merit Holders who verified this Transaction.
- `threshold`  (int):              Merit needed to become verified.
- `verified`   (bool):             Whether or not the Transaction is verified.
- `competing`  (bool):             Whether or not the Transaction has competitors. If it does, and isn't already verified, it can only be verified at the end of its Epoch.
- `beaten`     (bool):             Whether or not the Transaction was finalized, with a different, competing, Transaction having more Merit.


text:
# open.commonform.org

simple JSON-over-HTTP-POST wrapper around a few [Common Form](https://github.com/commonform) utilities

See [the `requests` directory](./requests) for JSON Schemas of various valid request payloads.

The action is in [`./index.js`](./index.js), the HTTP request handler.

gha_language: JavaScript


text:
# React Duck Typing
## A sample of duck typing using React
Check the Medium post related to this example [here](https://medium.com/front-end-hacking/react-and-duck-typing-1e22f73563e7)

Check the live version [here](https://rubenspgcavalcante.github.io/react-duck-typing/)

### Objective
Demonstrate how duck typing design works for visual components

### Important!
This is a bare minimun setup just to show how it works. Isn't intended to be a complete web app.

# Pictures

["Duck" - by Tjflex2](https://flic.kr/p/8F8fpS)
["Ducks" - by Susanne Nilsson](https://flic.kr/p/hXn2Q9)
["Ducks." - by Chris Fleming](https://flic.kr/p/nydf9D)

# Sound track

["My love (piano loop)" - by Shady Dave](https://freesound.org/people/ShadyDave/sounds/325611/)

# Video
["Big Buck Bunny"](https://www.bigbuckbunny.org/)

### License
This project is under the MIT license

license: MIT

repository: rubenspgcavalcante/react-duck-typing

repo_name: rubenspgcavalcante/react-duck-typing


text:
Blackjack
=========

[![Build Status](https://travis-ci.org/hughgrigg/blackjack.svg?branch=master)](https://travis-ci.org/hughgrigg/blackjack)
[![Go Report Card](https://goreportcard.com/badge/github.com/hughgrigg/blackjack)](https://goreportcard.com/report/github.com/hughgrigg/blackjack)
[![Coverage Status](https://coveralls.io/repos/github/hughgrigg/blackjack/badge.svg?branch=master)](https://coveralls.io/github/hughgrigg/blackjack?branch=master)

This is an implementation of the
[blackjack](https://en.wikipedia.org/wiki/Blackjack) casino game in Go. This
game is also known as twenty-one.

The game uses a single
[52-card deck](https://en.wikipedia.org/wiki/Standard_52-card_deck).

![

repository: christophchamp/blackjack

gha_license_id: MIT

repo_name: christophchamp/blackjack


text:
# (cons form seq) combines an element with a sequence
With an ordered sequence, such as a list or vector, the result is a new list or vector with the form prepended to the original. With an unordered sequence, such as an associative array, there is no guarantee regarding position.

The name /cons/ is a vestige of when Lisp implementations *cons*tructed new lists or cells by pairing a /car/ (*c*ontents of the *a*ddress part of *r*egister) with a /cdr/ (*c*ontents of the *d*ecrement part of *r*egister).

## An Example

  (def x '(3 4 5 6))
  (def y (cons 2 x))
  (cons 1 y)

This example will return _(1 2 3 4 5 6)_.

repository: etsangsplk/sputter

repo_name: etsangsplk/sputter


text:
---
uid: identityHybridClient
---

# Hybrid Client

Hybrid clients are used in typical, thick MVC clients with the presence of a User.
            These clients are issued an Id and secret upon creation, which are later used for authentication
            against OSIsoft Cloud Services. More than one secret can be created for a client. You can read more about these clients
            [here](https://github.com/osisoft/OSI-Samples-OCS/blob/master/docs/AUTHENTICATION_README.md#hybrid-flow).
            Hybrid clients can be issued refresh tokens, if requested, alongside access tokens. Refresh tokens typically
            have an longer lifetime than access tokens, and are used to request a new access token on behalf of the user
            without them having to sign-in.
            It is highly suggested that both the Client Secret and the refresh token be stored
            in a secure location.
            For some recommendations on least privilege for users and clients, refer to the [Least Privilege](xref:LeastPrivilege) topic.

Hybrid clients can be issued refresh tokens, if requested, alongside access tokens. Refresh tokens typically have an longer lifetime than access tokens, and are used to request a new access token on behalf of the user without them having to sign-in. It is highly suggested that both the client secret and the refresh token be stored in a secure location.

## Properties

For HTTP requests and responses, the HybridClient object has the following properties and JSON-serialized body:

Property Name | Data Type | Description
 --- | --- | ---
AllowOfflineAccess | bool | Whether this client can request refresh tokens, by providing the *offline_access* scope.
AllowAccessTokensViaBrowser | bool | Whether this HybridClient is allowed to receive access tokens via the browser. This is useful to harden flows that allow multiple response types (for example, by disallowing a hybrid flow client that is supposed to use code *id_token* to add the *token* response type, thus leaking the token to the browser).
RedirectUris | string[] | The allowed URIs to which return tokens or authorization codes can be returned. Wildcards are ignored. URIs must match exactly what you are redirecting to after login. If URIs do not match, the authentication process will fail with a bad_client error. Maximum 10 per client.
PostLogoutRedirectUris | string[] | Allowed URIs to redirect to after logout. Wildcards are ignored. URIs must match exactly what you are redirecting to after logout. Maximum 10 for client.
ClientUri | string | URI to a page with information about client (used on consent screen).
LogoUri | string | URI to client logo (used on consent screen).
Id | string | Secret Id.
Name | string | Name of client.
Enabled | bool | Whether client is enabled. Client can be used for authentication if set to true. Client cannot be used for authentication if set to false.
AccessTokenLifetime | int32 | Lifetime of access token issued for this client after authentication. Minimum 60 seconds. Maximum 3600 seconds. Defaults to 3600 seconds.
Tags | string[] | For OSIsoft internal use only.

### Serialized model

```json
{
  "AllowOfflineAccess": false,
  "AllowAccessTokensViaBrowser": false,
  "RedirectUris": [
    "String",
    "String"
  ],
  "PostLogoutRedirectUris": [
    "String",
    "String"
  ],
  "ClientUri": "ClientUri",
  "LogoUri": "LogoUri",
  "Id": "Id",
  "Name": "Name",
  "Enabled": false,
  "AccessTokenLifetime": 0,
  "Tags": [
    "String",
    "String"
  ]
}
```

***

## Authentication

All endpoints referenced in this documentation require authenticated access. Authorization header must be set to the access token you retrieve after a successful authentication request.

`Authorization: Bearer <token>`

Requests made without an access token or an invalid/expired token will fail with a 401 Unauthorized response.
Requests made with an access token which does not have the correct permissions (see security subsection on every endpoint) will fail with a 403 Forbidden.
Read [here](https://github.com/osisoft/OSI-Samples-OCS/blob/master/docs/AUTHENTICATION_README.md) on how to authenticate against OCS with the various clients and receive an access token in response.

## Error handling

All responses will have an error message in the body. The exceptions are 200 responses and the 401 Unauthorized response. The error message will look as follows:

```json
{
    "OperationId": "1b2af18e-8b27-4f86-93e0-6caa3e59b90c",
    "Error": "Error message.",
    "Reason": "Reason that caused error.",
    "Resolution": "Possible solution for the error."
}
```

If and when contacting OSIsoft support about this error, please provide the OperationId.

## `Create Hybrid Client`

Create a Hybrid Client. A Client Id and Client Secret will be generated to perform
            authentication. Make sure to store the secret somewhere safe as we do not store the
            actual value after the creation step. If you do not have access to the secret value, we suggest
            deleting the secret and adding a new one for this client. Clients have unique ids in a tenant.
            Currently there is a limit of 50000 clients (of all types) per tenant.

### Request

`POST api/v1/Tenants/{tenantId}/HybridClients`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[FromBody]
[Required]
HybridClientCreate hybridClientCreate
```

HybridClientCreate object.

Property Name | Data Type | Required | Description
 --- | --- | --- | ---
SecretDescription | string | No | Description for the initial secret for the client.
SecretExpirationDate | DateTime | No | Expiration date for the initial secret for the client. If set to null the secret will            never expire. We advise against such practice.
AllowOfflineAccess | bool | No | Whether this client can request refresh tokens, by providing the *offline_access* scope.
AllowAccessTokensViaBrowser | bool | No | Whether this HybridClient is allowed to receive access tokens via the browser.            This is useful to harden flows that allow multiple response types (for example, by disallowing a hybrid flow            client that is supposed to use code *id_token* to add the *token* response type, thus            leaking the token to the browser).
RedirectUris | string[] | No | The allowed URIs to which return tokens or authorization codes can be returned.            Wildcards are ignored. URIs must match exactly what you are redirecting to            after login. If URIs do not match, the authentication process will fail            with a bad_client error.            Maximum 10 per client.
PostLogoutRedirectUris | string[] | No | Allowed URIs to redirect to after logout. Wildcards are ignored.            URIs must match exactly what you are redirecting to after logout.            Maximum 10 for client.
ClientUri | string | No | URI to a page with information about client (used on consent screen).
LogoUri | string | No | URI to client logo (used on consent screen).
Id | string | No | Client ID for this client. This ID should be a GUID.
Name | string | Yes | Name of Client.
Enabled | bool | No | Whether client is enabled. Client can be used for authentication            if set to true. Client cannot be used for authentication if set to false.
AccessTokenLifetime | int32 | No | Lifetime of access token issued for this client after authentication.            Minimum 60 seconds. Maximum 3600 seconds. Defaults to 3600 seconds.
Tags | string[] | No | For OSIsoft internal use only.

```json
{
  "SecretDescription": "description",
  "SecretExpirationDate": "2020-03-30T15:34:23.0602036-07:00",
  "AllowOfflineAccess": false,
  "AllowAccessTokensViaBrowser": false,
  "RedirectUris": [
    "String",
    "String"
  ],
  "PostLogoutRedirectUris": [
    "String",
    "String"
  ],
  "ClientUri": "ClientUri",
  "LogoUri": "LogoUri",
  "Id": "Id",
  "Name": "Name",
  "Enabled": false,
  "AccessTokenLifetime": 0,
  "Tags": [
    "String",
    "String"
  ]
}
```

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 201

Created.

##### Type:

 `HybridClientCreateResponse`

```json
{
  "Secret": "Secret",
  "Id": 0,
  "Description": "description",
  "ExpirationDate": "2020-03-30T15:34:23.0724603-07:00",
  "Client": {
    "AllowOfflineAccess": false,
    "AllowAccessTokensViaBrowser": false,
    "RedirectUris": [
      "String",
      "String"
    ],
    "PostLogoutRedirectUris": [
      "String",
      "String"
    ],
    "ClientUri": "ClientUri",
    "LogoUri": "LogoUri",
    "Id": "Id",
    "Name": "Name",
    "Enabled": false,
    "AccessTokenLifetime": 0,
    "Tags": [
      "String",
      "String"
    ]
  }
}
```

#### 400

Missing or invalid inputs, or Client limit exceeded.

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Tenant not found.

#### 405

Method not allowed at this base URL. Try the request again at the Global base URL.

#### 408

Operation timed out.

#### 409

Client Id already exists.

#### 500

Internal server error.
***

## `Update Hybrid Client`

Update a hybrid client. It can take up to one hour
            for these values to manifest in the authentication process.

### Request

`PUT api/v1/Tenants/{tenantId}/HybridClients/{clientId}`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[Required]
string clientId
```

Id of client.

```csharp
[FromBody]
[Required]
HybridClient hybridClient
```

HybridClient object. Properties that are not set or are null will not be changed.

Property Name | Data type | Required | Description
 --- | --- | --- | ---
AllowOfflineAccess | bool | No | Whether this client can request refresh tokens, by providing the *offline_access* scope.
AllowAccessTokensViaBrowser | bool | No | Whether this HybridClient is allowed to receive access tokens via the browser.            This is useful to harden flows that allow multiple response types (for example, by disallowing a hybrid flow            client that is supposed to use code *id_token* to add the *token* response type, thus            leaking the token to the browser).
RedirectUris | string[] | No | The allowed URIs to which return tokens or authorization codes can be returned.            Wildcards are ignored. URIs must match exactly what you are redirecting to            after login. If URIs do not match, the authentication process will fail            with a bad_client error.            Maximum 10 per client.
PostLogoutRedirectUris | string[] | No | Allowed URIs to redirect to after logout. Wildcards are ignored.            URIs must match exactly what you are redirecting to after logout.            Maximum 10 for client.
ClientUri | string | No | URI to a page with information about client (used on consent screen).
LogoUri | string | No | URI to client logo (used on consent screen).
Id | string | No | Client ID for this client. This ID should be a GUID.
Name | string | Yes | Name of Client.
Enabled | bool | No | Whether client is enabled. Client can be used for authentication            if set to true. Client cannot be used for authentication if set to false.
AccessTokenLifetime | int32 | No | Lifetime of access token issued for this client after authentication.            Minimum 60 seconds. Maximum 3600 seconds. Defaults to 3600 seconds.
Tags | string[] | No | For OSIsoft internal use only.

```json
{
  "AllowOfflineAccess": false,
  "AllowAccessTokensViaBrowser": false,
  "RedirectUris": [
    "String",
    "String"
  ],
  "PostLogoutRedirectUris": [
    "String",
    "String"
  ],
  "ClientUri": "ClientUri",
  "LogoUri": "LogoUri",
  "Id": "Id",
  "Name": "Name",
  "Enabled": false,
  "AccessTokenLifetime": 0,
  "Tags": [
    "String",
    "String"
  ]
}
```

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 200

Success.

##### Type:

 `HybridClient`

```json
{
  "AllowOfflineAccess": false,
  "AllowAccessTokensViaBrowser": false,
  "RedirectUris": [
    "String",
    "String"
  ],
  "PostLogoutRedirectUris": [
    "String",
    "String"
  ],
  "ClientUri": "ClientUri",
  "LogoUri": "LogoUri",
  "Id": "Id",
  "Name": "Name",
  "Enabled": false,
  "AccessTokenLifetime": 0,
  "Tags": [
    "String",
    "String"
  ]
}
```

#### 401

Unauthorized.

#### 403

Forbidden.

#### 400

Missing or invalid inputs.

#### 404

Client or tenant not found.

#### 405

Method not allowed at this base URL. Try the request again at the Global base URL.

#### 408

Operation timed out.

#### 500

Internal server error.
***

## `Get Hybrid Client`

Get a Hybrid Client from a tenant.

### Request

`GET api/v1/Tenants/{tenantId}/HybridClients/{clientId}`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[Required]
string clientId
```

Id of client.

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 200

Success.

##### Type:

 `HybridClient`

```json
{
  "AllowOfflineAccess": false,
  "AllowAccessTokensViaBrowser": false,
  "RedirectUris": [
    "String",
    "String"
  ],
  "PostLogoutRedirectUris": [
    "String",
    "String"
  ],
  "ClientUri": "ClientUri",
  "LogoUri": "LogoUri",
  "Id": "Id",
  "Name": "Name",
  "Enabled": false,
  "AccessTokenLifetime": 0,
  "Tags": [
    "String",
    "String"
  ]
}
```

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Client or tenant not found.

#### 500

Internal server error.
***

## `Get All Hybrid Client`

Get a list of Hybrid clients from a tenant. Optionally, get a list of requested clients. Total number of clients in the tenant set in the Total-Count header.

### Request

`GET api/v1/Tenants/{tenantId}/HybridClients`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[FromQuery]
[Optional]
[Default = ""]
string[] id
```

Unordered list of hybrid client Ids. Empty, whitespace or null Ids will be ignored.

```csharp
[FromQuery]
[Optional]
[Default = ""]
string[] tag
```

Only return clients that have these tags.

```csharp
[FromQuery]
[Optional]
[Default = ""]
string query
```

Query to execute. Currently not supported.

```csharp
[FromQuery]
[Optional]
[Default = 0]
int32 skip
```

Number of clients to skip. Will be ignored if a list of Ids is passed.

```csharp
[FromQuery]
[Optional]
[Default = 100]
int32 count
```

Maximum number of clients to return. Will be ignored if a list of Ids is passed.

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 200

Success.

##### Type:

 `List`

```json
[
  {
    "AllowOfflineAccess": false,
    "AllowAccessTokensViaBrowser": false,
    "RedirectUris": [
      "String",
      "String"
    ],
    "PostLogoutRedirectUris": [
      "String",
      "String"
    ],
    "ClientUri": "ClientUri",
    "LogoUri": "LogoUri",
    "Id": "Id",
    "Name": "Name",
    "Enabled": false,
    "AccessTokenLifetime": 0,
    "Tags": [
      "String",
      "String"
    ]
  },
  {
    "AllowOfflineAccess": false,
    "AllowAccessTokensViaBrowser": false,
    "RedirectUris": [
      "String",
      "String"
    ],
    "PostLogoutRedirectUris": [
      "String",
      "String"
    ],
    "ClientUri": "ClientUri",
    "LogoUri": "LogoUri",
    "Id": "Id",
    "Name": "Name",
    "Enabled": false,
    "AccessTokenLifetime": 0,
    "Tags": [
      "String",
      "String"
    ]
  }
]
```

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Tenant not found.

#### 500

Internal server error.
***

## `Delete Hybrid Client`

Delete a hybrid client. It can take up to one hour for deletion to manifest in the authentication process. Access tokens issued to this client will be valid until their expiration. Refresh tokens issued to this will be valid up to one hour after deletion.

### Request

`DELETE api/v1/Tenants/{tenantId}/HybridClients/{clientId}`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[Required]
string clientId
```

Id of client.

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 204

Deleted.

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Client or tenant not found.

#### 405

Method not allowed at this base URL. Try the request again at the Global base URL.

#### 408

Operation timed out.

#### 500

Internal server error.
***

## `Get Header for Hybrid Client`

Validate that a hybrid client exists. This endpoint is identical to the GET one but it does not return any objects in the body.

### Request

`HEAD api/v1/Tenants/{tenantId}/HybridClients/{clientId}`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[Required]
string clientId
```

Id of client.

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 200

Success.

##### Type:

 `Void`

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Client or tenant not found.

#### 500

Internal server error.
***

## `Get Total Count of Hybrid Clients`

Return total number of hybrid clients in a tenant. Optionally, check based on a list of requested clients. The value will be set in the Total-Count header. This endpoint is identical to the GET one but it does not return any objects in the body.

### Request

`HEAD api/v1/Tenants/{tenantId}/HybridClients`

### Parameters

```csharp
[Required]
string tenantId
```

Id of tenant.

```csharp
[FromQuery]
[Optional]
[Default = ""]
string[] id
```

Unordered list of hybrid client Ids. Empty, whitespace or null Ids will be ignored.

```csharp
[FromQuery]
[Optional]
[Default = ""]
string[] tag
```

Only count clients that have these tags.

### Authorization

Allowed for these roles:

- `Tenant Administrator`

### Response

#### 200

Success.

##### Type:

 `Void`

#### 401

Unauthorized.

#### 403

Forbidden.

#### 404

Client or tenant not found.

#### 500

Internal server error.
***

repository: ninlar/OCS-Docs

repo_name: ninlar/OCS-Docs


text:
# Contributing

We appreciate contributions of any kind and acknowledge them on our [README][readme].  By participating
in this project, you agree to abide by our [code of conduct](CODE_OF_CONDUCT.md).

### Any enhancements/bugs/etc you see?

Add an issue.  We'll review it, add labels and reply within a few days.

### See an issue you'd like to work on?

Comment on the issue that you'd like to work on it and we'll add the `claimed` label.  If you see the `claimed` label already on the issue you might want to ask the contributor if they'd like some help.

### Documentation/etc need updating?

Go right ahead!  Just submit a pull request when you're done.

## Pull Requests

We love pull requests from everyone.

Fork, then clone the repo:

    git clone git@github.com:your-username/AzUnzipEverything.git

Push to your fork and [submit a pull request](https://github.com/fboucher/AzUnzipEverything/compare/) against the `dev` branch.

At this point you're waiting on us. We like to at least comment on pull requests within three days (and, typically, one day). We may suggest some changes or improvements or alternatives.

Some things that will increase the chance that your pull request is accepted:

* Update [README][readme] with any needed changes
* Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).

[readme]: README.md

repository: FBoucher/AzUnzipEverything

branch_name: refs/heads/main

gha_language: C#

repo_name: FBoucher/AzUnzipEverything


text:
---
layout: default
---

# 1995-09-28 - Re: 25 Crays a Year to Break STT

## Header Data

From: Bill Stewart<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: ed07b89b81bc223bf98c069d6aa0fcab4eae7748941ef8405f4520f257eaed09

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1995-09-28 17:39:49 UTC

Raw Date: Thu, 28 Sep 95 10:39:49 PDT

## Raw message

```
{% raw  %}From: Bill Stewart<EMAIL_ADDRESS>Date: Thu, 28 Sep 95 10:39:49 PDT
To<EMAIL_ADDRESS>Subject: Re: 25 Crays a Year to Break STT
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

>   Microsoft said its Secure Transaction Technology (STT), was
>   designed to provide a much higher level of security for
>   credit card transactions on the Internet. Netscape's
>   general purpose encryption system uses a 40 or 128-bit
>   electronic "key", while STT will use 2,000-bit keys.
Sigh.  Apples and oranges, and they know it.
....
>   Although no encryption system was totally secure, Mr Dent
>   estimated it would take "25 Cray supercomputers a year" to
>   break the STT codes.

So how much work can 25 Crays do in a year?  Crack single-DES?
Maybe RC4/64?
#---
# Bill Stewart, Freelance Information Architect<EMAIL_ADDRESS># Phone +1-510-247-0664 Pager/Voicemail 1-408-787-1281
#---

{% endraw %}
```

## Thread

+ Return to [September 1995](/archive/1995/09)

+ Return to "[Bill Stewart <stewarts@ix.netcom.com>](/authors/bill_stewart_stewarts_at_ix_netcom_com_)"

+ 1995-09-28 (Thu, 28 Sep 95 10:39:49 PDT) - Re: 25 Crays a Year to Break STT - _Bill Stewart<EMAIL_ADDRESS>


text:
Upgrading From 1.x To 2.0
=========================

 * The `RedirectView` and `RouteRedirect` view classes were removed. Use `View::createRedirect()`
   and `View::createRouteRedirect()` instead.

   **Note**: the default status code for a route redirect has changed from HTTP_CREATED (201) to
   HTTP_FOUND (302).

 * The `FOS\RestBundle\Util\ViolationFormatter` class and the `FOS\RestBundle\Util\ViolationFormatterInterface`
   were removed. Catch specialized exception classes instead of checking specific exception messages.

 * The `ViolationFormatterInterface` argument of the constructor of the `ParamFetcher` class was
   removed.


text:
# WickedEngine Documentation (work in progress)

## Classes
The most important classes are related as described in the following diagram:
![ClassDiagram](classdiagram.png)

(Diagram generated with nomnoml.com)

Order of execution:
![OrderOfExecution](orderofexecution.png)

(Diagram generated with draw.io)

### Components
The "engine components" which provide the high level runtime flow control logic. The application usually overrides these to specify desired specialized logic and rendering.

#### MainComponent
This class represents the engine entry point and the highest level of runtime flow control. At any time it holds a RenderableComponent of a certain type while continuously calling its Update and Render functions.
This class is completely overridable to the user's desired control flow logic.

#### RenderableComponent
This is an abstract class which is void of any logic, but its overriders can implement several methods of it like Load, Update, Render, etc.
Any class implementing this interface can be "activated" on the MainComponent and that will just run it.
The available functions for overriding are the following:

	- void Initialize() : Initialize common state
	- void Load() : Use it for resource loading
	- void Unload() : Destroy resources inside of this
	- void Start() : This function will be called when this component is activated by the MainComponent
	- void Stop() : When activating a RenderableComponent in the MainComponent, that component will Start(), but the previously activated component will call Stop()
	- void FixedUpdate() : Implement you fixed timestep logic in this function
	- void Update(float dt) : Used to implements variable timestep logic. dt paraeter is elapsed time in seconds
	- void Render() : Implement rendering to an off screen buffer
	- void Compose() : Implement rendering to the final buffer which will be presented to the screen

#### Renderable2DComponent
It can manage the rendering of a 2D overlay. It supports layers for sprites and font rendering. The whole class is overridable.

#### Renderable3DComponent
It manages the rendering of a 3D scene with a 2D overlay because it inherits everything from Renderable2DComponent too. This is an interface because multiple rendering methods are provided for performance intesive 3D rendering.
It is important to note that Renderable3DComponents only specify rendering flow and render buffers (render targets). The management of the scene graphs is not their responsibility. That is the wiRenderer static class.
The application can use any of the deriving renderers like ForwardRenderableComponent,  DeferredRenderableComponent or TiledForwardRenderableComponent for example, or even create a custom renderable component (advanced).

##### ForwardRenderableComponent
The simplest kind of 3D renderable component. It supports only directional light for the time being. It is also the least flexible and scalable one.

##### TiledForwardRenderableComponent
This implements the Forward+ rendering pipeline which is a forward rendering using per-screenspace-tile light list while rendering objects. It has a Z-buffer creation prepass to eficiently cull lights per tile and reduce overdraw.

##### DeferredRenderableComponent
This implements a Deferred rendering pipeline. Several screen space geometry buffers are created while rendering the objects, then the lights are rendered in screen space while looking up the geometry information.
It has a lower entry barrier performance wise than Tiled Forward rendering but has some disadvantages. It scales worse for increasing number of lights, has lower precision output and transparent objects are rendered using the
Forward rendering pipeline.

#### LoadingScreenComponent
A helper engine component to load resources or an entire component. It can be activated by the MainComponent as a regular component but has some additional features which are not available in any other.

	- void addLoadingFunction(function<void()> loadingFunction) : Assign a function to do on a separate loading thread. Multiple functions can be assigned
	- void addLoadingComponent(RenderableComponent* component, MainComponent* main) : A helper for loading a whole component. When it's finished, the MainComponent which is provided in the arguments, will activate that component
	- void onFinshed(function<void()> finishFunction) : Tell the component what to do when loading is completely finished
	- int getPercentageComplete() : Retrieve a number between 0 and 100 indicating the finished amount of work the component has done
	- bool isActive() : See if the component is currently working on the loading or not

### Graphics
This section contains engine graphics rendering functionality documentation.

#### API
The graphics API can be managed with these wrappers. These are provided to avoid API specific code in the engine.

##### GraphicsDevice
Functions to expose API functionality. There are two main kinds of functions. Resource creation functions are thread safe, rendering command functions are not, they have a GRAPHICSTHREAD parameter which is important to be provided when they are called from separate threads.
The interface maps best to Direct3D 11's functionality.

##### wiGraphicsDescriptors
Graphics resource descriptors. These are used when creating graphics resources.

##### wiGraphicsResource
Graphics resource wrappers. These have a friend relationship with the graphics device to avoid exposing API specific graphics classes.

#### wiRenderer
The main renderer. The responsibility of this class is managing the scene graph, space partitioning trees, shaders and graphics states, performs rendering tasks, keeps track of engine level rendering state.
This also holds an instance of the GraphicsDevice.
This is a fully static class which means that there can be only a single renderer per application instance.

### Physics

### GUI

### Input

### Helpers

### Network

### Scripting

### Tools

license: MIT,Zlib

detected_licenses: MIT Zlib


text:
# Oakton Computer Science Club

Information

[![Join the chat at gitter.im/oaktoncsclub/public](https://badges.gitter.im/OCS-Website/Lobby.svg)](https://gitter.im/oaktoncsclub/public)

Dependencies

![](https://img.shields.io/badge/jQuery-v3.1.1-blue.svg) ![](https://img.shields.io/badge/Bootstrap-3.3.7-blue.svg) ![](https://img.shields.io/badge/font--awesome-4.6.3-blue.svg) ![](https://img.shields.io/badge/bootstrap--notify-3.1.3-blue.svg)

![](https://img.shields.io/badge/html5shiv-3.7.0-lightgray.svg) ![](https://img.shields.io/badge/Respond-1.4.2-lightgray.svg)

## Welcome!
This is the repository for our website!

Websites are written in a "language" called HTML. HTML is a form of XML, which is a type of Markup Language.
HTML pages tell browsers how to show text to users

Our website supports 2 languages:
 - HTML/JS/CSS - if it can be done in a browser, you can do it with these langauges. Not easy to master, but super-duper powerful
 - Markdown - Super-duper easy to master, this README file is written in Markdown (you can tell beacuse of the .md file extention)

In order to give users a consistent experience across our website, we require everything that is officially Oakton CS Club to be HTML/JS/CSS or a PDF. You can read more about those guidlines below.
**The exception to this rule is for sites under the /members and /templates directories - part of our "lame attempt to revive home-directory culture"**

## Term Definition

> GHP: GitHub Pages

## Important Notice

### Do
Load **ALL** external resources(*css, js, etc...*) that are using `https`, or GHP (or the user's browser) will block them

### Don't
Use files hosted on GitHub. They'll only be loaded as plain text because GHP doesn't seem to send Content-Type headers. We are looking for a way to mess with _config.yml to change that
Use `.php` or any server-side dynamic scripting instead of `.html`, but GHP will not display the file correctly. Exception is templates for member pages with auto-refill attributes

## Basic Page Structure
```HTML
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
	<!--Bootstrap-->
    <link rel="stylesheet" href="/css/style.css" />
    <link rel="icon" href="/img/favicon.png" type="image/png" />
  </head>

  <body>
    <nav class="navbar navbar-default navbar-fixed-top" id="navbar"></nav>
    <footer class="hidden-xs" id="footer"></footer>
	<!--jQuery-->
    <script src="/js/main.js" type="text/javascript"></script>
  </body>
</html>
```

## Style
- Indentation
	- HTML, PHP
		- 2 spaces
		- Indent and use a blank line to separate `<head>`, `<body>`
	- CSS, JS
		- 4 spaces

## Analytics:
[Simple Analytics](http://dgramop.xyz/analytics/viewer.php?uid=oakcsclub.win)
Analytics running on some really old php that was written around 4 years ago, should work fine


text:
# CMPUT-404-Project

Welcome to the git repository of Hindle's Wonderland. This is a repository of CMPUT 404 project.

## Technologies Used

- Django
- Django Rest Framework
- React
- AJAX
- Git
- Swagger
- Redoc
- Figma

## Online demo

### Frontend (React website)

[http://boiling-bayou-18990.herokuapp.com/](http://boiling-bayou-18990.herokuapp.com/)

**Note:** Currently, this frontend cannot run under HTTPS protocol, please use HTTP to connect.
**Note:** The APIFetcher folder contains Ajax.

### Backend (Django API endpoint)

[https://cmput-404-project.herokuapp.com/](https://cmput-404-project.herokuapp.com/)

Default superuser account:
username: demoadmin
password: demoadmin

### Demo Video

[Youtube](https://www.youtube.com/watch?v=i--kNEMyg2k&feature=youtu.be)

## Frontend Setup

All frontend codes are under `/frontend`. Run the following shell command to start the website server:

```console
cd frontend
npm install
npm start
```

## Backend Setup

All backend codes are under `/api`. Run the following shell command to start the API endpoint:

```console
cd api
pipenv install
pipenv shell
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
```

### How to upgrade an account to "admin" (admin of the host)

Upgrade an account to "admin" can only performed by an existing admin account or a superuser account.
Therefore, for first time upgrading account to "admin", you need a superuser account.

1. Create a superuser account.
2. Log in `https://{host_address}/admin/users/user/` using the created superuser.
3. Select the user and set its userType to "admin".

**Note:** If you are using a Heroku instance, Heroku seems to do not support check user type by "user.is_superuser" (this bug has not been fixed yet). Therefore, rather than update userType field of a user by the update API, please use the admin panel offered by Django.

## API documentation

After running the Django server, you can check out the API documentation at `http://localhost:8000/swagger/` or `http://localhost:8000/redoc/` depending on what kind of documentation UI you prefer.

For the online demo, they should be `https://cmput-404-project.herokuapp.com/swagger/` and `https://cmput-404-project.herokuapp.com/redoc/`.

[Online viewing](https://cmput-404-project.herokuapp.com/swagger/)

## Host Administration

The users and remote hosts administration can be found at `https://{host_address}/admin/users/user/` and `https://{host_address}/admin/hosts/host/`.

For the online demo, they shold be at `https://cmput-404-project.herokuapp.com/admin/users/user/` and `https://cmput-404-project.herokuapp.com/admin/hosts/host/`.

We also offer API endpoints for administration, please see the API documentation.

## Remote Hosts Connection

We wrote a conenction helper which can fetch the data that adhere the example JSON format in the given example-article.json.

The remote hosts can be added or removed easily on the administration page. The baseURL should be the common part of the API endpoint that ending with a slash sign "/" (eg. `https://cmput-404-project.herokuapp.com/api/`).

The two default remote host our online demo connected with are `https://spongebook-develop.herokuapp.com/` and `https://cmput404-socialdistribution.herokuapp.com/`.

## UI Planning

### UI Mockup

This is an early version of UI that we planned before building the frontend.

See the `UI_mockup.fig` under the root directory.

[Online vewing](https://www.figma.com/file/sKnTrhQ3f2uaiexQ0A8OSJ/CMPUT-404-Project?node-id=6%3A272)

### UI Story Board

This is a story board of the final version of UI.

If the picture is too small to see, please open it in another tab and zoom in.

![UI story board](UI_story_board.jpeg)


text:
# mozjpeg.net

P/Invoke wrappers around Mozilla's [mozjpeg](https://github.com/mozilla/mozjpeg) for .NET and Xamarin.

Exposes the complete libjpeg API in order to be able to control all the parameters of JPEG encoding and decoding. Also includes
lossless transformation methods.

The wrappers can be used with any version compatible to libjpeg ABI version 6.2,
like libjpeg itself or [libjpeg-turbo](http://www.libjpeg-turbo.org). To distinguish the project from [libjpeg.net](https://github.com/BitMiracle/libjpeg.net),
a managed implementation of libjpeg in C#, I decided to call this project mozjpeg.net.
This also reflects the fact that the prebuilt NuGet packages for monoandroid and Xamarin.iOS ship with mozjpeg.

#### Installing the NuGet on Xamarin.iOS
The NuGet for Xamarin.iOS adds the static library libmozjpeg.a to your project root which contains the
static libraries for i386, x32_64, ARMv7, ARMv7s and ARM64. Following the Xamarin documentation for [linking native libraries](http://developer.xamarin.com/guides/ios/advanced_topics/native_interop/)
you have to configure Xamarin.iOS:

> To Configure Xamarin.iOS To Link the Library, on the project options for your final executable (not the library itself, but the final program) you need to add in "iOS Build"'s Extra argument (these are part of your project options) the "-gcc_flags" option followed by a quoted string that contains > all the extra libraries that are required for your program, for example:

> `-gcc_flags "-L${ProjectDir} -lMylibrary -force_load ${ProjectDir}/libMyLibrary.a"`

In our case the exact line equals to

	-gcc_flags "-L${ProjectDir} -lmozjpeg -force_load ${ProjectDir}/libmozjpeg.a"

I tried to automate this step by importing a `.target` file in the target project file, however
it doesn't seem to be supported:  https://forums.xamarin.com/discussion/42372/msproject-files-import-targets-file-with-mtouchextraargs


text:
# ![somafm](http://somafm.com/linktous/150x50sfm2_1.gif)
A Desktop SomaFM Player.

http://somafm.com/

Built using [Electron](http://electron.atom.io) and [Node.js](https://nodejs.org/).

[![Build Status](https://travis-ci.org/alfg/somafm.svg?branch=master)](https://travis-ci.org/alfg/somafm)
[![Build status](https://ci.appveyor.com/api/projects/status/ydn8eqty1su51lkl?svg=true)](https://ci.appveyor.com/project/alfg/somafm)

![somafm](screenshot-1.png)
![somafm](screenshot-2.png)

\*SomaFM player is currently in Alpha!

## Features
* Cross Platform supporting OSX, Windows and Linux!
* Stream SomaFM Channels
* Save Favorite Channels

## TODO
* Chromecast Support
* Metadata Ingestion
* Settings
* Code Documentation
* Code Optimization
* Tests

## Install

#### Homebrew
```
brew tap alfg/tap
brew cask install somafm
```

Or upgrade to latest:
```
brew update
brew cask install somafm --force
```

#### Download
See [Releases](https://github.com/alfg/somafm/releases) for binary downloads and source.

## Contributing
TBA

## Support SomaFM
SomaFM is entirely listener-supported and independent radio. You can support SomaFM by
donating or purchasing merchandise at the following page:

http://somafm.com/support/

## Development
See: [Development](DEVELOPMENT.md)

## License
[MIT License](http://alfg.mit-license.org/)

repository: ChadRidings/somafm

repo_name: ChadRidings/somafm


text:
Basic concepts of Voxie
=======================

Nodes
-----

All data loaded into voxie is shown in the data flow graph which is visible at
the top left of the voxie main window. This graph consist of individual nodes
which are connected to show the data flow from an initial data set through
filters to some visualizers.

There are the following kinds of nodes:

- **Data nodes**: Data nodes represent some data, e. g. a volume or a surface
  which has been opened from a file or generated by a filter.

- **Filter nodes**: Filter nodes represent some operation which can be applied
  to data and will produce other data nodes. Note that filters can not only
  produce the same type of data (e. g. a gaussian filter which turns one volume
  into another volume) but also produce data of a different type (e. g. the
  marching cubes filter which turns a volume into a surface). Filters can also
  have multiple inputs and outputs or no input or output.

- **Visualizer nodes**: Visualizers will show some data in a window on the right
  side. Visualizers are generally children of data nodes whose data is being
  displayed.

- **Property nodes**: Property nodes are special nodes which represent a set of
  properties. The most important property nodes is the [Plane Property node]
  which represents an infinite plane in 3D space.

- **3D Object nodes**: 3D object nodes can be shown in a 3D visualizer. They
  generally have properties like color etc. 3D object nodes are generally also
  created automatically if a data node is connected to a 3D visualizer node.

[Plane Property node]: voxie:///help/prototype/de.uni_stuttgart.Voxie.Property.Plane

repository: voxie-viewer/voxie

repo_name: voxie-viewer/voxie


text:
# Contribution

Thanks for considering contributing to this project! We are really glad you are reading this, because we need volunteer developers to help this project come to fruition.

Please note we have a code of conduct, please follow it in all your interactions with the project.

## Issues

If you find any bugs, please file an issue in the [GitHub issues][GitHubIssues] page. Please fill out the provided template with the appropriate information.

If you are taking the time to mention a problem, even a seemingly minor one, it is greatly appreciated, and a totally valid contribution to this project. Thank you!

<!-- References -->

<!-- Local -->
[GitHubIssues]: <https://github.com/segraef/Template/issues>
[Contributing]: CONTRIBUTING.md

repository: koshikg/AZDO-Template

repo_name: koshikg/AZDO-Template


text:
---
layout: single
title:  "Sponge-like material promises to store natural gas more efficiently - UPI"
date:   2016-01-10
categories: posts
header:
  teaser: /assets/img/posts/Sponge-like-material-promises-to-store-natural-gas-more-efficiently.png
---
![ubi](/assets/img/posts/Sponge-like-material-promises-to-store-natural-gas-more-efficiently.png){: .align-center}

See the full article [here](https://www.upi.com/Science_News/2016/01/20/Sponge-like-material-promises-to-store-natural-gas-more-efficiently/8101453315667/).

gha_language: SCSS


text:
To get the latest and greatest information, see the repository page of the generating cookie-cutter: https://github.com/jupyter-widgets/widget-ts-cookiecutter

## Installation

A typical installation requires the following commands to be run:

```bash
pip install ipywidgethello
jupyter nbextension enable --py [--sys-prefix|--user|--system] ipywidgethello
```

Or, if you use jupyterlab:

```bash
pip install ipywidgethello
jupyter labextension install @jupyter-widgets/jupyterlab-manager
```

repository: jtpio/jupyter-widget-hello

repo_name: jtpio/jupyter-widget-hello


text:
LocationPlugin
===============

Location plugin allows you to get the geolocation of the user.

How to use
----------

* import the plugin to your project as explained [here](https://github.com/cobaltians/cobalt/wiki/Using-plugins)
* Add the cobalt.location.js to your web JS folder
* Add an html link to the cobalt.location.js plugin script after the cobalt link in the HEAD tag

use the cobalt.getLocation shortcut like this

    //somewhere after cobalt inited
    cobalt.getLocation(function(position){
        //You received position. It contains 'longitude' and 'latitude' as numbers.
        cobalt.log('postion is :', position)
    });

You can handle error messages like this :

    cobalt.init({
        plugins:{
            location:{
                onError:function(code, text){
                    //handle errors
                }
            }
        }
    });

Known error codes and texts are :

* DISABLED : Location detection has been disabled by user
* NULL : No location found

Planned features
----------------

Next features are:
 * registering and unregistering to location changes
 * ...

repository: ggendre/plugins

repo_name: ggendre/plugins


text:
cbor-js
=======

The Concise Binary Object Representation (CBOR) data format ([RFC 7049](http://tools.ietf.org/html/rfc7049)) implemented in pure JavaScript.

[![Build Status](https://api.travis-ci.org/paroga/cbor-js.png)](https://travis-ci.org/paroga/cbor-js)
[![Coverage Status](https://coveralls.io/repos/paroga/cbor-js/badge.png?branch=master)](https://coveralls.io/r/paroga/cbor-js?branch=master)
[![Dependency status](https://david-dm.org/paroga/cbor-js/status.png)](https://david-dm.org/paroga/cbor-js#info=dependencies&view=table)
[![Dev Dependency Status](https://david-dm.org/paroga/cbor-js/dev-status.png)](https://david-dm.org/paroga/cbor-js#info=devDependencies&view=table)
[![Selenium Test Status](https://saucelabs.com/buildstatus/paroga-cbor-js)](https://saucelabs.com/u/paroga-cbor-js)

[![Selenium Test Status](https://saucelabs.com/browser-matrix/paroga-cbor-js.svg)](https://saucelabs.com/u/paroga-cbor-js)

API
---

The `CBOR`-object provides the following two functions:

CBOR.**decode**(*data*)
> Take the ArrayBuffer object *data* and return it decoded as a JavaScript object.

CBOR.**encode**(*data*)
> Take the JavaScript object *data* and return it encoded as a ArrayBuffer object.

Usage
-----

Include `cbor.js` in your or HTML page:
```html
<script src="path/to/cbor.js" type="text/javascript"></script>
```

Then you can use it via the `CBOR`-object in your code:
```javascript
var initial = { Hello: "World" };
var encoded = CBOR.encode(initial);
var decoded = CBOR.decode(encoded);
```
After running this example `initial` and `decoded` represent the same value.

### Combination with WebSocket

The API was designed to play well with the `WebSocket` object in the browser:
```javascript
var websocket = new WebSocket(url);
websocket.binaryType = "arraybuffer";
...
websocket.onmessage = function(event) {
  var message = CBOR.decode(event.data);
};
...
websocket.send(CBOR.encode(message));
```

repository: MonoidMusician/dhall-purescript

gha_language: PureScript

repo_name: MonoidMusician/dhall-purescript


text:
[![Build Status](https://travis-ci.org/johnvoloski/meiomask-rails.svg)](https://travis-ci.org/johnvoloski/meiomask-rails)
[![Gem Version](https://badge.fury.io/rb/meiomask-rails.svg)](http://badge.fury.io/rb/meiomask-rails)
[![Code Climate](https://codeclimate.com/github/johnvoloski/meiomask-rails.png)](https://codeclimate.com/github/johnvoloski/meiomask-rails)
[![Dependency Status](https://gemnasium.com/johnvoloski/meiomask-rails.svg)](https://gemnasium.com/johnvoloski/meiomask-rails)
[![Coverage Status](https://coveralls.io/repos/johnvoloski/meiomask-rails/badge.png)](https://coveralls.io/r/johnvoloski/meiomask-rails)

# MeioMask::Rails

Gemified assets for [jquery.meiomask plugin](https://github.com/fabiomcosta/jquery-meiomask).

## Installation

Add this line to your application's Gemfile:

`gem 'meiomask-rails'`

And then execute:

`$ bundle`

Or install it yourself as:

`$ gem install meiomask-rails`

## Usage

Add to your `application.js`:

`require meiomask`

And use it as the plugin documentation describes.

repository: johnvoloski/meiomask-rails

repo_name: johnvoloski/meiomask-rails


text:
---
title: Last 7 Days VS Previous 7 Days
description: This query compares the sessions of the last 7 days to the previous 7 days aggregated by `campaign_name`. This query demonstrates the use of a concept that can be used with any dimension and metric\\s, comparing different values of the metric based on different values of time or a given dimension.
requirements: Collect data with the Panoply Facebook Ads data source.
usage: This query can be used to create a bar chart comparing the `last_7` and `previous_7` for each campaign or simply displayed as a table.
modifications: The table in the `FROM` might need to be changed based on Schema and Destination settings in the data source. Other dimensions and metrics can be added as filters to the `WHERE` or by adding a `HAVING` clause and other aggregations can be added on top of `last_7` and `previous_7`. This query sums the metric `clicks`, this can be changed to a different metric like `spend` or `impressions`.
---

```sql
SELECT
  campaign_name,
  SUM(
    CASE WHEN date_start >= current_date - 7
    AND date_start < current_date THEN clicks END
  ) last_7,
  SUM(
    CASE WHEN date_start >= current_date - 14
    AND date_start < current_date - 7 THEN clicks END
  ) previous_7
FROM
  public."facebook-ads" -- Table name might be different based on Schema and Destination settings in the data source
WHERE
  date_start >= current_date - 14
  AND date_start < current_date
GROUP BY
  1
ORDER BY
  1
```

## Query Results Dictionary

| Column | Description |
| --- | --- |
| `campaign_name`| Facebook Ads campaign name |
| `last_7`| Values for last 7 days |
| `previous_7`| Values for previous 7 days |

repository: alonbrody/sql-library

repo_name: alonbrody/sql-library


text:
# shellcut

The command like cut(1) on the basis of shellwords.

## Motivation

* Find rows from access logs of load balancers
  * That logs separated values by spaces but also has quoted values too

## Installation

```console
$ go get github.com/mackee/shellcut
```

## Usage

```console
$ cat access_logs.txt | shellcut -f 1-10 -g 1=h2
```

* `-f` - indices on a field for output. 1-origin.
  * `-f 1,2,3` output first to third field on row
  * `-f 1-10` output first to 10th field on row
  * `-f -` print all fields
* `-g` - filter row by field value
  * `-g 10=foobar` output matched rows that 10th field is foobar

## See also

* [mattn/go-shellwords](https://github.com/mattn/go-shellwords)

repository: mackee/shellcut

repo_name: mackee/shellcut


text:
# homebrew-tap

This repository contains Homebrew formulae for my projects and tools that I use which are
not available in the Homebrew core tap.

## Installation

```
brew tap talal/homebrew-tap
```

## Usage

```
brew install <formula-name>
```

## Formulae

| Name | Description |
| --- | --- |
| trash-cli | [trash-cli] is a tool for moving files and folders to the trash. |

[trash-cli]: https://github.com/sindresorhus/trash-cli

repository: talal/homebrew-tap

repo_name: talal/homebrew-tap


text:
# Class constraints
  - Services favor isolated testing, and make no use of integrated data.
  - Services are static and do not communicate directly with the data storage
    layer. Hence the functions are static, and do not refer to the Json classes.
    Therefore they take data, may modify them, and return them. The Application
    using these classes may then save volatile data at their respective level.
  - Services make minimal use of associative arrays as objects. Rather they
    transform given associative arrays into Class objects and use the methods
    set by the class.
  - Services do not assume the applications using them, are aware of Object classes,
    therefore any data objects returned by a service class must be associative arrays.


text:
test-proxy
==========

## Build

To build you must use [gb](https://getgb.io/) and issue `gb build` from the root of the
project directory.  After the executable is built it will be put into
bin.

repository: GreyRockSoft/test-proxy

gha_language: Go

repo_name: GreyRockSoft/test-proxy


text:
### Balance Bot

This is an environment for [OpenAI Gym](https://github.com/openai/gym) where the goal is to train a controller for a two-wheeled balancing robot. The aim is to stay upright as long as possible, and maintain desired speed (by default zero, ie stationary).

To install this environment:

    git clone https://github.com/GopiKishan14/Self_Balancing_Bot.git
    cd Self_Balancind_Bot/balancebot-project
    pip install -e .

If you find problem in installation , manually install :-

```
pip install gym
pip install pybullet
```

To train the agent:

```
    cd Self_Balancind_Bot/balancebot-project
    python main.py
```

The main.py script for training a Deep-Q agent:

    import gym
    from baselines import deepq
    import balance_bot

    def callback(lcl, glb):
        # stop training if reward exceeds 199
        is_solved = lcl['t'] > 100 and sum(lcl['episode_rewards'][-101:-1]) / 100 >= 199
        return is_solved

    def main():
        env = gym.make("balancebot-v0")
        model = deepq.models.mlp([16, 12])
        act = deepq.learn(
            env,
            q_func=model,
            lr=1e-3,
            max_timesteps=100000,
            buffer_size=100000,
            exploration_fraction=0.1,
            exploration_final_eps=0.02,
            print_freq=10,
            callback=callback
        )
        print("Saving model to balance.pkl")
        act.save("balance.pkl")

    if __name__ == '__main__':
        main()

Released under [MIT License](https://opensource.org/licenses/MIT).


text:
# Laravel Quickstart - Basic

## Quick Installation

    git clone https://github.com/laravel/quickstart-basic quickstart

    cd quickstart

    composer install

    php artisan migrate

    php artisan serve

[Complete Tutorial](https://laravel.com/docs/5.2/quickstart)

## CI Pipeline for TODO application
- The deployment of the application was carried out from Artifactory.

## STEPS
- Install Artifactory on the artifactory server
```
sudo apt-get install gnupg2 -y
wget -qO - https://api.bintray.com/orgs/jfrog/keys/gpg/public.key |sudo apt-key add -
sudo echo "deb https://jfrog.bintray.com/artifactory-debs bionic main" | sudo tee /etc/apt/sources.list.d/jfrog.list
sudo apt update -y
sudo apt install jfrog-artifactory-oss -y
sudo systemctl start artifactory
sudo systemctl enable artifactory
```
![project-14-artifactory-install-edit](https://user-images.githubusercontent.com/54307445/112258054-20d03180-8c66-11eb-9546-490d4596a18e.png)

- On the Jenkins server, Install PHP, its dependencies and Composer tool
```sudo yum install -y zip phploc php-{xml,bcmath,bz2,intl,gd,mbstring,mysqlnd,zip}```

- Install and configure Jenkins plugins (Plot, Artifactory)
![project-14-jfrog-artifactory-plugin](https://user-images.githubusercontent.com/54307445/112256061-bd450480-8c63-11eb-9dc8-7a49cea30859.png)

- In artifactory ui, create a repository that has the same name as your “target” in your jenkinsfile (under the Artifact deployment stage). In this case, it is php-todo
[Jenkinsfile](https://github.com/MekkyMayata/php-todo/blob/main/deploy/jenkinsfile)

- Create the necessary database requirements and edit the .env.sample file

- Update the Jenkins file to include Unit tests step
[Jenkinsfile](https://github.com/MekkyMayata/php-todo/blob/main/deploy/jenkinsfile)

Next, setup code coverage report on the jenkins server.

1. run ```php --ini``` to see loaded modules and php config files.

2. from 1, try to find the xdebug file among the outputs, if its not there an install should be made (sudo yum/apt install php-xdebug)

3. run ```php --ini``` again and this time the xdebug file should be among the list of files.

4. edit the xdebug file in the output (run php --ini | grep xdebug) to locate the file.

To edit, find the commented line (;xdebug.mode = develop) and change it to (xdebug.mode = coverage).
The file also says something about passing a global environment variable XDEBUG_MODE to bypass the default one set in the file, so you may use this method also.

5. restart php (sudo systemctl restart php-fpm)

- run the job
![project-14-execute-unit-tests-edit](https://user-images.githubusercontent.com/54307445/112258316-989e5c00-8c66-11eb-9fa2-f47a9f76625b.png)

- add the code quality analytics stage to the pipeline and run it
![phploc-output](https://user-images.githubusercontent.com/54307445/112257487-3729bd80-8c65-11eb-9016-42c166738f97.png)

- Package the artifact and deploy to artifactory server
- Next, deploy to dev environment and configure sonarqube server (see [sonarqube role](https://github.com/MekkyMayata/CI-JAASP/tree/master/roles/sonarqube))
- Install the sonar plugin on Jenkins UI. Configure sonarqube and Jenkins for quality gates
![sonarqube-servers](https://user-images.githubusercontent.com/54307445/112258807-6b05e280-8c67-11eb-8fdb-d0205630b9b1.png)
![sonar-scanner](https://user-images.githubusercontent.com/54307445/112258715-40b42500-8c67-11eb-99b5-b55a0e78c8e5.png)

- edit the sonar.properties file located in ```/var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/SonarQubeScanner/conf/```
```
#sonar.sourceEncoding=UTF-8

sonar.host.url=http://<IP_ADDRESS>:9000 # replace url here
sonar.projectKey=php-todo
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
sonar.php.exclusions=**/vendor/**
sonar.php.coverage.reportPaths=build/logs/clover.xml
sonar.php.tests.reportPath=build/logs/junit.xml
```
- Update the jenkins pipeline to include sonarqube scanning stage
![project-14-sonar-report](https://user-images.githubusercontent.com/54307445/112259189-20389a80-8c68-11eb-81e6-d1209cbc2f7d.png)

- Add conditional deployment to higher environment stages in the jenkins pipeline
![project-14-sonar-bypass](https://user-images.githubusercontent.com/54307445/112259306-5b3ace00-8c68-11eb-978c-85b6447ad53a.png)

- Add 2 more servers to be used as Jenkins slave. Configure Jenkins to run its pipeline jobs randomly on any available slave nodes.
1. Under the managed jenkins, add nodes. In the node configuration section, provide necessary details.
2. Also provide the private key of the node (jenkins will use it to connect). Make sure the java-jdk is installed on the slave(s).
![adding-nodes](https://user-images.githubusercontent.com/54307445/112259597-dbf9ca00-8c68-11eb-8128-4791506ce727.png)
![master-slave](https://user-images.githubusercontent.com/54307445/112259441-9b9a4c00-8c68-11eb-8472-b1608fa3ac74.png)

- Configure webhook between Jenkins and Github to automatically run the pipeline when there is a code push.
1. Install multibranch scan webhook trigger in manage plugins
2. Edit the scan repository triggers section of the multibranch pipeline. Also check the info and copy the syntax for the webhook( JENKINS_URL/multibranch-webhook-trigger/invoke?token=[Trigger token]). Replace accordingly (e.g; http://x.x.x.x:8080/multibranch-webhook-trigger/invoke?token=ci-jaasp-token-value)

![github-webhook](https://user-images.githubusercontent.com/54307445/112259775-21b69280-8c69-11eb-8944-e254b00f8cad.png)

3. Deploy application to remaining environments

## Inspired By:
- [Darey.io](https://darey.io)

🤗

repository: MekkyMayata/php-todo

gha_language: PHP

repo_name: MekkyMayata/php-todo


text:
# Project Name

**Author**: Jay & Matt
**Version**: 1.0.0 (increment the patch/fix version number up if you make more commits past your first submission)

## Overview
<!-- Provide a high level overview of what this application is and why you are building it, beyond the fact that it's an assignment for a Code Fellows 301 class. (i.e. What's your problem domain?) -->
We built an application that receives articles served from a locally run node server. We are now able to add new articles through a series of input fields which upon submission are then placed into the JSON with the existing articles.

## Getting Started
<!-- What are the steps that a user must take in order to build this app on their own machine and get it running? -->
They need a locally installed version of node and express. They can then access the site with thier browser via port 3000.

## Architecture
<!-- Provide a detailed description of the application design. What technologies (languages, libraries, etc) you're using, and any other relevant design information. -->
We have a node server and express back-end and utilize HTML5, CSS3, and ES6 JavaScript for our front-end. We are also useing jQuery for simplified DOM manipulation and AJAX for communication with the server.

## Change Log
<!-- Use this are to document the iterative changes made to your application as each feature is successfully implemented. Use time stamps. Here's an examples:
01-01-2001 4:59pm - Application now has a fully-functional express server, with GET and POST routes for the book resource.
## Credits and Collaborations
<!-- Give credit (and a link) to other people or resources that helped you build this application. -->
03-31-2018 6:50pm - Implemented node and express server on the back-end. Added new article page.

license: ISC


text:
  wss2tcp

wss to tcp connection proxy to be used to connect to public Electrum servers

## Using it
Just establish a connection to the websockets URL and start sending messages.

Example: `localhost:8080/tcp/electrum.blockstream.info/50001/ignore`

## Electrum servers
A list of public electrum servers is available at https://1209k.com/bitcoin-eye/ele.php?chain=btc

## Hosting your own
[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy)

## Development
This project uses the standards widely known on the javascript community:
```
npm install # Install dependencies
npm run build # Compile typescript code
npm run lint # Lint & format code
npm start # Start the server
```


text:
# Contributing to Atom Packages

The following is a set of guidelines for contributing to Atom packages, which
are hosted in the [Atom Organization](https://github.com/atom) on GitHub. If
you're unsure which package is causing your problem or if you're having an issue
with Atom core, please use the feedback form in the application or email
[atom@github.com](mailto:atom@github.com).

## Submitting Issues

* Include screenshots and animated GIFs whenever possible; they are immensely
  helpful.
* Include the behavior you expected and other places you've seen that behavior
  such as Emacs, vi, Xcode, etc.
* Check the dev tools (`alt-cmd-i`) for errors and stack traces to include.
* Check Console.app for stack traces to include if reporting a crash.
* Perform a cursory search to see if a similar issue has already been submitted.

## Hacking on Packages

### Cloning

The first step is creating your own clone. You can of course do this manually
with git, or you can use the `apm develop` command to create a clone based on
the package's `repository` field in the `package.json`.

For example, if you want to make changes to the `tree-view` package, run the
following command:

```
> apm develop tree-view
Cloning https://github.com/atom/tree-view ✓
Installing modules ✓
~/.atom/dev/packages/tree-view -> ~/github/tree-view
```

This clones the `tree-view` repository to `~/github`. If you prefer a different
path, specify it via the `ATOM_REPOS_HOME` environment variable.

### Running in Development Mode

Editing a package in Atom is a bit of a circular experience: you're using Atom
to modify itself. What happens if you temporarily break something? You don't
want the version of Atom you're using to edit to become useless in the process.
For this reason, you'll only want to load packages in **development mode** while
you are working on them. You'll perform your editing in **stable mode**, only
switching to development mode to test your changes.

To open a development mode window, use the "Application: Open Dev" command,
which is normally bound to `cmd-shift-o`. You can also run dev mode from the
command line with `atom --dev`.

To load your package in development mode, create a symlink to it in
`~/.atom/dev/packages`. This occurs automatically when you clone the package
with `apm develop`. You can also run `apm link --dev` and `apm unlink --dev`
from the package directory to create and remove dev-mode symlinks.

### Installing Dependencies

Finally, you need to install the cloned package's dependencies by running
`apm install` within the package directory. This step is also performed
automatically the first time you run `apm develop`, but you'll want to keep
dependencies up to date by running `apm update` after pulling upstream changes.

## Submitting Pull Requests

### Code Guidelines

* Include screenshots and animated GIFs in your pull request whenever possible.
* Follow the [CoffeeScript](#coffeescript-styleguide),
  [JavaScript](https://github.com/styleguide/javascript),
  and [CSS](https://github.com/styleguide/css) styleguides.
* Include thoughtfully-worded, well-structured
  [Jasmine](http://pivotal.github.com/jasmine) specs.
* Document new code based on the
  [Documentation Styleguide](#documentation-styleguide)
* End files with a newline.
* Place requires in the following order:
  * Built in Node Modules (such as `path`)
  * Built in Atom and Atom Shell Modules (such as `atom`, `shell`)
  * Local Modules (using relative paths)
* Place class properties in the following order:
  * Class methods and properties (methods starting with a `@`)
  * Instance methods and properties
* Avoid platform-dependent code:
  * Use `require('atom').fs.getHomeDirectory()` to get the home directory.
  * Use `path.join()` to concatenate filenames.
  * Use `os.tmpdir()` rather than `/tmp` when you need to reference the
    temporary directory.

### Commit Message Guidelines
  * Use the present tense ("Add feature" not "Added feature")
  * Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
  * Limit the first line to 72 characters or less
  * Reference issues and pull requests liberally
  * Consider starting the commit message with an applicable emoji:
    * :lipstick: when improving the format/structure of the code
    * :racehorse: when improving performance
    * :non-potable_water: when plugging memory leaks
    * :memo: when writing docs
    * :bulb: Check out the [Emoji Cheat Sheet](http://www.emoji-cheat-sheet.com)
      for more ideas.

## CoffeeScript Styleguide

* Use parentheses if it improves code clarity.
* Prefer alphabetic keywords to symbolic keywords:
  * `a is b` instead of `a == b`
* Avoid spaces inside the curly-braces of hash literals:
  * `{a: 1, b: 2}` instead of `{ a: 1, b: 2 }`
* Set parameter defaults without spaces around the equal sign:
  * `clear = (count=1) ->` instead of `clear = (count = 1) ->`
* Include a single line of whitespace between methods.

## Documentation Styleguide

* Use [TomDoc](http://tomdoc.org).
* Use [Markdown](https://daringfireball.net/projects/markdown).
* Reference methods and classes in markdown with the custom `{}` notation:
  * Reference classes with `{ClassName}`
  * Reference instance methods with `{ClassName::methodName}`
  * Reference class methods with `{ClassName.methodName}`

### Example

```coffee
# Public: Disable the package with the given name.
#
# This method emits multiple events:
#
# * `package-will-be-disabled` - before the package is disabled.
# * `package-disabled`         - after the package is disabled.
#
# name     - The {String} name of the package to disable.
# options  - The {Object} with disable options (default: {}):
#   :trackTime - `true` to track the amount of time disabling took.
#   :ignoreErrors - `true` to catch and ignore errors thrown.
# callback - The {Function} to call after the package has been disabled.
#
# Returns `undefined`.
disablePackage: (name, options, callback) ->
```

gha_language: CoffeeScript


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

### Description

Android SQLite Journal before 4.0.1 has an information disclosure vulnerability.

### POC

#### Reference
- https://seclists.org/fulldisclosure/2012/May/19

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

repository: trickest/cve

gha_language: HTML

repo_name: trickest/cve


text:
# Hello World

The classical introductory exercise. Just say "Hello, World!".

["Hello, World!"](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program) is
the traditional first program for beginning programming in a new language
or environment.

## Requirements

Install assignment dependencies:

```bash
$ yarn
```

## Making the test suite pass

Execute the tests with:

```bash
$ yarn test
```

## Source

This is an exercise to introduce users to using Exercism [http://en.wikipedia.org/wiki/%22Hello,_world!%22_program](http://en.wikipedia.org/wiki/%22Hello,_world!%22_program)


text:
Overview
========

This is the Chef repository for the FAIMS (http://www.fedarch.org) NeCTAR deployment.

It is built on a clone of the original Opscode chef-repo skeleton. So to quote:
"This is the place where cookbooks, roles, config files and other artifacts ... will live."

In order to build a machine up from scratch, install the Opscode OpenStack plug in for Knife: <https://github.com/opscode/knife-openstack>
If the following fixes haven't been performed on the latest version of the Knife plugin <https://github.com/jkburges/knife-openstack/commit/4ea2072dcbce4ccb74d6a16a14adcbed9f5007fe> then you'll have to apply them to run against the NeCTAR cloud.

Then once the recipies have been uploaded to the chef server, the following commands are of interest:

    admin$ knife openstack server create -f 0 -I 964d2451-6727-4663-8d8e-d18a2f04b62c -N database -S KeyName -G PostgreSQL -i path/to/key --network-id queensberry -r 'recipe[postgresql]'

to set up a raw postgress server.

repository: MartinPaulo/FaimsChef

gha_language: Ruby

repo_name: MartinPaulo/FaimsChef


text:
# gulp-s3-publish [![NPM version][npm-image]][npm-url]

> s3 plugin for [gulp](https://github.com/gulpjs/gulp)

## Info
This plugin is a fork of [gulp-s3](https://github.com/nkostelnik/gulp-s3), which was unmaintained when this repository was forked.

This plugin adds support for AWS Signature V4 (which is mandatory for the newer regions), produces Streams2/3 compatible streams and will also error on upload failure, which can be useful in CI/CD environments

Please open an issue for feature requests.

## Usage

First, install `gulp-s3-publish` as a development dependency:

```shell
npm install --save-dev gulp-s3-publish
```

Setup your aws.json file
```javascript
{
  "key": "<REDACTED_AWS_ACCESS_KEY>",
  "secret": "acYxWRu5RRa6CwzQuhdXEfTpbQA+1XQJ7Z1bGTCx",
  "bucket": "dev.example.com",
  "region": "eu-west-1"
}
```

Then, use it in your `gulpfile.js`:
```javascript
var s3 = require("gulp-s3-publish");

aws = JSON.parse(fs.readFileSync('./aws.json'));
gulp.src('./dist/**/*')
    .pipe(s3(aws));
```

## API

#### options.headers

Type: `Object`
Default: `{}`
Options: `CacheControl` | `ContentDisposition` | `ContentEncoding` | `ContentLanguage`, `ContentLength` | `ContentMD5` | `ContentType` | `Expires`

Headers to set to each file uploaded to S3. Note that ContentLenghth is automatically computed for you and ContentType is guessed using the `mime` package.

```javascript
var options = { headers: {'CacheControl': 'max-age=315360000, no-transform, public'} };
gulp.src('./dist/**', {read: false})
    .pipe(s3(aws, options));
```

### options.acl

Type: `String`
Default: `public-read`
Options: `private` | `public-read` | `public-read-write` | `authenticated-read` | `aws-exec-read` | `bucket-owner-read` | `bucket-owner-full-control`

Set the access control for each object uploaded. Defaults to `public-read`.

```javascript
var options = { acl: 'private' };
gulp.src('./dist/**', {read: false})
    .pipe(s3(aws, options));
```

#### options.gzippedOnly

Type: `Boolean`
Default: `false`

Only upload files with .gz extension, additionally it will remove the .gz suffix on destination filename and set appropriate Content-Type and Content-Encoding headers.

```javascript
var gzip = require("gulp-gzip");
...
var options = { gzippedOnly: true };
gulp.src('./dist/**')
    .pipe(gzip())
    .pipe(s3(aws, options));
});
```

#### options.concurrency

Type: `Number`
Default: `1`

Change the concurrency at which the upload occurs, useful for projects with many files. Defaults to 1.

```javascript
var options = { concurrency: 5 };
gulp.src('./dist/**')
    .pipe(s3(aws, options));
});
```

## License

[MIT License](http://en.wikipedia.org/wiki/MIT_License)

[npm-url]: https://npmjs.org/package/gulp-s3-publish
[npm-image]: https://badge.fury.io/js/gulp-s3-publish.png


text:
- [Preface](#preface)
- [Introduction to microservice](#introduction-to-microservice)
	- [Service discovery](#service-discovery)
	- [Asynchronous and reactive Vert.x](#asynchronous-and-reactive-vert-x)
- [The online shopping application](#the-online-shopping-application)
	- [Online shopping microservice architecture](#online-shopping-microservice-architecture)
	- [Component structure](#component-structure)
	- [Interaction between components](#interaction-between-components)
- [Let's start!](#let-s-start-)
- [Blueprint common module](#blueprint-common-module)
	- [Base microservice verticle](#base-microservice-verticle)
	- [REST API verticle](#rest-api-verticle)
- [API Gateway](#api-gateway)
- [Event bus services - Account, store and product service](#event-bus-services-account-store-and-product-service)
	- [Asynchronous RPC on event bus](#asynchronous-rpc-on-event-bus)
	- [Common features](#common-features)
	- [Product microservice with MySQL](#product-microservice-with-mysql)
	- [Store microservice with MongoDB](#store-microservice-with-mongodb)
- [Inventory microservice with Redis](#inventory-microservice-with-redis)
- [Event sourcing pattern - Shopping cart microservice](#event-sourcing-pattern-shopping-cart-microservice)
	- [Introduction to event sourcing](#introduction-to-event-sourcing)
	- [Shopping cart events](#shopping-cart-events)
	- [Shopping cart entity](#shopping-cart-entity)
	- [Using Rx version of Vert.x JDBC](#using-rx-version-of-vert-x-jdbc)
	- [Aggregate shopping cart from events](#aggregate-shopping-cart-from-events)
	- [Checkout - generate order from shopping cart](#checkout-generate-order-from-shopping-cart)
	- [Send orders to order microservice](#send-orders-to-order-microservice)
	- [Shopping cart REST API](#shopping-cart-rest-api)
	- [Cart verticle](#cart-verticle)
- [Order microservice](#order-microservice)
	- [Consume the Cart-To-Order message source](#consume-the-cart-to-order-message-source)
	- ["Process" the order](#-process-the-order)
- [Micro Shop SPA integration](#micro-shop-spa-integration)
- [Monitor dashboard with metrics](#monitor-dashboard-with-metrics)
	- [SockJS - Event bus bridge](#sockjs-event-bus-bridge)
	- [Send metrics data to event bus](#send-metrics-data-to-event-bus)
	- [Consume event bus messages in the browser](#consume-event-bus-messages-in-the-browser)
- [Show time!](#show-time-)
- [The end](#the-end)


text:
---
layout: post
navbar: Blog
title: "Meeting Agenda - October 12th, 2017"
date: 2017-10-12 12:00:00 -0400
comments: true
categories: Agenda
---

**6:00pm:**

Food and drinks served

### Introduction

A brief overview of the Ohio Information Security Forum.

### **Group Discussion**
_By: *All*_

#### Abstract

Discussion on current information security related events.

gha_language: CSS


text:
# Sherlock Distributed Lock

[![Build Status](https://travis-ci.org/coditory/sherlock-distributed-lock.svg?branch=master)](https://travis-ci.org/coditory/sherlock-distributed-lock)
[![Coverage Status](https://coveralls.io/repos/github/coditory/sherlock-distributed-lock/badge.svg)](https://coveralls.io/github/coditory/sherlock-distributed-lock)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.coditory.sherlock/sherlock-api-sync/badge.svg)](https://search.maven.org/search?q=com.coditory.sherlock)
[![JavaDoc](https://www.javadoc.io/badge/com.coditory.sherlock/sherlock-api-sync.svg)](http://www.javadoc.io/doc/com.coditory.sherlock/sherlock-api-sync)

[Sherlock](https://github.com/coditory/sherlock-distributed-lock) is a distributed lock library for JVM projects.
It exposes both synchronous and reactive [API](api) and uses database [connectors](connectors) to store locks.
It was created as a simple solution to manage distributed locks among multiple microservices.

By default, locks are acquired for a [specific duration](locks#lock-duration).
Thanks to this approach when lock owning instance unexpectedly goes down,
lock is automatically released after expiration.

!!! important "Read and write from the same DB node"
    Make sure that DB connection passed to Sherlock reads and writes to the same DB node
    so every lock change is visible to all of your services.

## Quick start

Add dependency to `build.gradle`:
```groovy
dependencies {
  compile "com.coditory.sherlock:sherlock-mongo-sync:{{ version }}"
}
```

Create synchronous lock:
```java
// Get mongo locks collection
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017/sherlock");
MongoCollection<Document> collection = mongoClient
    .getDatabase("sherlock")
    .getCollection("locks");
// Create sherlock
Sherlock sherlock = MongoSherlock.builder()
    .withLocksCollection(collection)
    .build();
// Create a lock
DistributedLock lock = sherlock.createLock("sample-lock");
```

Acquire a lock:
```java
// Acquire a lock
if (lock.acquire()) {
  try {
    System.out.println("Lock granted!");
  } finally {
    lock.release();
  }
}
```

...or acquire a lock in a more concise way:
```java
lock.acquireAndExecute(() -> {
  System.out.println("Lock granted!");
});
```

!!! info "Learn more"
    Learn how to use different [APIs](api) and [connectors](connectors).

repository: coditory/sherlock-distributed-lock

gha_language: Java

repo_name: coditory/sherlock-distributed-lock


text:
# Data Logger: Temperature, Pressure, Humidity, Light Intensity and Color

![](Schematic%20and%20PCB%20layout/Data%20Logger%20Image.jpeg)

## Summary:

This is an open-source data logger that can record air temperature, air pressure, relative humidity, visible light instensity, near-infrared light intensity, and visible light color (RGB).  This data logger can record at up to 1 Hz onto a FAT32 formatted SD card.  At 1Hz and with a full battery pack (6 AAs) the data logger should run for 200+ days on a single pack (depending on the SD card), with lower sampling frequencies increasing the duration to a maximum of >800 days (depending on the SD card).  The light sensors employ an autogain feature with the intensity sensor having a 600,000,000:1 dynamic range, and a minimum sensitivity at about 1.0 nW/cm2.

Windows users: Use this program to format SD cards >32 GB http://www.ridgecrop.demon.co.uk/index.htm?guiformat.htm

For information on ordering, assembly, and programming, please see the instruction manual.

Development of this data logger was funded by NIH P30-EY003176-32


text:
# Execute a shell script
This activity returns the current time of the Flow to be used in the Performance metrics.

# Installation
```
flogo install github.com/slcorp/RTView-Flogo/tree/master/activity/StartTimer`

repository: slcorp/RTView-Flogo

repo_name: slcorp/RTView-Flogo