text:
# Decorator pattern
Decorator pattern is a design pattern that allows behavior to be added to an individual object, dynamically, without affecting the behavior of other objects from the same class. The decorator pattern is often useful for adhering to the Single Responsibility Principle, as it allows functionality to be divided between classes with unique areas of concern.

The Decorator design pattern solves problems like:
- Responsibilities should be added to (and removed from) an object dynamically at run-time.
- A flexible alternative to subclassing for extending functionality should be provided.
- Client-specified embellishment of a core object by recursively wrapping it.

When using subclassing, different subclasses extend a class in different ways. But an extension is bound to the class at compile-time and can't be changed at run-time.

## Example

Suppose we have an interface - `GameUnit`:
```
public interface GameUnit {
    int attackPower();
    int health();
}
```

and base implementation of `GameUnit` interface - `SimpleUnit`:
```
public final class SimpleUnit implements GameUnit {

    private final int attackPower;
    private final int health;

    public SimpleUnit() {
        this(1, 1);
    }

    public SimpleUnit(int attackPower, int health) {
        this.attackPower = attackPower;
        this.health = health;
    }

    @Override
    public int attackPower() {
        return attackPower;
    }

    @Override
    public int health() {
        return health;
    }
}
```

And we need to make two different units, one with weapons and the other with armor. For this we use the decorator pattern:
```
public final class ArmoredUnit implements GameUnit {

    private final GameUnit gameUnit;
    private final int armorValue;

    public ArmoredUnit(GameUnit gameUnit) {
        this(gameUnit, 10);
    }

    public ArmoredUnit(GameUnit gameUnit, int armorValue) {
        this.gameUnit = gameUnit;
        this.armorValue = armorValue;
    }

    @Override
    public int attackPower() {
        return gameUnit.attackPower();
    }

    @Override
    public int health() {
        return gameUnit.health() + armorValue;
    }
}
```

```
public final class ArmedUnit implements GameUnit {

    private final GameUnit gameUnit;
    private final int weaponPower;

    public ArmedUnit(GameUnit gameUnit) {
        this(gameUnit, 10);
    }

    public ArmedUnit(GameUnit gameUnit, int weaponPower) {
        this.gameUnit = gameUnit;
        this.weaponPower = weaponPower;
    }

    @Override
    public int attackPower() {
        return gameUnit.attackPower() + weaponPower;
    }

    @Override
    public int health() {
        return gameUnit.health();
    }
}
```

And now we can decorate `GameUnit`:

```
public final class DecoratorExample {

    public void decoratorExample() {
        GameUnit gameUnit = new SimpleUnit();
        GameUnit armoredUnit = new ArmoredUnit(gameUnit, 10);
        GameUnit armedUnit = new ArmedUnit(gameUnit);

        System.out.println("GameUnit power = " + gameUnit.attackPower() + ", " + "health = " + gameUnit.health());
        System.out.println("ArmoredUnit power = " + armoredUnit.attackPower() + ", " + "health = " + armoredUnit.health());
        System.out.println("ArmedUnit power = " + armedUnit.attackPower() + ", " + "health = " + armedUnit.health());
    }
}
```

Output:
```
GameUnit power = 1, health = 1
ArmoredUnit power = 1, health = 11
ArmedUnit power = 11, health = 1
```

## Links
https://en.wikipedia.org/wiki/Decorator_pattern
https://sourcemaking.com/design_patterns/decorator
https://springframework.guru/gang-of-four-design-patterns/decorator-pattern/

repository: Kirchhoff-/Android-Interview-Questions

path: /Patterns/Decorator pattern.md

filename: Decorator pattern.md

repo_name: Kirchhoff-/Android-Interview-Questions


text:
# ebay-pagination

The `<ebay-pagination>` is a tag used to create a pagination navigation. It will display up to 9 page links.

## ebay-pagination Tag

### ebay-pagination Usage

```marko
<ebay-pagination aria-label-prev="Previous page" aria-label-next="Next page" curr-text="Results Pagination - Page 2">
    <ebay-pagination-item href="#" type="previous" disabled/>
    <ebay-pagination-item href="#">item 1</ebay-pagination-item>
    <ebay-pagination-item href="#" current>item 2</ebay-pagination-item>
    <ebay-pagination-item href="#">item 3</ebay-pagination-item>
    <ebay-pagination-item href="#" type="next"/>
</ebay-pagination>
```

### ebay-pagination Attributes

Name | Type | Stateful | Description
--- | --- | --- | ---
`a11y-previous-text` | String | No | a11y text for previous arrow button
`a11y-next-text` | String | No | a11y text for next arrow button
`a11y-current-text` | String | No | Description for the current page (e.g. Results of Page 1)

### ebay-pagination Events

Event | Data | Description
--- | --- | ---
`pagination-previous` | `{ originalEvent, el }`| clicked previous arrow button
`pagination-next` | `{ originalEvent, el }` | clicked next arrow button
`pagination-select` | `{ originalEvent, el, value }` | page selected clicked

## ebay-pagination-item Tag

### ebay-pagination-item Usage

```marko
<ebay-pagination-item>1</ebay-pagination-item>
```

### ebay-pagination-item Attributes

Name | Type | Stateful | Description
--- | --- | --- | ---
`disabled` | Boolean | No | Previous/next button is disabled or not
`href` | String | No | for link that looks like a menu-item; omitting the href will switch to a button
`current` | Boolean | No | the current page
`type` | String | No | "previous", "next" or "page"(default). To specify if the information entered is for the previous or next arrrow button or a page. If the `type='previous|next'` isn't provided the previous/next arrow buttons will be taken as `disabled`

Notes:

* If you want to have client side or ajax based navigation then you should omit the `href` attribute on each item. This will cause each item to be `<button>` instead of an `<a>`.

license: MIT

repository: privatewbluo/ebayui-core

branch_name: refs/heads/master

extension: md

gha_license_id: MIT

license_type: permissive

repo_name: privatewbluo/ebayui-core


text:
# Kinesis Log Watcher
Watch Kinesis logs in real time.

## Usage
kinesis-log-watcher [options] _stream-name_

Watch incoming log entries from a Kinesis stream. This is intended to be a
companion to kinesis-log-streamer.

Valid durations are a number followed by a unit abbreviation.
Examples: 30s, 5m, 3h, 1d.

The format string uses the [Go template format](https://golang.org/pkg/text/template/). Fields available are:

* `{{.HostId}}` `{{.HostID}}` -- The full ARN of the host generating the log.
* `{{.ShortHostId}}` `{{.ShortHostID}}` -- Short hostname (just the last part).
* `{{.Timestamp}}` -- The timestamp when the log was sent to Kinesis.
* `{{.LogEntry}}` -- The log entry in string format.
* `{{.Log}}` -- If the log entry could be parsed as JSON, the resulting JSON structure. You can get embedded fields using `{{.Log.FieldName}}`.

To format the timestamp in different formats (e.g. ISO 8601), you can use either:

* `{{.Timestamp Format "2005-01-02T15:04:05Z"}}` or
* `{{strftime "%Y-%m-%dT%H:%M:%S" .Timestamp}}`

## Options

* -f _template_ | --format=_template_
  Format template for log entries. Default is `{{.ShortHostId}} {{.Timestamp}} {{.LogEntry}}`

* -h | --help
  Show this usage information.

* -O | --one-shot
  Display logs only once; don't poll.

* -p _profile_ | --profile=_profile_
  If specified, obtain AWS credentials from the specified profile in ~/.aws/credentials.

* -r _region_ | --region=_region_
  The AWS region to use. If unspecified, the value from the `$AWS_REGION` environment variable is used.

* -s _duration_ | --start=_duration_
  Start time to start polling from, specified as a duration from the current time. Default is `5m`.

* -w _duration_ | --watch=_duration_
  Watch/poll time, specified as a duration. Default is `10s`.

## License

This program and associated documentation and source code are licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).

repository: dacut/kinesis-log-watcher

repo_name: dacut/kinesis-log-watcher


text:
# Tail Roadmap
Repository with recommended resources for studying Data Science.

## Table of Contents
- [Roadmap IA](#roadmap-ia)
- [Livros](#livros)
- [Cursos](#cursos)
- [Tutoriais](#tutoriais)
- [Dicas](#dicas)
- [Clone](#clone)
- [Author](#author)
- [Support](#support)
- [License](#license)
---
## Roadmap IA

---
## Artigos do Medium

---
## Livros

---
## Cursos

---
## Tutoriais

---
## Dicas

---
## Clone

---
## Author

---
## Support

---
## License

[![License](http://img.shields.io/:license-mit-blue.svg?style=flat-square)](http://badges.mit-license.org)

- **[MIT license](http://opensource.org/licenses/mit-license.php)**

repository: TailUFPB/TailRoadmap

repo_name: TailUFPB/TailRoadmap


text:
# Larablog

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A powerful Laravel [CRUD](https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers) (Create Read Update Delete) blog built on [Laravel](http://laravel.com/) 5.1 and [Bootstrap](http://getbootstrap.com) 3.5.x - [<https://larablog.io>](https://larablog.io)

| Larablog Features  |
| :------------ |
|Built on Laravel 5.1|
|Uses MySQL Database, manage in .env file|
|Front End and Admin Area are Responsive Using Bootstrap 3.5|
|HTML5, CSS3, PHP5.4+, and Legacy Browser Support|
|Optional use of Amazon API to store Uploads/Assets on S3 Bucket, manage in .env file|
|Uses Disqus API [https://disqus.com/api/docs/] for Comments, manage in .env file|
|Custom Front End and Backend Styling in Place|
|Front End CSS Built with LESS Compiler, manage in gulpfile|
|Backend Built on SCSS Compiler (LESS Available), manage in gulpfile|
|Uses Composer and Bowser to manage functional assets, composer.json and bower.json|
|Compiles, Combines, and Minifies LESS and SCSS with GULP, manage in gulpfile|
|Optionally Manage front-end assets with GULP, gulpfile|
|Combines and Minifies JS with GULP, gulpfile|
|Uses MVC structure to build front and back end|
|Uses Artisan to manage database migration, schema creations, and create/publish page controller templates|
|Uses Laravel Blade Template System and Syntax for front and back end|
|Easily Manage SQL connection all API connections in .env file|
|Connect Social Media in .env file|
|Manual CLI User Creation|
|Manual CLI User MD5 Encrypted Password Creation|
|Tag manager|
|Asset/Upload Manager|
|Posts Manager with Search, sort, edit, view, pagination, and results limit filter|
|Post Editor using CKEditer 4.5.3 API|
|Post Publish Date, Publish Time, Draft Status, and Private Status Control|
|Posts Automatically Generate RSS XML Feed/Page|
|Posts Use Rainbow.js for displaying code|
|All Page Hero’s are Parallax|
|Contact Page with contact form, custom Error Messages and CSS Animation|
|Can use Mailgun API or PHP mail() function to send email, managed in .env file|
|Custom Catch All 404 Page|
|About Page|
|Automatically Generates sitemap.xml file of published posts and public pages|
|Completely Open Source with MIT License Included|

## [Laravel](http://laravel.com/) PHP Framework

[![Build Status](https://travis-ci.org/laravel/framework.png)](https://travis-ci.org/laravel/framework) [![Latest Stable Version](https://poser.pugx.org/laravel/framework/version.png)](https://packagist.org/packages/laravel/framework) [![Total Downloads](https://poser.pugx.org/laravel/framework/d/total.png)](https://packagist.org/packages/laravel/framework) [![License](https://poser.pugx.org/laravel/framework/license.svg)](https://packagist.org/packages/laravel/framework)

Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable, creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as authentication, routing, sessions, and caching.

Laravel aims to make the development process a pleasing one for the developer without sacrificing application functionality. Happy developers make the best code. To this end, we've attempted to combine the very best of what we have seen in other web frameworks, including frameworks implemented in other languages, such as Ruby on Rails, ASP.NET MVC, and Sinatra.

Laravel is accessible, yet powerful, providing powerful tools needed for large, robust applications. A superb inversion of control container, expressive migration system, and tightly integrated unit testing support give you the tools you need to build any application with which you are tasked.

### Official Laravel Documentation

Documentation for the entire framework can be found on the [Laravel website](http://laravel.com/docs).

### Contributing To Laravel

**All Laravel Framework related issues and pull requests should be filed on the [laravel/framework](http://github.com/laravel/framework) repository.**

### Laravel License

The Laravel framework is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)

## [Bootstrap](http://getbootstrap.com) Front-End Framework

[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap) ![Bower version](https://img.shields.io/bower/v/bootstrap.svg) [![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap) [![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies) [![License](https://poser.pugx.org/laravel/framework/license.svg)](https://packagist.org/packages/laravel/framework)

Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.

[Bootstrap](http://getbootstrap.com)'s documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at [<http://getbootstrap.com>](http://getbootstrap.com).

## [Larablog](https://larablog.io)

[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
[![License](https://poser.pugx.org/laravel/framework/license.svg)](https://packagist.org/packages/laravel/framework)

### Quick Project Setup
1. Run `sudo git clone https://github.com/jeremykenedy/larablog.git larablog`
2. Run `composer update` from the projects root folder
3. From the projects root run `cp .env.example .env`
4. Configure your .env file
5. From the projects root run `cp /config/blog.example.php /config/blog.php`
6. Configure your blog.php file.
7. From the projects root run `php artisan migrate`
8. From the projects root run `sudo chmod -R 777 ../larablog`
9. Go to your browser and refresh the projects page.
10. From the projects root run `sudo chmod -R 755 ../larablog`
11. Create your admin user using `sudo php artisan tinker`
     * Below are the steps for using `php artisan tinker` to create the admin user:
```
	~/Code/larablog php artisan tinker
	Psy Shell v0.4.3 (PHP 5.6.7-1+deb.sury.org~utopic+1 — cli) by Justin Hileman
	>>> $user = new App\User;
	=> <App\User #000000007543b78f0000000009f4a1ca> {}
	>>> $user->name = 'Your Name';
	=> "Your Name"
	>>> $user->email =<EMAIL_ADDRESS>	=><EMAIL_ADDRESS>	>>> $user->password = bcrypt('YOUR PASSWORD');
	=> "fgkdjfgjfsdlgkjdkortjk&jkrjdskljr54$kfdkgjkdfjgkjkgjdfkgjlkfd"
	>>> $user->save();
	=> true
	>>> exit;
```

### Commonly Used Folders and Files Structure
```
larablog/
   ├── app/
   │   ├── Http/
   │   │   ├── Controllers/
   │   │   │   ├── Admin/
   │   │   │   │   ├── PostController.php
   │   │   │   │   ├── TagController.php
   │   │   │   │   └── UploadController.php
   │   │   │   ├── Auth/
   │   │   │   │   ├── AuthController.php
   │   │   │   │   └── PasswordController.php
   │   │   │   ├── BlogController.php
   │   │   │   ├── ContactController.php
   │   │   │   └── Controller.php
   │   │   ├── Requests/
   │   │   │   ├── ContactMeRequest.php
   │   │   │   ├── PostCreateRequest.php
   │   │   │   ├── PostUpdateRequest.php
   │   │   │   ├── Request.php
   │   │   │   ├── TagCreateRequest.php
   │   │   │   ├── TagUpdateRequest.php
   │   │   │   ├── UploadFileRequest.php
   │   │   │   └── UploadNewFolderRequest.php
   │   │   ├── Jobs/
   │   │   │   ├── BlogIndexData.php
   │   │   │   ├── Job.php
   │   │   │   ├── PostFormFields.php
   │   │   │   └── TestJob.php
   │   │   ├── Services/
   │   │   │   ├── Markdowner.php
   │   │   │   ├── RssFeed.php
   │   │   │   ├── SiteMap.php
   │   │   │   └── UploadsManager.php
   │   │   └── routes.php
   │   ├── Post.php
   │   ├── Tag.php
   │   ├── User.php
   │   └── helpers.php
   ├── config/
   │   ├── app.php
   │   ├── auth.php
   │   ├── blog.php
   │   ├── database.php
   │   ├── filesystems.php
   │   ├── mail.php
   │   ├── queue.php
   │   ├── services.php
   │   ├── session.php
   │   └── view.php
   ├──
   │   ├──
   │   │	├──
   │   │   │   ├──
   │   │   │   │   ├──
   │   │   │   │   │   ├──
   │   │   │   │   │   │   ├──
   │   │   │   │   │   │   │   └──
   │   │   │   │   │   │   └──
   │   │   │   │   │   └──
   │   │   │   │   └──
   │   │   │   └──
   │   │   └──
   │   └──
   ├──
   └──
```

## Other Very Usefull Information

### Vagrant Dev Environment

## Start Vagrant

|Command        |Action
|:------------- |:-------------|
| `vagrant up` | Start Vagrant VM |
| `vagrant up --provision` | Start Vagrant VM if vagrantfile updated |
| `vagrant halt` | Stop Vagrant VM |

## Access Vagrant SSH and MySQL
|Command        |Action      |
|:------------- |:------------- |
| ```sudo ssh<EMAIL_ADDRESS>-p 222``` | Access Vagrant VM via SSH. Password is ``` vagrant  ``` |
| ```mysql -u homestead -ppassword``` | Access Vagrant VM MySQL. Password is ``` vagrant  ``` |

### GULP Asset Processing Commands

####
GULP settings and asset management setting can be found in file:
```
gulpfile.js
```

#### Compile Less/Sass command:
```
sudo gulp
```

#### Pull listed GULP assets command:
```
sudo gulp copyfile
```

## How to Make a new page
#### Create about page as Example:

##### 1. From the projects root folder create the controller with Artisan:
```
	php artisan make:controller --plain TheNameOfYourController
```

##### 2. Edit the NAV in: `/resources/views/blog/partials/page-nav.blade.php`

###### i. Add the following to the NAV:
```
	<li>
	  <a href="/about">About</a>
	</li>
```

###### ii.  The content of `/resources/views/blog/partials/page-nav.blade.php` will now look like:

```
	{{-- Navigation --}}
	<nav class="navbar navbar-default navbar-custom navbar-fixed-top">
	  <div class="container">
	    {{-- Brand and toggle get grouped for better mobile display --}}
	    <div class="navbar-header page-scroll">
	      <button type="button" class="navbar-toggle" data-toggle="collapse"
	      data-target="#navbar-main">
	      <span class="sr-only">Toggle navigation</span>
	      <span class="icon-bar"></span>
	      <span class="icon-bar"></span>
	      <span class="icon-bar"></span>
	      </button>
	      <a class="navbar-brand" href="/">{{ config('blog.name') }}</a>
	    </div>
	    {{-- Collect the nav links, forms, and other content for toggling --}}
	    <div class="collapse navbar-collapse" id="navbar-main">
	      <ul class="nav navbar-nav">
	        <li>
	          <a href="/">Home</a>
	        </li>
	      </ul>
	      <ul class="nav navbar-nav navbar-right">
	        <li>
	          <a href="/about">About</a>
	        </li>
	        <li>
	          <a href="/contact">Contact</a>
	        </li>
	        @if (Auth::guest())
	        @else
	        <li class="dropdown ">
	          <a href="/admin/post" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
	            Hi {{ Auth::user()->name }}!
	            <span class="caret"></span>
	          </a>
	          <ul class="dropdown-menu">
	            <li @if (Request::is('admin/post*')) class="active" @endif>
	              <a href="/admin/post">Posts</a>
	            </li>
	            <li role="separator" class="divider"></li>
	            <li @if (Request::is('admin/tag*')) class="active" @endif>
	              <a href="/admin/tag">Tags</a>
	            </li>
	            <li role="separator" class="divider"></li>
	            <li @if (Request::is('admin/upload*')) class="active" @endif>
	              <a href="/admin/upload">Uploads</a>
	            </li>
	            <li role="separator" class="divider"></li>
	            <li><a href="/auth/logout">Logout</a></li>
	          </ul>
	        </li>
	        @endif
	      </ul>
	    </div>
	  </div>
	</nav>
```

##### 3. Edit the ROUTES in: /app/Http/routes.php

###### i. After the following line:
```
get('blog/{slug}', 'BlogController@showPost');
```

####### a. Add the following TWO lines:

```
	$router->get('about', 'AboutController@showView');
```

##### 4.  Create the CONTROLLER using ARTISAN with the following command:
```
php artisan make:controller --plain AboutController
```
##### 5. Replace Content of `/app/Http/Controllers/AboutController.php` with :

```
	<?php

	namespace App\Http\Controllers;

	use App\Http\Requests\ContactMeRequest;
	use Illuminate\Support\Facades\Mail;
	use App\Services\SiteMap;

	class AboutController extends Controller
	{
	  /**
	   * Show the Page
	   *
	   * @return View
	   */
	  public function showView()
	  {
	    return view('blog.layouts.about');
	  }
	}
```

##### 6. Create `about.blade.php` in the `/resources/views/blog/layouts` directory.

##### 7. Replace Content of `/resources/views/blog/layouts/about.blade.php` with :

```
	@extends('blog.layouts.master', ['meta_description' => 'About Me'])
	@section('page-header')
	<header class="intro-header parallax-window" data-parallax="scroll" data-image-src="{{ page_image('backgrounds/about-bg.jpg') }}" >
	    <div class="container">
	        <div class="row">
	            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
	                <div class="page-heading">
	                    <h1>
	                        About Me
	                    </h1>
	                    <hr class="small">
	                    <span class="subheading">
	                        This is what I do.
	                    </span>
	                </div>
	            </div>
	        </div>
	    </div>
	</header>
	@stop
	@section('content')
	<!-- Main Content -->
	<div class="container">
	    <div class="row">
	        <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
	            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.  Eius praesentium recusandae illo eaque architecto error, repellendus iusto reprehenderit, doloribus, minus sunt. Numquam at quae voluptatum in officia voluptas voluptatibus, minus!</p>
	            <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nostrum molestiae debitis nobis, quod sapiente qui voluptatum, placeat magni repudiandae accusantium fugit quas labore non rerum possimus, corrupti enim modi! Et.</p>
	        </div>
	    </div>
	</div>
	<hr>
	@endsection

```
##### 8.  Test by going to the `http://yourprojectURI/about`.
##### 9.  Complete.

## Mail Commands #
### Show Queued Mail
```
php artisan queue:work
```

### Actively Listen for mail
```
queue:listen
```

### Automate Mail
Running `queue:listen` with supervisord
supervisord is a *nix utility to monitor and control processes. We’re not delving into how to install this utility, but if you have it and get it installed, below is a portion of /etc/supervisord.conf that works well.
```
Portion of supervisord.conf for queue:listen
[program:larablog-queue-listen]
command=php /PATH/TO/l5beauty/artisan queue:listen
user=NONROOT-USER
process_name=%(program_name)s_%(process_num)d
directory=/PATH/TO/l5beauty
stdout_logfile=/PATH/TO/l5beauty/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1
```

##### You'll need to replace the /PATH/TO/ to match your local install. Likewise, the user setting will be unique to your installation.

###### 1. Access and edit the systems CRON with the following command:
```
crontab -e
```
###### 2. Add the following to your CRON file:
```
* * * * * php /path/to/artisan schedule:run 1>> /dev/null 2>&1
```
###### 3. Intialize and test Laravel mail with your version of the following command:
```
php artisan make:job --queued TestJob
```

### Contributing To Larablog

**All Larablog issues and pull requests should be filed on the [jeremykenedy/larablog](http://github.com/jeremykenedy/larablog) repository.**

### Larablog License

The Larablog framework is open-sourced software licensed under the [MIT license](http://opensource.org/licenses/MIT)

## Running To Do List:

* Change page content to be pulled from database.
* Add controller, methods, and view for editing page in admin panel.
* Add managed page functionality to admin.
* Add Avatar
* Add GA
* Add GA Tracking
* Add GA admin functionality.
* Add GA tracking admin functionality.
* Add Homepage content to database.
* Add Homepage editing functionality to admin.

## ~~Bugs~~ Features
* Parallax background will not render until page width is touched, most likely js conflict.
* Z-Index of front end user dropdown not correct and links un-clickable.

## Enjoy

### ~ Jeremy


text:
---
title: Custom Controls
---

Custom Controls

A com.jme3.scene.control.Control is a customizable jME3 interface that allows you to cleanly steer the behaviour of game entities (Spatials), such as artificially intelligent behaviour in NPCs, traps, automatic alarms and doors, animals and pets, self-steering vehicles or platforms – anything that moves and interacts. Several instances of custom Controls together implement the behaviours of a type of Spatial.

To control global game behaviour see Application States – you often use AppStates and Control together.

 Quick video introduction to Custom Controls

To control the behaviour of spatials:

 Create one control for each type of behavior. When you add several controls to one spatial, they will be executed in the order they were added.

For example, one NPC can be controlled by a PhysicsControl instance and an AIControl instance.

 Define the custom control and implement its behaviour in the Control's update method:

 You can pass arguments into your custom control.

 In the control class, the object spatial gives you access to the spatial and subspatials that the control is attached to.

 Here you modify the spatial's transformation (move, scale, rotate), play animations, check its environement, define how it acts and reacts.

 Add an instance of the Control to a spatial to give it this behavior. The spatial's game state is updated automatically from now on.
spatial.addControl(myControl);

To implement game logic for a type of spatial, you will either extend AbstractControl (most common case), or implement the Control interface, as explained in this article.

Usage

Use Controls to implement the behaviour of types of game entities.

 Use Controls to add a type of behaviour (that is, methods and fields) to individual Spatials.

 Each Control has its own update() loop that hooks into simpleUpdate(). Use Controls to move blocks of code out of the simpleUpdate() loop.

 One Spatial can be influenced by several Controls. (Very powerful and modular!)

 Each Spatial needs its own instance of the Control.

 A Control only has access to and control over the Spatial it is attached to.

 Controls can be saved as .j3o file together with a Spatial.

Examples: You can write

 A WalkerNavControl, SwimmerNavControl, FlyerNavControl… that defines how a type of NPC finds their way around. All NPCs can walk, some can fly, others can swim, and some can all three, etc.

 A PlayerNavControl that is steered by user-configurable keyboard and mouse input.

 A generic animation control that acts as a common interface that triggers animations (walk, stand, attack, defend) for various entities.

 A DefensiveBehaviourControl that remote-controls NPC behaviour in fight situations.

 An IdleBehaviourControl that remote-controls NPC behaviour in neutral situations.

 A DestructionControl that automatically replaces a structure with an appropriate piece of debris after collision with a projectile…

The possibilities are endless.

Example Code

Other examples include the built-in RigidBodyControl in JME's physics integration, the built-in TerrainLODControl that updates the terrain's level of detail depending on the viewer's perspective, etc.

Existing examples in the code base include:

 AnimControl.java allows manipulation of skeletal animation, including blending and multiple channels.

 CameraControl.java allows you to sync the camera position with the position of a given spatial.

 BillboardControl.java displays a flat picture orthogonally, e.g. a speech bubble or informational dialog.

 PhysicsControl subclasses (such as CharacterControl, RigidBodyControl, VehicleControl) allow you to add physical properties to any spatial. PhysicsControls tie into capabilities provided by the BulletAppState.

AbstractControl Class

The most common way to create a Control is to create a class that extends AbstractControl.

The AbstractControl can be found under com.jme3.scene.control.AbstractControl. This is a default abstract class that implements the Control interface.

 You have access to a boolean isEnabled().

 You have access to the Spatial object spatial.

 You override the controlUpdate() method to implement the Spatial's behaviour.

 You have access to a setEnabled(boolean) method. This activates or deactivates this Control's behaviour in this spatial temporarily. While the AbstractControl is toggled to be disabled, the controlUpdate() loop is no longer executed.

For example, you disable your IdleBehaviourControl when you enable your DefensiveBehaviourControl in a spatial.

Usage: Your custom subclass implements the three methods controlUpdate(), controlRender(), setSpatial(), and cloneForSpatial() as shown here:

public class MyControl extends AbstractControl implements Savable, Cloneable {
  private int index; // can have custom fields -- example

  public MyControl(){} // empty serialization constructor

  /** Optional custom constructor with arguments that can init custom fields.
    * Note: you cannot modify the spatial here yet! */
  public MyControl(int i){
    // index=i; // example
  }

  /** This method is called when the control is added to the spatial,
    * and when the control is removed from the spatial (setting a null value).
    * It can be used for both initialization and cleanup. */
  @Override
  public void setSpatial(Spatial spatial) {
    super.setSpatial(spatial);
    /* Example:
    if (spatial != null){
        // initialize
    }else{
        // cleanup
    }
    */
  }

  /** Implement your spatial's behaviour here.
    * From here you can modify the scene graph and the spatial
    * (transform them, get and set userdata, etc).
    * This loop controls the spatial while the Control is enabled. */
  @Override
  protected void controlUpdate(float tpf){
    if(spatial != null) {
      // spatial.rotate(tpf,tpf,tpf); // example behaviour
    }
  }

  @Override
  public Control cloneForSpatial(Spatial spatial){
    final MyControl control = new MyControl();
    /* Optional: use setters to copy userdata into the cloned control */
    // control.setIndex(i); // example
    control.setSpatial(spatial);
    return control;
  }

  @Override
  protected void controlRender(RenderManager rm, ViewPort vp){
     /* Optional: rendering manipulation (for advanced users) */
  }

  @Override
  public void read(JmeImporter im) throws IOException {
      super.read(im);
      // im.getCapsule(this).read(...);
  }

  @Override
  public void write(JmeExporter ex) throws IOException {
      super.write(ex);
      // ex.getCapsule(this).write(...);
  }

}

See also:

 To learn more about write() and read(), see Save and Load

 To learn more about setUserData(), see Spatial.

The Control Interface

In the less common case that you want to create a Control that also extends another class, create a custom interface that  extends jME3's Control interface. Your class can become a Control by implementing the Control interface, and at the same time extending another class.

The Control interface can be found under com.jme3.scene.control.Control. It has the following method signatures:

 cloneForSpatial(Spatial): Clones the Control and attaches it to a clone of the given Spatial.

Implement this method to be able to save() and load() Spatials carrying this Control.

The AssetManager also uses this method if the same spatial is loaded twice. You can specify which fields you want your object to reuse (e.g. collisionshapes) in this case.

 setEnabled(boolean): Toggles a boolean that enables or disables the Control. Goes with accessor isEnabled();. You test for it in the update(float tpf) loop before you execute anything.

 There are also some internal methods that you do not call from user code: setSpatial(Spatial s), update(float tpf);, render(RenderManager rm, ViewPort vp).

Usage example:
1. Create a custom control interface

public interface MyControlInterface extends Control {
    public void setSomething(int x); // optionally, add custom methods
}

2.  EDIT5 SECTION "The Control Interface" [7584-10841] -->

Best Practices

Tip: Use the getControl() accessor to get Control objects from Spatials. No need to pass around lots of object references.
Here an example from the MonkeyZone code:

public class CharacterAnimControl implements Control {
  ...
  public void setSpatial(Spatial spatial) {
    ...
    animControl      = spatial.getControl(AnimControl.class);
    characterControl = spatial.getControl(CharacterControl.class);
    ...
  }
}

Tip: You can create custom Control interfaces so a set of different Controls provide the same methods and can be accessed with the interface class type.

public interface ManualControl extends Control {
    public void steerX(float value);
    public void steerY(float value);
    public void moveX(float value);
    public void moveY(float value);
    public void moveZ(float value);
   ...
}

Then you create custom sub-Controls and implement the methods accordingly to the context:

public class ManualVehicleControl   extends ManualControl {...}

 and

public class ManualCharacterControl extends ManualControl {...}

Then add the appropriate controls to spatials:

characterSpatial.addControl(new ManualCharacterControl());
...
vehicleSpatial.addControl(new ManualVehicleControl());
...

Tip: Use the getControl() method on a Spatial to get a specific Control object, and activate its behaviour!

ManualControl c = mySpatial.getControl(ManualControl.class);
c.steerX(steerX);


text:
---
title: 'ANSYS Fluent Tutorial [1] Generating meshes in ICEM (in Chinese)'
date: 2017-06-24
permalink: /posts/2017/06/blog-post-3-tutorial-1/
tags:
  - Urban Microclimate
  - ANSYS Fluent
  - Mesh
  - CFD
---

A tutorial of generating meshes in ANSYS ICEM for Fluent simulations. The document was written in Chinese language.

<iframe src="http://jialeishen.github.io/files/Tutorial-1-ICEM-meshing.pdf" width="100%" height="600px">
</iframe>

[Download tutorial](http://jialeishen.github.io/files/Tutorial-1-ICEM-meshing.pdf)

*Originally posted on [my Github](https://github.com/jialeishen/UDF-of-Urban-Microclimate) on 2017/06/24*

*Posted on this site on 2022/05/08*

gha_language: HTML


text:
# gocontainer
gocontainer contains several optimized container implementations.

* Package databox defines the DataBox type, which can be used to store data to reduce the number of references and memory fragmentation.
* Package ringbuf implements simple ring buffer.
* Package skiplist implements a skip list.
* Package uskiplist implements a skiplist using unsafe operations to minimize memory and references.

Documentation
-------------

- [API Reference](http://godoc.org/github.com/someonegg/gocontainer)

Installation
------------

Install gocontainer using the "go get" command:

    go get github.com/someonegg/gocontainer

The Go distribution is gocontainer's only dependency.

repository: someonegg/gocontainer

gha_language: Go

repo_name: someonegg/gocontainer


text:
---
title: "<netMsmqBinding> | Microsoft Docs"
ms.custom: ""
ms.date: "03/30/2017"
ms.prod: ".net-framework"
ms.reviewer: ""
ms.suite: ""
ms.technology:
  - "dotnet-clr"
ms.tgt_pltfrm: ""
ms.topic: "article"
dev_langs:
  - "VB"
  - "CSharp"
ms.assetid: a68b44d7-7799-43a3-9e63-f07c782810a6
caps.latest.revision: 35
author: "Erikre"
ms.author: "erikre"
manager: "erikre"
---
# <netMsmqBinding>
Defines a queued binding suitable for cross-machine communication.

 \<system.ServiceModel>
\<bindings>
\<netMsmqBinding>

## Syntax

```

<netMsmqBinding>
    <binding
       closeTimeout="TimeSpan"
       customDeadLetterQueue="Uri"
       deadLetterQueue="Uri"
       durable="Boolean"
       exactlyOnce="Boolean"
       maxBufferPoolSize="Integer"
       maxReceivedMessageSize"Integer"
       maxRetryCycles="Integer"
       name="string"
       openTimeout="TimeSpan"
       poisonMessageHandling="Disabled/EnabledIfSupported"
       queueTransferProtocol="Native/Srmp/SrmpSecure"
       receiveErrorHandling="Drop/Fault/Move/Reject"
       receiveTimeout="TimeSpan"
       receiveRetryCount="Integer"
       rejectAfterLastRetry="Boolean"
       retryCycleDelay="TimeSpan"
       sendTimeout="TimeSpan"
       timeToLive="TimeSpan"
       useActiveDirectory="Boolean"
       useMsmqTracing="Boolean
       useSourceJournal="Boolean"
          <security>
                  <message
                        algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15"
            clientCredentialType="None/Windows/UserName/Certificate/InfoCard "/>
                  <transport msmqAuthenticationMode="None/WindowsDomain/Certificate"
            msmqEncryptionAlgorithm="RC4Stream/AES"
            msmqProtectionLevel="None/Sign/EncryptAndSign"
            msmqSecureHashAlgorithm="MD5/SHA1/SHA256/SHA512" />
          </security>
       <readerQuotas             maxArrayLength="Integer"            maxBytesPerRead="Integer"            maxDepth="Integer"             maxNameTableCharCount="Integer"                     maxStringContentLength="Integer" />   </binding></netMsmqBinding>
```

## Attributes and Elements
 The following sections describe attributes, child elements, and parent elements.

### Attributes

|Attribute|Description|
|---------------|-----------------|
|`closeTimeout`|A <xref:System.TimeSpan> value that specifies the interval of time provided for a close operation to complete. This value should be greater than or equal to <xref:System.TimeSpan.Zero>. The default is 00:01:00.|
|`customDeadLetterQueue`|A URI that contains the location of the per-application dead letter queue, where messages that have expired or that have failed transfer or delivery are placed.

 The dead letter queue is a queue on the queue manager of the sending application for expired messages that have failed to be delivered.

 The URI that is specified by <xref:System.ServiceModel.MsmqBindingBase.CustomDeadLetterQueue%2A> must use the net.msmq scheme.|
|`deadLetterQueue`|A <xref:System.ServiceModel.MsmqBindingBase.DeadLetterQueue%2A> value specifying which type of dead-letter queue to use, if any.

 A dead-letter queue is the place where messages that have failed to be delivered to the application will be transferred.

 For messages that require `exactlyOnce` assurance (that is, the `exactlyOnce` attribute is set to `true`), this attribute defaults to the system-wide transactional dead-letter queue in MSMQ.

 For messages that require no assurances, this attribute defaults to `null`.|
|`durable`|A Boolean value that indicates whether the message is durable or volatile in the queue. A durable message survives a queue manager crash, while a volatile message does not. Volatile messages are useful when applications require lower latency and can tolerate occasional lost messages. If the `exactlyOnce` attribute is set to `true`, the messages must be durable. The default is `true`.|
|`exactlyOnce`|A Boolean value that indicates whether each message processed by this binding is delivered only once. The sender will then be notified of delivery failures. When `durable` is `false`, this attribute is ignored and messages are transferred without delivery assurance. The default is `true`. For more information, see <xref:System.ServiceModel.MsmqBindingBase.ExactlyOnce%2A>.|
|`maxBufferPoolSize`|An integer that specifies the maximum buffer pool size for this binding. The default is 8.|
|`maxReceivedMessageSize`|A positive integer that defines the maximum message size, in bytes, including headers, that is processed by this binding. The sender of a message exceeding this limit will receive a SOAP fault. The receiver drops the message and creates an entry of the event in the trace log. The default is 65536. This bound on message size is intended to limit exposure to Denial of Service (DoS) attacks.|
|`maxRetryCycles`|An integer that indicates the number of retry cycles used by the poison-message detection feature. A message becomes a poison message when it fails all delivery attempts of all cycles. The default is 3. For more information, see <xref:System.ServiceModel.MsmqBindingBase.MaxRetryCycles%2A>.|
|`name`|Required attribute. A string that contains the configuration name of the binding. This value should be unique because it is used as an identification for the binding. Starting with [!INCLUDE[netfx40_short](../../../../../includes/netfx40-short-md.md)], bindings and behaviors are not required to have a name. For more information about default configuration and nameless bindings and behaviors, see [Simplified Configuration](../../../../../docs/framework/wcf/simplified-configuration.md) and [Simplified Configuration for WCF Services](../../../../../docs/framework/wcf/samples/simplified-configuration-for-wcf-services.md).|
|`openTimeout`|A <xref:System.TimeSpan> value that specifies the interval of time provided for an open operation to complete. This value should be greater than or equal to <xref:System.TimeSpan.Zero>. The default is 00:01:00.|
|`QueueTransferProtocol`|A valid <xref:System.ServiceModel.QueueTransferProtocol> value that specifies the queued communication channel transport that this binding uses. MSMQ does not support Active Directory addressing when using SOAP Reliable Messaging Protocol. Therefore, you should not set this attribute to `Srmp` or `Srmps` when the `u``seActiveDirectory` attribute is set to `true`.|
|`receiveErrorHandling`|A <xref:System.ServiceModel.ReceiveErrorHandling> value that specifies how poison and nondispatchable messages are handled.|
|`receiveRetryCount`|An integer that specifies the maximum number of times the queue manager should attempt to send a message before transferring it to the retry queue.|
|`receiveTimeout`|A <xref:System.TimeSpan> value that specifies the interval of time provided for a receive operation to complete. This value should be greater than or equal to <xref:System.TimeSpan.Zero>. The default is 00:10:00.|
|`retryCycleDelay`|A TimeSpan value that specifies the time delay between retry cycles when attempting to deliver a message that could not be delivered immediately. The value defines only the minimum wait time because actual wait time can be longer. The default value is 00:10:00. For more information, see <xref:System.ServiceModel.MsmqBindingBase.RetryCycleDelay%2A>.|
|`sendTimeout`|A <xref:System.TimeSpan> value that specifies the interval of time provided for a send operation to complete. This value should be greater than or equal to <xref:System.TimeSpan.Zero>. The default is 00:01:00.|
|`timeToLive`|A TimeSpan value that specifies how long the messages are valid before they are expired and put into the dead-letter queue. The default is 1.00:00:00.

 This attribute is set to ensure that time-sensitive messages do not become stale before they are processed by the receiving applications. A message in a queue that is not consumed by the receiving application within the time interval specified is said to be expired. Expired messages are sent to special queue called the dead letter queue. The location of the dead letter queue is set with the `DeadLetterQueue` attribute or to the appropriate default, based on assurances.|
|`usingActiveDirectory`|A Boolean value that specifies if queue addresses should be converted using Active Directory.

 MSMQ queue addresses can consist of path names or direct format names. With a direct format name, MSMQ resolves the computer name using DNS, NetBIOS or IP. With a path name, MSMQ resolves the computer name using Active Directory.

 By default, [!INCLUDE[indigo1](../../../../../includes/indigo1-md.md)] queued transport converts the URI of a message queue to a direct format name. By setting the `UseActiveDirectory` property to true, an application can specify that the queued transport should resolve the computer name using Active Directory rather than DNS, NetBIOS, or IP.|
|`useMsmqTracing`|A Boolean value that specifies whether messages processed by this binding should be traced. The default is `false`. When tracing is enabled, report messages are created and sent to the report queue each time the message leaves or arrives at a Message Queuing computer.|
|`useSourceJournal`|A Boolean value that specifies copies of messages processed by this binding should be stored in the source journal. The default is `false`.

 Queued applications that want to keep a record of messages that have left the computer's outgoing queue can copy the messages to a journal queue. Once a message leaves the outgoing queue and an acknowledgment is received that the message was received on the destination computer, a copy of the message is kept in the sending computer's system journal queue.|

### Child Elements

|Element|Description|
|-------------|-----------------|
|[\<readerQuotas>](http://msdn.microsoft.com/library/3e5e42ff-cef8-478f-bf14-034449239bfd)|Defines the constraints on the complexity of SOAP messages that can be processed by endpoints configured with this binding. This element is of type <xref:System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement>.|
|[\<security>](../../../../../docs/framework/configure-apps/file-schema/wcf/security-of-netmsmqbinding.md)|Defines the security settings for the binding. This element is of type <xref:System.ServiceModel.Configuration.NetMsmqSecurityElement>.|

### Parent Elements

|Element|Description|
|-------------|-----------------|
|[\<bindings>](../../../../../docs/framework/configure-apps/file-schema/wcf/bindings.md)|This element holds a collection of standard and custom bindings.|

## Remarks
 The `netMsmqBinding` binding provides support for queuing by leveraging Microsoft Message Queuing (MSMQ) as a transport and enables support for loosely coupled applications, failure isolation, load leveling and disconnected operations. For a discussion of these features, see [Queues in WCF](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md).

## Example

```
<configuration>
<system.ServiceModel>
    <bindings>
           <netMsmqBinding>
                <binding
                         closeTimeout="00:00:10"
                         openTimeout="00:00:20"
                         receiveTimeout="00:00:30"
                         sendTimeout="00:00:40"
                         deadLetterQueue="net.msmq://localhost/blah"
                         durable="true"
                         exactlyOnce="true"
                         maxReceivedMessageSize="1000"
                         maxRetries="11"
                         maxRetryCycles="12"
                         poisonMessageHandling="Disabled"
                         rejectAfterLastRetry="false"
                         retryCycleDelay="00:05:55"
                         timeToLive="00:11:11"
                         sourceJournal="true"
                         useMsmqTracing="true"
                         useActiveDirectory="true">
                         <security>
                             <message clientCredentialType="Windows" />
                         </security>
            </netMsmqBinding>
    </bindings>
</system.ServiceModel>
</configuration>
```

## See Also
 <xref:System.ServiceModel.NetMsmqBinding>
 <xref:System.ServiceModel.Configuration.NetMsmqBindingElement>
 [\<binding>](../../../../../docs/framework/misc/binding.md)
 [Bindings](../../../../../docs/framework/wcf/bindings.md)
 [Configuring System-Provided Bindings](../../../../../docs/framework/wcf/feature-details/configuring-system-provided-bindings.md)
 [Using Bindings to Configure Windows Communication Foundation Services and Clients](http://msdn.microsoft.com/en-us/bd8b277b-932f-472f-a42a-b02bb5257dfb)
 [Queues in WCF](../../../../../docs/framework/wcf/feature-details/queues-in-wcf.md)


text:
# `yale`
Are you a Yale student? Do you just not feel self-righteous enough?  Do you spend all day in iTerm and `tmux` and exclusively edit files in `vim`? Does your `.vimrc` have more lines than you've been on dates? Then `yale` is the tool for you.

![Screenshot](screenshot.png) (TODO)

## Installation
From the `yale` directory, run:
```sh
make install
```
for a full installation.

Alternatively, if you're working on `yale` in a development environment, you may wish to symlink the executable for ease of testing:
```sh
make link
```
To uninstall:
```sh
make uninstall
```
Any of these commands may require root privileges depending on your environment. However, since this is no longer high school, that shouldn't be a problem, right?

## Use
TODO

## Configuration
At first run, your credentials will be requested and saved to `~/.psc_credentials.yml`. Other configuration options will populate `~/.psc.yml`, and may be tweaked as desired.

## License
[MIT](LICENSE)

## Author
Created by [Erik Boesen](https://github.com/ErikBoesen) '23. Partially inspired by [cornell-cli](https://github.com/mrkev/cornell).

repository: ErikBoesen/yale

repo_name: ErikBoesen/yale


text:
# Nginx Resources [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

A collection of resources covering Nginx, Nginx + Lua, OpenResty and Tengine.

This list is maintained by [Frederic Cambus](https://www.cambus.net). For updates, follow me on Twitter: [@fcambus](https://twitter.com/fcambus)

## Understanding Nginx

- [History of Nginx](https://www.nginx.com/wp-content/uploads/2014/11/Infographic_History-of-Nginx_FulI_20141101.png)
- [Understanding Nginx versioning](https://www.nginx.com/blog/nginx-1-6-1-7-released/)
- [Interview with the creator of Nginx](https://web.archive.org/web/20180614224054/http://mindend.com/interview-with-the-creator-of-nginx/)
- [Interview with Igor Sysoev, author of Apache's competitor NGINX](http://freesoftwaremagazine.com/articles/interview_igor_sysoev_author_apaches_competitor_nginx/)
- [The case for Nginx in front of application servers](https://www.cambus.net/the-case-for-nginx-in-front-of-application-servers/)
- [Nginx Optimization: understanding sendfile, tcp_nodelay and tcp_nopush](https://thoughts.t37.net/nginx-optimization-understanding-sendfile-tcp-nodelay-and-tcp-nopush-c55cdd276765)

## Architecture

- [The Architecture of Open Source Applications (Volume 2): nginx](https://aosabook.org/en/nginx.html)
- [Nginx Guts - Shedding light on Nginx internals](http://www.nginxguts.com/category/nginx/)
- [Nginx discovery journey](https://www.nginx-discovery.com/)
- [Nginx Internals](https://www.slideshare.net/joshzhu/nginx-internals)
- [Inside NGINX: How We Designed for Performance & Scale](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/)
- [Thread Pools in NGINX](https://www.nginx.com/blog/thread-pools-boost-performance-9x/)

## Configuration

- [Beginner's Guide](https://nginx.org/en/docs/beginners_guide.html)
- [Alphabetical index of variables](https://nginx.org/en/docs/varindex.html)
- [Nginx Pitfalls](https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/)
- [Useful Rewrites for Nginx](https://blog.engineyard.com/useful-rewrites-for-nginx)
- [Nginx Configuration Primer](https://blog.martinfjordvald.com/nginx-primer/)
- [Nginx Primer 2: From Apache to Nginx](https://blog.martinfjordvald.com/nginx-primer-2-from-apache-to-nginx/)
- [Understanding the Nginx Configuration Inheritance Model](https://blog.martinfjordvald.com/understanding-the-nginx-configuration-inheritance-model/)
- [Nginx HTTP server boilerplate configs](https://github.com/h5bp/server-configs-nginx)
- [Nginx Boilerplate - Configuration template and a set of handy must-have snippets](https://github.com/nginx-boilerplate/nginx-boilerplate)
- [How to Configure OCSP Stapling in Apache and Nginx](https://sslmate.com/blog/post/ocsp_stapling_in_apache_and_nginx)
- [NGINX Config - Online nginx configuration generator](https://www.digitalocean.com/community/tools/nginx)
- [Nice nginx features for developers](https://alex.dzyoba.com/blog/nginx-features-for-developers/)
- [Nice nginx features for operators](https://alex.dzyoba.com/blog/nginx-features-for-operators/)
- [Avoiding the Top 10 NGINX Configuration Mistakes](https://www.nginx.com/blog/avoiding-top-10-nginx-configuration-mistakes/)
- [Gixy - Nginx configuration static analyzer](https://github.com/yandex/gixy)
- [Nginx common configuration - Universal config and snippets](https://github.com/tldr-devops/nginx-common-configuration)

## Tutorials

- [NGINX and NGINX Plus Admin Guide](https://docs.nginx.com/nginx/admin-guide/)
- [agentzh's Nginx Tutorials](https://openresty.org/download/agentzh-nginx-tutorials-en.html) ([Source](https://github.com/openresty/nginx-tutorials))
- [Introduction to nginx.conf scripting](https://agentzh.org/misc/slides/nginx-conf-scripting/nginx-conf-scripting.html)
- [Load Balancing with NGINX and NGINX Plus](https://www.nginx.com/blog/load-balancing-with-nginx-plus/) ([Part 2](https://www.nginx.com/blog/load-balancing-with-nginx-plus-part-2/))
- [Optimizing Nginx for High Traffic Loads](https://blog.martinfjordvald.com/optimizing-nginx-for-high-traffic-loads/)
- [NGINX as a WebSockets Proxy](https://www.nginx.com/blog/websocket-nginx/)
- [HTTP Keepalive Connections and Web Performance ](https://www.nginx.com/blog/http-keepalives-and-web-performance/)
- [CORS on Nginx](https://enable-cors.org/server_nginx.html)
- [Serving precompressed content with Nginx and Zopfli](https://www.cambus.net/serving-precompressed-content-with-nginx-and-zopfli/)
- [Nginx on FreeBSD](https://www.cambus.net/nginx-on-freebsd/)
- [Using New Debugging Features to Probe NGINX Internals](https://www.nginx.com/blog/new-debugging-features-probe-nginx-internals/)
- [Performing A/B Testing with NGINX and NGINX Plus](https://www.nginx.com/blog/performing-a-b-testing-nginx-plus/)
- [Improving NGINX Performance with Kernel TLS and SSL_sendfile()](https://www.nginx.com/blog/improving-nginx-performance-with-kernel-tls/)

## Modules development

- [Official Development Guide](https://nginx.org/en/docs/dev/development_guide.html)
- [Guide to Nginx Module Development](https://www.evanmiller.org/nginx-modules-guide.html)
- [Advanced Topics In Nginx Module Development](https://www.evanmiller.org/nginx-modules-guide-advanced.html)
- [Developing Nginx Modules](https://www.airpair.com/nginx/extending-nginx-tutorial)

## APIs

- [Telize - JSON IP and GeoIP REST API (IP Geolocation) built on Nginx and Lua](https://www.telize.com)
- [GIN - JSON-API framework](http://gin.io/)
- [Outbound API rate limits: the nginx way](https://www.monterail.com/blog/2011/outbound-api-rate-limits-the-nginx-way)
- [Using Nginx to comply with a third-party API's rate limits](https://vitobotta.com/2014/01/12/nginx-rate-limits/)
- [Simple API with Nginx and PostgreSQL](http://rny.io/nginx/postgresql/2013/07/26/simple-api-with-nginx-and-postgresql.html)
- [Kong - Management Layer for Microservices and APIs](https://konghq.com/kong/)

## Hacks

- [Nginx JSON hacks](https://web.archive.org/web/20140921162448/http://www.gabrielweinberg.com/blog/2011/07/nginx-json-hacks.html)
- [Using Environment Variables In Nginx.conf](https://web.archive.org/web/20170712003702/https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html)
- [Log rotation directly within Nginx configuration file](https://www.cambus.net/log-rotation-directly-within-nginx-configuration-file/)
- [Realtime pixel tracking with Nginx, syslog-ng, and Redis](https://benwilber.github.io/nginx/redis/syslog/pixel-tracking/2013/09/13/realtime-pixel-tracking-with-nginx-syslog-ng-and-redis.html)
- [Dynamic log formats in Nginx](https://benwilber.github.io/nginx/syslog/logging/2015/08/26/dynamic-log-formats-in-nginx.html)
- [Capture and delay unwanted requests](https://github.com/p0pr0ck5/lua-resty-tarpit)
- [Nginx: a caching, thumbnailing, reverse proxying image server?](https://charlesleifer.com/blog/nginx-a-caching-thumbnailing-reverse-proxying-image-server-/)

## Tips

- [Things you didn't know Nginx could do](https://www.slideshare.net/sarahnovotny/5-things-you-didnt-know-nginx-could-do)
- [Finding the nginx gzip_comp_level sweet spot](https://mjanja.ch/2015/03/finding-the-nginx-gzip_comp_level-sweet-spot/)
- [nginx mirroring tips and tricks](https://alex.dzyoba.com/blog/nginx-mirror/)

## Nginx + Lua

- [Nginx, Lua, and beyond](https://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf)
- [Pushing Nginx to its limit with Lua](https://blog.cloudflare.com/pushing-nginx-to-its-limit-with-lua/)
- [Augmenting APIs with Nginx and Lua](https://tech.3scale.net/2013/01/09/augment-your-api-without-touching-it)
- [Adding OAuth Support to Nginx via Lua](https://chairnerd.seatgeek.com/oauth-support-for-nginx-with-lua/)
- [Scripting libdrizzle with Lua inside Nginx](https://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf)
- [Nginx and Lua](https://web.archive.org/web/20141223070856/http://devblog.mixlr.com/2012/09/01/nginx-lua/)
- [Writing an Nginx authentication module in Lua](https://www.stavros.io/posts/writing-an-nginx-authentication-module-in-lua/)
- [Scaling TextRazor in the Cloud with Nginx and Lua](https://www.textrazor.com/blog/2013/03/scaling-textrazor-in-the-cloud-with-nginx-and-lua.html)
- [LSSO - Lua + Nginx SSO System with an OAuth Backend](https://github.com/pirogoeth/lsso)
- [Measuring Nginx Cache Performance using Lua and Redis](https://charlesleifer.com/blog/measuring-nginx-cache-performance-using-lua-and-redis/)
- [nginx-lua - Nginx 1.19+ with LUA support based on Alpine Linux, Amazon Linux, CentOS, Debian, Fedora and Ubuntu.](https://github.com/fabiocicerchia/nginx-lua)

## Nginx + njs
- [njs scripting language reference and examples](https://nginx.org/en/docs/njs/)
- [Collection of njs use cases](https://github.com/f5devcentral/nginx-njs-usecases)
- [JavaScript embedded on NGINX - Getting started with njs](https://www.bluedoa.com/javascript-embedded-on-nginx-getting-started-with-njs/)
- [Create Nginx extensions in JavaScript](https://dev.to/metal3d/create-nginx-extensions-in-javascript-3310)
- [Make your nginx config even more modular and reusable with njs 0.7.7](https://www.nginx.com/blog/make-nginx-config-even-more-modular-reusable-njs-0-7-7/)
- [Diagnostic logging with the NGINX JavaScript module](https://www.nginx.com/blog/diagnostic-logging-nginx-javascript-module/)
- [How to log request headers with NGINX and njs](https://wildwolf.name/how-to-log-request-headers-with-nginx-and-njs/)
- [Using NGINX as an Object Storage Gateway via njs](https://www.nginx.com/blog/using-nginx-as-object-storage-gateway/)
- [Easy HTTPS with NGINX and ACME via njs](https://steinkamp.us/posts/2023-08-10_easy-https-with-nginx)

## OpenResty

- [OpenResty - Fast web app server by extending Nginx](https://openresty.org/en/)
- [Lapis - A web framework for Lua or MoonScript powered by OpenResty](https://leafo.net/lapis/)
- [Nginx image processing server with OpenResty and Lua](https://leafo.net/posts/creating_an_image_server.html)
- [Building an OpenResty events server](https://github.com/cagerton/dropthat/)
- [SysAdvent 2014 - OpenResty, Nginx and Lua](https://sysadvent.blogspot.com/2014/12/day-22-largely-unappreciated.html) ([Source](https://github.com/lusis/sysadvent-2014))
- [OpenResty (Nginx) with dynamically generated certificates](https://blog.dutchcoders.io/openresty-with-dynamic-generated-certificates/)
- [Ceryx - A dynamic reverse proxy](https://ide.sourcelair.com/blog/articles/75/ceryx-dynamic-nginx)
- [An Introduction To OpenResty](https://openmymind.net/An-Introduction-To-OpenResty-Nginx-Lua/)
- [Programming OpenResty (written by the OpenResty creator)](https://openresty.gitbooks.io/programming-openresty/content/)
- [VeryNginx - Nginx distribution which provides WAF, Control Panel, and Dashboards](https://github.com/alexazhou/VeryNginx)

## Tengine

- [Tengine Web Server](https://tengine.taobao.org)
- [Difference between OpenResty and Tengine](https://github.com/openresty/openresty/issues/54)

## Talks

- [NGINX Conference 2019 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXflDvBv642YFqT0UTqQGFsH)
- [NGINX Conference 2018 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXe_Vc708VKvr5KJ4gnf1WxS)
- [NGINX Conference 2017 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXeT-z_rcZ9yF0kV5SENZ-yt)
- [NGINX Conference 2016 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXcOsB_dT26iu0BvbSxWYG1g)
- [NGINX Conference 2015 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXdED9BR6GQ61A6d3fBzjpbn)
- [NGINX Conference 2014 Videos](https://www.youtube.com/playlist?list=PLGz_X9w9raXewvc6tjIGGFZ6DBKHEld3k)
- [NGINX Conference](https://www.nginx.com/nginxconf/)
- [NGINX User Summit 2014 - Lightning talks](https://www.youtube.com/playlist?list=PLGz_X9w9raXfTnRnI6Xl0LMhAKoTVVZv8)

## License

[![CC0](https://licensebuttons.net/p/zero/1.0/88x31.png)](https://creativecommons.org/publicdomain/zero/1.0/)

To the extent possible under law, [Frederic Cambus](https://www.cambus.net) has waived all copyright and related or neighboring rights to this work.

repository: fcambus/nginx-resources

repo_name: fcambus/nginx-resources


text:
# AWS Cloud Formation Best Pratices

_Session was super crowded and I didnt' get in until it was like half way over_

First Demo was super good with [Stack Designer](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/working-with-templates-cfn-designer-walkthrough-createbasicwebserver.html).

## New services added

* Lambda
* Spotfleet (you give size)
* Aurora
* MariaDB
* SimpleAd
* CodeDeploy
* workSpaces

## Cloud formation in organizations
- all resources tagged automatically and then cost seen with stack explorer.
- notifications if this gets expensive
- integrated with cloud trail so you see everything.

## Advanced concepts

Language features
Ref - get ID of resources.

## Extend cloud formation
- non AWS resources.
Events are created when stack is deployed. SNS topic can be created and then worker can deploy external tool.

## Custom resources
ServiceToken will send SNS message to external resource. If it fails the entire stack will fail.

## Lambda backed custom resources.

## Re-using templates acreoss AWS Regions
* different environmental regional differences (EC2 image Ids)
* Endpoint Names
* Amazon Resource Names

### Use pseudo-parameters to retrieve environmental data.
* account Id
* Region
* Stack Name and Id

### Use Mapping to find Resources.

```
Fn::FindInMap":  ...
```
Mappings has a RegionalConfig and then finds

### Re-usable Templates with Conditionals

This is useful to support AWS regions that may have VPCs or be in EC2 classic.

```javascript
"Conditions" : {
  "Is-EC2-VPC" : { "Fn::Or" : [
    {"Fn::Equals" : [
      {Ref : AWS::Region },
      "eu-central-1" ] }
    {"Fn::Equals" : [
      {Ref : AWS::Region },
      "eu-central-1" ] }
      ]
  }
}
```

## Conclusion

* CloudFormation Designer overview
* In your organization
* Advanced Concepts
* Best Practices.

repository: vallard/Presentations

repo_name: vallard/Presentations


text:
# SecurityZoneSettingsReply

## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**AutoCalculated** | **bool** | Security Zone is calculated according to where the interface leads to. | [optional] [default to null]
**SpecificZone** | **string** | Security Zone specified manually. | [optional] [default to null]

[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

repository: janschumann/checkpoint-go-sdk

repo_name: janschumann/checkpoint-go-sdk


text:
# NAME

Dancer2::Template::DTLFast - DTL::Fast engine for Dancer2

# VERSION

version 0.002

# SYNOPSIS

In your dancer2 config:

    template: "DTLFast"

In `MyApp.pm`
    get '/foo' => sub {
        template foo, {
            title => 'bar',
        };
    };

In `views/foo.tt`

{{ title }}

Hello World!

# DESCRIPTION

Dancer2::Template::DTLFast is a template engine that allows you to use
[DTL::Fast](https://metacpan.org/pod/DTL::Fast) with [Dancer2](https://metacpan.org/pod/Dancer2).

The template engine uses the DTL::Fast method get\_template to find the template
and then render it.

In order to use this engine, set the template to 'DTLFast' in the Dancer2
configuration file:

    template: "DTLFast"

The extension for your template files is controlled via Dancer2 and defaults to '.tt'.

# CONFIGURATION

The DTLFast plugin uses DTL::Fast's get\_template method to find the correct template.
The template\_path parameter is populated using the template passed in from Dancer 2;
the following example would pass 'bar' on to get\_template as the 'template\_path':

    get '/foo' => sub { template 'bar', { title => 'layout title' } };

Additional paramters can also be passed to get\_template via the configuration file,
for example, you can disable DTL::Fast's caching of templates like so:

    engines:
      template:
         DTLFast:
           no_cache: 1

Which would create a hash containing:

    { 'no\_cache' => 1 }

That hash is then passed on to get\_templates in list context, allowing you to pass
in dirs, ssi\_dirs, url\_source, etc, should you need to.

By default, the dirs parameter is set to the `views` directory configuration setting or,
if it is undefined, to the `views/` subdirectory of the application. You can override
it via the configuration file.

# NOTES

If you want to change the layout for a given request, either set the layout before making
the template request, or pass in the layout key as a *token* not as an option. Otherwise
the template render will be unable to see what template you are requesting and will go
with whatever may be the default. A value passed in as a token takes priority over any
other layout setting.

# SEE ALSO

[Dancer2](https://metacpan.org/pod/Dancer2), [DTL::Fast](https://metacpan.org/pod/DTL::Fast)

# AUTHOR

Carl Blakemore<EMAIL_ADDRESS>
# LICENSE

Copyright (C) Carl Blakemore.

This library is free software; you can redistribute it and/or modify
it under the MIT License (MIT).


text:
# The CaD manifesto

If you ever created a web page but had to abandon your vision or idea because your CMS didn’t have a needed feature, then this manifesto is for you. Or if you had to give up a front-end solution because it would be too complicated to create it with the system you're using, then read on.

CaD, **C**ontent **a**s **D**ata, is a technical architecture pattern that separates the content (data) from the user experience (your vision). It allows you to create a solution with any content management system without letting it dictate your final result.

CaD is about abstracting content. Treat **C**ontent **a**s **D**ata.

### Why

Most web-solution are normally based on a CMS. We create the web site based on the tools that the content system gives us. If the CMS lets us do something, we do it. If not, we have learned the hard way not to fight too much against it. Work with it, not against it, is usually our mantra.

With the CaD pattern you can keep the CMS happy, develop with it, but break out the front-end solution into something else. Your website is just a consumer of your content and can be developed as you envision it, without compromises.

And CaD is system agnostic. It will work with whatever system you use, as long as its output can be any data format (JSON, XML etc).

## The manifesto

CaD isn’t a rigid technical solution, but instead follows 4 simple ideas:

- Your CMS/Content provider delivers data, not form
- Your frontend code lives outside the CMS/Content provider
- Your frontend consumes the content as data
- You design the interface of your data as something that could be consumed by another solution.

## The TL;DR manifesto

Coming soon

repository: contentasdata/manifesto

repo_name: contentasdata/manifesto


text:
# Simple File headers

The `Simple File Headers` extension makes it easy to create file headers and add them to the current document.

## Features

- per-language/global file headers
- variable substitution

## Defining Templates

Templates are defined using the `simplefileheaders.templates` setting. Here is an example:

```json
"simplefileheaders.templates": [{
    "text": [
        "/**",
        " * this is a multi-line header that will be used by JS and Java files",
        " */"
    ],
    "useWith": ["java", "javascript"]
}, {
    "text": [
        "// this is a single-line header that will be used by everything else"
    ],
    "useWith": ["*"],
    "name": "Universal Header"
}],
```

- `text`: an array of strings, each string representing a line
  - variables can be added using `{MY_VAR_NAME}`, see [Using Variables](#using-variables) for more information
- `useWith`: an array of language IDs to use this template with - see [VS Code Language Identifiers](https://code.visualstudio.com/docs/languages/identifiers) for more information
  - you can use "\*" to indicate that the template can be used with any language
- `name`: an optional string name for the template

## Using Variables

Variables are defined using the `simplefileheaders.variables` setting. Here is an example:

```json
"simplefileheaders.templates": [{
    "text": [
        "/**",
        " * this header uses variables:",
        " * Year: {YEAR}",
        " * Company: {COMPANY}",
        " */"
    ],
    "useWith": ["java", "javascript"]
}],
"simplefileheaders.variables": {
    "YEAR": "2018",
    "COMPANY": "My Company"
}
```

## Extension Settings

This extension contributes the following settings:

- `simplefileheaders.insertAt`: where to insert the file header, either at the cursor or the start of the file
- `simplefileheaders.templates`: an array of template definitions, see [Defining Templates](#defining-templates)
- `simplefileheaders.variables`: variables that will be replaced when found in templates, see [Using Variables](#using-variables)

gha_language: JavaScript


text:
# Laravel Event Sourcing

Simple Laravel implementation of event sourcing mechanism.

[![Latest version](https://img.shields.io/github/release/desmart/laravel-event-sourcing.svg)](https://github.com/DeSmart/laravel-event-sourcing/releases)
[![Build Status](https://travis-ci.org/DeSmart/laravel-event-sourcing.svg?branch=master)](https://travis-ci.org/DeSmart/laravel-event-sourcing)
[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://github.com/desmart/laravel-event-sourcing/blob/master/LICENSE)

_**Be advised:**_ this package is work in progress and some breaking changes may appear on the way.

Package realizes concept of event sourcing with Laravel framework. Package consists of two main elements:
implementation of database-like event store and projection manager.

Event store is a append-only storage dedicated for storing events.
Projection manager allows to register projections and update them with generated stream of events.

## Installation
To install the package via Composer, simply run the following command:
```
composer require desmart/laravel-event-sourcing
```

In order to use provided event store implementation, register service provider in your `config/app.php` file:
```php
'providers' => [
    // ...

    DeSmart\EventSourcing\Laravel\EventStore\ServiceProvider::class,
]
```

In order to use projection manager, register service provider in your `config/app.php` file:
```php
'providers' => [
    // ...

    DeSmart\EventSourcing\Laravel\Projections\ServiceProvider::class,
]
```

After registering service provider(s), run artisan command to publish configuration files:
```php
php artisan vendor:publish
```
## Configuration
Package adds two configuration files: `event-store.php` and `read-model.php`.
### `event-store.php`
Here you can configure:
 - which connection will be used to connect with your event store,
 - which event's payload serializer will be used.
```php
return [
    /*
    |-------------------------------------------------------------------------------------
    | Database Connection For Event Store
    |-------------------------------------------------------------------------------------
    |
    | Specify which database connection should be used for storing events in events store.
    | All database connections can be found in config/database.php configuration file.
    |
    */

    'connection' => null,

    /*
    |-------------------------------------------------------------------------------------
    | Event Store Payload Serializer
    |-------------------------------------------------------------------------------------
    |
    | Serializer used for serializing/deserializing event and it's payload.
    |
    | Payload is usually of array type. It is sufficient to store payload in
    | JSON format.
    |
    | Supported serializers:
    | - 'JsonSerializer' -> use for event store that does not have automatic json serialization/deserialization, like mysql databases
    | - 'ArraySerializer -> use for event store that has automatic json serialization/deserialization, like mongodb databases
    |
    */

    'serializer' => \DeSmart\EventSourcing\Laravel\EventStore\Serializers\JsonSerializer::class
];
```

### `read-model.php`
Here you can register all projections that should be notified with stream of events.
```php
return [
    /*
    |--------------------------------------------------------------------------
    | Read Model Projections
    |--------------------------------------------------------------------------
    |
    | Array of projection classes.
    |
    | These projections will be notified about saved stream of events and they
    | can react with read model updates.
    |
    */

    'projections' => []
];
```

## Event store implementation
This package's event store implementation was successfully used/tested with MySql database, MongoDB database as well as
with mix of the two: one database served as an event store, where second was storing projections.

Event store required structure (however different column types allowed) can be found [here](https://github.com/DeSmart/laravel-event-sourcing/blob/master/example/database/migrations/2016_05_16_125159_create_event_store_table.php).

## License
Package is released under the MIT License (MIT). Please, check [LICENSE](https://github.com/desmart/laravel-event-sourcing/blob/master/LICENSE) for more details.

## Example usage
For example use of event store as well as project manager, check [`example/`](https://github.com/desmart/laravel-event-sourcing/tree/master/example) directory.

Additionally, package provides artisan command for rebuilding all projections:
```php
php artisan projections:rebuild
```

repository: DeSmart/laravel-event-sourcing

gha_language: PHP

repo_name: DeSmart/laravel-event-sourcing


text:
---
date: 2017-10-22T11:23:35-04:00
title: "Switch Statements"
seo_title: "Switch Statements | Javascript | GOUP"
subheader:
     greeting: Javascript - Program the Web
     description: This course covers the basics of programming in Javascript. Work your way through the videos/articles and I'll teach you everything you need to know to make your website more responsive!
description: This tutorial covers switch statements in Javascript.
author: GOUP
image: switch-statements.png
video: in_At_MyLiA
url: /web-development/javascript/switch-statements/
weight: 18
code:
    a: |+
          var myGrade = "A";
          switch(myGrade){
              case "A":
                    document.write("You Pass");
                    break;
              case "F":
                    document.write("You fail");
                    break;
              default:
                    document.write("Invalid grade");
          }
---

{{% programming-language-articles/switch-statements lang="JavaScript" code-lang="js" %}}


text:
---
title: "SPEC Steering Committee"
date: 2021-01-06
author:
  - "Jarrod Millman<EMAIL_ADDRESS>  - "Stéfan van der Walt<EMAIL_ADDRESS>---

## Description

The SPEC process is managed by the Steering Committee.
The Steering Committee represents the interests of the ecosystem and the community.
The Steering Committee also represent the interests of the
[Core Projects]({{< relref "/core-projects" >}})
and is composed partially of individuals who are active Core Project contributors.
In particular, the Steering Committee members

- monitor the
  [SPECs discussion forum](https://discuss.scientific-python.org/c/specs/6),
- determine which proposed SPECs are accepted as described in the [SPEC
  Purpose and Process]({{< relref "/purpose-and-process" >}}),
- approve changes to the SPEC process including to the
  [SPEC Purpose and Process]({{< relref "/purpose-and-process" >}}),
  [SPEC Steering Committee]({{< relref "/steering-committee" >}}), and
  [SPEC Core Projects]({{< relref "/core-projects" >}}), as well as
- serve as a communication channel to and from projects they contribute to as
  well as the larger ecosystem.

### Steering Committee

{{< page_gallery pages="." >}}

## Implementation

Public communication takes place in the
[`specs` GitHub repository](https://github.com/scientific-python/specs/)
and the [SPECs discussion forum](https://discuss.scientific-python.org/c/specs/6).
Private communication within the Steering Committee takes place on
[Steering Committee private mailing list](mailto:spec-steering-committee@discuss.scientific-python.org).
Steering Committee members are expected to be aware of conversations on this list to lend validity
to consensus-seeking and voting.

### How are SPECs accepted?

To accept a SPEC (i.e., assigning it a SPEC number, marking its discussion
`Accepted`, and merging the pull request) requires two members of the Steering
Committee to approve and no members objecting.
Since the role of the Steering Committee is mainly to ensure that SPEC proposals are
appropriate,[^accept] objections should be rare.

### How is the SPEC process changed?

The Steering Committee makes decisions about changing the SPEC process documents
([SPEC Purpose and Process]({{< relref "/purpose-and-process" >}}),
[SPEC Steering Committee]({{< relref "/steering-committee" >}}), and
[SPEC Core Projects]({{< relref "/core-projects" >}}))
through group consensus and, in the very rare instance
where no consensus can be reached, by two-thirds majority vote of those
available to cast a vote within ten days.

<!--
The vote "within ten days" is not clear. "ten days" after what?
Maybe:

Voting starts with an email to the
[Steering Committee private mailing list](mailto:spec-steering-committee@discuss.scientific-python.org).
-->

### Who should be a member?

Members of the Steering Committee should be active in the scientific Python ecosystem and
should have a demonstrated interest in the Core Projects and the SPEC process.
Examples of demonstrated interest include submitting SPECs, engaging in SPEC
discussions, reviewing SPEC pull requests, or advocating for wider SPEC participation.
Members of the steering committee do not have to belong to a core project.

### How many members should there be?

This is up to the Steering Committee.
However, if the Steering Committee is unable to quickly handle new SPEC proposals and new ideas arising
in the discussions aren't addressed in a timely manner, the Steering Committee should try to
recruit new members.

### How do you add a member?

If the Steering Committee decides to admit a new member and that person agrees,
then they should be added to the
(1) the Steering Committee member listing above,
(2) the [Steering Committee Team](https://github.com/orgs/scientific-python/teams/spec-steering-committee/members), and
(3) the [Steering Committee Discourse Group](https://discuss.scientific-python.org/g/spec-steering-committee).

### How do you remove a member?

If a member wishes to resign or if the Steering Committee decides to remove a member,
then they should
(1) be moved to the list of Emeritus Steering Committee members (below the list of active members),
(2) be removed from the
[Steering Committee Team](https://github.com/orgs/scientific-python/teams/spec-steering-committee/members), and
(3) be removed from the
[Steering Committee Discourse Group](https://discuss.scientific-python.org/g/spec-steering-committee).

## Notes

[^accept]:
    Proposed SPECs are accepted once (a) the draft is written to clearly explain the area of
    common concern and a general approach to a shared solution and (b) there
    are contributors (from at least two Core Projects) interested in working on the new SPEC
    and in championing it to their projects as well as the larger community.

repository: munkm/specs

branch_name: refs/heads/main

repo_name: munkm/specs


text:
News - 3.1.0
============

This release brings complete support for fish 3.1 syntax highlighting.
This is an overview of changes. To see all the changes, go to
Preferences > Package Settings > Fish > Changelog.

The only behavioural change (ie, ignoring totally new features) relates to brace
expansion, which no longer occurs unless a comma or variable appears within the
braces. If you are targeting an older version of fish, then the compatibility
highlighter will warn you when the syntax highlighting doesn't imply that this
will happen even though it actually will.

As a quick check whether there are any compatibility issues in your current
script, you can now take a look at the status bar (bottom left of the Sublime
Text window) where a summary will be displayed.

repository: saqua/sublime-fish

repo_name: saqua/sublime-fish


text:
# Interfaces & types

## `Config`
```typescript
interface Config {
    grades: number[]
    examResult: ExamResult
    merit: number
    activity: number
    accomplishments: Record<Accomplishment, number> | null
}
```

## `InputData`
```typescript
interface InputData {
    examResult: ExamResult
    grades: Grades
    merit: boolean
    activity: boolean
    accomplishments: Accomplishment[]
}
```

## `WatchFunction`
```typescript
type WatchFunction = (points: CalculatedPoints) => void
```

## `Grades`
```typescript
interface Grades {
    polish: number | null
    math: number | null
    firstSubject: number | null
    secondSubject: number | null
}
```

## `GradesPoints`
```typescript
interface GradesPoints extends Grades {
    [total: string]: number | null
}
```

## `ExamResult`
```typescript
interface ExamResult {
    [polish: string]: number | null
    math: number | null
    lang: number | null
}
```

## `ExamResultPoints`
```typescript
interface ExamResultPoints extends ExamResult {
    [total: string]: number | null
}
```

## `Accomplishment`
```typescript
type Accomplishment = string;
```

## `AccomplishmentList`
```typescript
type AccomplishmentsList = Record<Accomplishment, number>
```

## `AccomplishmentsPoints`
```typescript
interface AccomplishmentsPoints {
    total: number
    list: AccomplishmentsList
}
```

## `CalculatedPoints`
```typescript
interface CalculatedPoints {
    total: number
    examResult: ExamResultPoints
    grades: GradesPoints
    merit: number
    activity: number
    accomplishments: AccomplishmentsPoints

    [propName: string]: number | ExamResultPoints | GradesPoints | AccomplishmentsPoints;
}
```

repository: MariaRukat/points-calculator

gha_language: TypeScript

repo_name: MariaRukat/points-calculator


text:
# TheAnimalApp

Multiflavored Android Project, producing two apps at the same time:
- TheCatApp (using [TheCatAPI](https://thecatapi.com/))
- TheDogApp (using [TheDogAPI](https://thecatapi.com/))

Modern Android Development example :smile:

## Architecture
- Clean Architecture
- MVVM
- MVI

## Stack
- Kotlin
- Coroutines
- Architecture Components
    * ViewModel
    * LiveData
    * Navigation Components
- Koin (Dependency Injection)

## Firebase
- Analytics
- Crashlytics
- Remote Config

## Testing
- Unit tests
    * ViewModel and Bussiness logic tests
    * Junit 4 and 5
    * Mockito-Kotlin
    * Google Truth
- UI tests
    * Launching fragments using custom ActivityForTesting
    * Using the newest fragment-testing library [launchFragmentInContainer<SomeFragment>(fragmentArgs)]
    * Espresso
- Screenshot tests
    * Using Screenshot and ScreenCaptureProcessor to capture screenshots
    * Created custom gradle tasks for pulling screenshots from the device

## Screenshots (see all of them [here](app/screenshots))
| Launcher Screen      | Maintenance Screen      | Random Cat Screen      |
|------------|-------------|-------------|
|  |  |  |

# License

    Copyright 2020 Patryk Marciszek-Kosieradzki

    Licensed under the Apache License, Version 2.0 (the "License");

    you may not use this file except in compliance with the License.

    You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software

    distributed under the License is distributed on an "AS IS" BASIS,

    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

    See the License for the specific language governing permissions and

    limitations under the License.

gha_language: Kotlin


text:
---
title: Delete KeywordPlanAdGroup
order: 6
type: delete
entity: KeywordPlanAdGroup
---

### Delete a KeywordPlanAdGroup

The `customer.keywordPlanAdGroups.delete(resource_name)` sets the `status` field of a KeywordPlanAdGroup to `REMOVED`. Those entities and their metrics will continue to exist, but they will be read-only. Removed entities cannot be re-enabled.

#### Arguments

- ##### resource_name *required*
    The resource_name of that KeywordPlanAdGroup

#### Returns

_Nothing_

repository: eliotik/google-ads-api

repo_name: eliotik/google-ads-api