text:
#Contibuting to [PROJECT]

## Welcome contributors to the project:

## Short Links to Important Resources:
* docs: handbook / roadmap (you'll learn more about this in the roadmapping session)
* bugs: issue tracker / bug report tool
* communcations: forum link, developer list, IRC/email, Slack, etc.
## Testing
## Development environment details

## How to submit changes: Pull Request protocol etc.
_What people might expect in a response from the core devs_

## How to report a bug:
* Templates:
  * _What to include in a bug report_
* First bugs for Contributors
  * _What would be good bugs to start with?_

## New Feature Requirements
_Any guidelines for proposing the feature_

## Style Guide / Coding conventions

## Code of Conduct

## Recognition model
_How will contributors be recognized?_

## Where can I ask for help?


text:
p5-starter

🌿 Boilerplate for p5.js projects, including VS Code workspace settings with Intellisense and linting for HTML, CSS and JS.

# Installation and Usage

This repository is a template, which you can use to quickstart new projects.

# Visual Studio Code Workflow

Included is a `.vscode/extensions.json` file, which recommends a workspace
inside Visual Studio Code with the following extensions:

* [LiveServer](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)
* [p5.js snippets](https://marketplace.visualstudio.com/items?itemName=acidic9.p5js-snippets)
* [eslint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint)
* [htmlhint](https://marketplace.visualstudio.com/items?itemName=mkaufman.HTMLHint)

To view your sketch, start the Live Server on VS Code. It defaults to [http://<IP_ADDRESS>:5500/](http://<IP_ADDRESS>:5500/ "http://<IP_ADDRESS>:5500/"). It supportes live reload, so you can edit the sketch and see the changes in near realtime.

## Intellisense

Intellisense is provided via p5.js TypeScript definition files.

Solution found on issue [#1339](https://github.com/processing/p5.js/issues/1339 "#1339").

Instead of downloading the TypeScript definitions, we can now use this NPM package: [@types/p5](https://www.npmjs.com/package/@types/p5).

# Style

The styling is loosely based on Edward Tufte's typography and color choices. You can read more about it here: [Tufte CSS](https://edwardtufte.github.io/tufte-css/).

# ESLint rules

There are some disabled rules on `.eslintrc.json`, but they're
entirely personal choices. I'm mostly using the linter for checking
errors, breaking some style rules. 😅

license: MIT

branch_name: refs/heads/master

extension: md

license_type: permissive


text:
# attribute-label-embedding
An Implementation of Attribute Label Embedding (ALE) method for Zero-Shot Learning

!!! Run **$git lfs pull** (to download data files with '.mat' extension.  )

Validation phase is used for hyper-parameter tuning.
Run **$python3 master.py --mode validation**

Test phase is used to train zero-shot learning model with fine-tuned hyper-parameters.
Run **$python3 master.py --mode test**

Y. Xian, Christoph H. Lampert, B. Schiele, Z. Akata "Zero-Shot Learning - A Comprehensive Evaluation of the Good, the Bad and the Ugly" TPAMI (2018). [[pdf]](https://arxiv.org/pdf/1707.00600.pdf) [[data link]](https://www.mpi-inf.mpg.de/departments/computer-vision-and-multimodal-computing/research/zero-shot-learning/zero-shot-learning-the-good-the-bad-and-the-ugly/)

repository: WangJiuniu/attribute-label-embedding

repo_name: WangJiuniu/attribute-label-embedding


text:
---
doctest-type: bash
---

# Flags-dest only delivers defined flags, not config file

https://my.guild.ai/t/flags-dest-only-delivers-defined-flags-not-config-file/1004

## Problem

<Outline the problem as you see it. This should not be a copy-paste of
the issue as we already have that info.>

## Recreating

Requirements:

- guild<=0.9.0

Confirm we're running the version of Guild that replicates the
reported behavior.

    $ guild check -n --version '<=0.9.0'
    <exit 0>

`train` is configured to use
`embeddings_and_difficulty/configs_hydra/config.yaml` for the flags
dest. Flags are imported from that configuration file.

    $ guild run train --help-op
    Usage: guild run [OPTIONS] train [FLAG]...
    <BLANKLINE>
    Use 'guild run --help' for a list of options.
    <BLANKLINE>
    Flags:
      data  (default is test)

Run with the default value for `data`.

    $ guild run train -y
    Resolving config:embeddings_and_difficulty/configs_hydra/config.yaml
    data: test

Run with a different value for `data`.

    $ guild run train data=xxx -y
    Resolving config:embeddings_and_difficulty/configs_hydra/config.yaml
    data: xxx

Note that the Hydra enabled application loads the new value for `data`.

The generated config file contains the new flags value.

    $ guild cat -p embeddings_and_difficulty/configs_hydra/config.yaml
    data: xxx

repository: guildai/issue-resolution

gha_language: Python

repo_name: guildai/issue-resolution


text:
# Stock Price Prediction using LSTM
Downloads adjusted daily returns of a configurable date range and set of stocks from Yahoo Finance, concatenates them all into a long sequence, and trains an LSTM to predict future returns based on the sequence of past returns.

### Specifics
- Implemented in TensorFlow, adapted from Google's PTB RNN prediction example
- Returns are normalized using standard deviation (lookback configurable). Positive drift should be negligible.
- Train / validation / test sets are organized in chronological order.

### Dependencies
- TensorFlow
- pandas_datareader
- numpy

### Does it work?
Not really, current results aren't much better than chance. The data might be too noisy for this method, or there might be something wrong in the code or model.

Feel free to contact me<EMAIL_ADDRESS>

repository: alexleech/thesis

repo_name: alexleech/thesis


text:
# agrimetscraper

### introduction

agrimetscraper crawls AgriMet weather data and summarise for later data usage.

### basic usage

Python virtual environment is preferred

`pip install agrimetscraper`

`startproject -p <yourproject> -t <select database type: mongodb or sql or atlas>`

It will create a directory for your project, this folder will contain yourproject-config, yourproject-log, yourproject-database, yourproject-stations

>If you choose 'atlas', the program will prompt you for your atlas connection string and the password

cd into your project, change .ini file if needed

**There are two baseurls for agrimet API: one is for daily, the other is for instant, are all defined in ini file**

run project: python runproject.py -f "instant"|"daily" -n dbtable

set scheduler in .ini file (this program uses crontab)

**For instant data, program will aggregate 15 minutes into 1 hour interval and average the parameters


text:
# config-tmux
My personal system-level tmux config

Mostly based on work from [this acticle](http://www.hamvocke.com/blog/a-guide-to-customizing-your-tmux-conf/)

To install
```bash
sudo curl https://raw.githubusercontent.com/olegstepura/config-tmux/master/tmux.conf -o /etc/tmux.conf
```

repository: olegstepura/config-tmux

repo_name: olegstepura/config-tmux


text:
![Image](images/Nativopage.png)
# NATIVO
Web plataform for training people in companies.

## Description
Nativo creates digital learning products designed to upskill employees with the ability to succeed in the present workplace. The training platform of Nativo is for all kinds of companies, for example, their Training, HR, L&D teams, and eLearning professionals, even the CEO of the company. We converge on the cover of several training needs, and that the employer can build online courses in minutes and start the training immediately.It allows people to train, succeed, and empower their careers. I like the idea of transformation through engagement, connection, and continuous learning and training

This is the final project of Foundations in [Holberton School Colombia](https://www.holbertonschool.com/co).

## Features
  - Create program: This function allows us to create to create a new program thata includes the name of the program, a description and we can upload thigs like images and videos.
  - Active programs: This function allows us to view the total number of active or avaible programs on the plataform, here we can view the tutor, number of activities and their priority.
  - Daily activities: This function allows us to view the active daily tasksto be solved by the user. In this field each activity can be solved using the multiple selection option.

![Image](images/features.png)

## Tech
This project was developed with these technologies based in a framework called meanstack:

* [NodeJs] - Backend
* [Angular-9] - Frontend
* [MongoDB] - Database
* [HTML] - Frontend

## Installing and Running

You can run this project on the local machine.

### Prerequisites
You need to have and install:
```
Ubuntu 16.04 LTS
Angular 9
Node JS 12.18.1 LTS
MongoDB
```
## Deployment

This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 9.1.7.

### Development server

Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.

### Code scaffolding

Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.

### Build

Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build.

### Running unit tests

Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).

### Running end-to-end tests

Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).

### Further help

To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).

![Image](images/Demo.png)

## Authors
* **Samir Millan Orozco** - [GitHub](https://github.com/Gaspela04)
* **Mauricio Drada Davila** - [GitHub](https://github.com/Mauricio-KND)
* **Diego Felipe Quijano Zuñiga** - [GitHub](https://github.com/diego0096)

![Image](images/Contact.png)

## License
MIT License Copyright (c) [2020] [Samir Millan - Mauricio Drada - Diego Quijano]

## Update
June, 2020


text:
# Shaderpen

[![Latest NPM release][npm-badge]][npm-badge-url]
[![License][license-badge]][license-badge-url]

_Note: While I still try to support this library and am open to extending it, my focus has turned more towards its spiritual successor: [shader-doodle](https://github.com/halvves/shader-doodle). Please consider giving it a try and directing any issues/ideas/pull requests there._

## About

Shaderpen is a simple library that mimics a lot of the same functionality seen in Shadertoy. It sets up the WebGL context, adds a canvas to the DOM that auto-resizes to fit the window, sets up a flat vertex shader that covers the entire canvas, and exposes several attributes relating to time, mouse position, etc. This allows you to get started tinkering with WebGL quickly by writing fragment shaders.

## Usage

### npm/Import

`npm install shaderpen`

```javascript
import ShaderPen from 'shaderpen';

new ShaderPen(`
  WRITE YOUR SHADER HERE
`);
```

### Script Include

Include the script: `https://unpkg.com/shaderpen`

```javascript
new ShaderPen(`
  WRITE YOUR SHADER HERE
`);
```

## Reason

[Codepen](https://codepen.io/) is where I make/keep 99% of my sketches/ideas, so I wanted a way to do quick shader sketches there as well. Creating shaderpen was also a great opportunity for me to dive more into learning how to interface directly with the WebGL context. With that said, any and all input on how to improve upon this is welcome.

## Future

I've tested this library a good bit with various examples from Shadertoy that don't use some of the deeper features (channels, etc...), and 95% of them work correctly. I would like to reach full parity with Shadertoy's base feature set (no audio channels or other custom inputs), but then deviate Shadertoy's "Channels" by creating a means for people to extend the Shaderpen object, adding their own custom uniforms and event listeners. This will allow people to create any custom input imaginable (WebAudio context, WebSockets, even things like the Battery Status API, etc...).

## TODO

* Add iDate from Shadertoy
* Begin exploring ways of extending

## See Also

[Shadertoy](https://www.shadertoy.com/) - The awesome site that inspired this library!

[npm-badge]: https://img.shields.io/npm/v/shaderpen.svg
[npm-badge-url]: https://www.npmjs.com/package/shaderpen
[license-badge]: https://img.shields.io/npm/l/shaderpen.svg
[license-badge-url]: ./LICENSE

repository: halvves/shaderpen

branch_name: refs/heads/main

gha_language: JavaScript

gha_license_id: MIT

repo_name: halvves/shaderpen


text:
# INSTALL

At proj root:

```sh
npm install babel-cli babel-preset-env
```

`babel-cli` is command to run Babel, `babel-preset-env` tells Babel what to change (e.g., `import`/`export`).

repository: zeroDivZero/notes-babel

repo_name: zeroDivZero/notes-babel


text:
ParsimonY: structured and sparse machine learning in Python
===========================================================

ParsimonY contains the following features:
* `parsimony` provides structured and sparse penalties in machine learning. It contains, among other things:
    * Loss functions:
        * Linear regression
        * Logistic regression
    * Penalties:
        * L1 (Lasso)
        * L2 (Ridge)
        * Total variation (TV)
        * Overlapping Group LASSO (GL)
        * Any combination of the above
    * Algorithms:
        * _I_ terative _S_ hrinkage-_T_ hresholding _A_ lgorithm (fista)
        * _F_ ast _I_ terative _S_ hrinkage-_T_ hresholding _A_ lgorithm (fista)
        * _CO_ ntinuation of _NEST_ erov’s smoothing _A_ lgorithm (conesta)
        * Excessive gap method
    * Estimators
        * LinearRegression
        * Lasso
        * ElasticNet
        * LinearRegressionL1L2TV
        * LinearRegressionL1L2GL
        * LogisticRegressionL1L2TL
        * LogisticRegressionL1L2GL
        * LinearRegressionL2SmoothedL1TV

Installation
------------
The reference environment for pylearn-parsimony was Ubuntu 14.04 LTS with Python 2.7.6, Numpy 1.8.2 and Scipy 0.13.3. We have converted the package to Python 3, but have not finished this transition yet. It appears to work well in Python 3, but please report any bugs that you find!

Unless you already have Numpy and Scipy installed, you need to install them:
```
$ sudo apt-get install python-numpy python-scipy
```
or
```
$ sudo apt-get install python3-numpy python3-scipy
```

In order to run the tests, you may also need to install Nose:
```
$ sudo apt-get install python-nose
```
or
```
$ sudo apt-get install python3-nose
```

In order to show plots, you may need to install Matplotlib:
```
$ sudo apt-get install python-matplotlib
```
or
```
$ sudo apt-get install python3-matplotlib
```

**Downloading a stable release**

Download the release of pylearn-parsimony from
[https://github.com/neurospin/pylearn-parsimony/releases](https://github.com/neurospin/pylearn-parsimony/releases).
Unpack the file.

**Downloading the latest development version**

Clone the github repository

```
git clone https://github.com/neurospin/pylearn-parsimony.git
```

**Installing**

To install on your system, go to the pylearn-parsimony directory and type:
```
$ sudo python setup.py install
```
or
```
$ sudo python3 setup.py install
```

Or, you can simply set your ``$PYTHONPATH`` variable to point parsimony:
```
$ export $PYTHONPATH=$PYTHONPATH:/directory/pylearn-parsimony
```

You are now ready to use your fresh installation of pylearn-parsimony!

Quick start
-----------

A simple example: We first build a simulated dataset `X` and `y`.

```python
import numpy as np
np.random.seed(42)
shape = (1, 4, 4)  # Three-dimension matrix
num_samples = 10  # The number of samples
num_ft = shape[0] * shape[1] * shape[2] # The number of features per sample
# Randomly generate X
X = np.random.rand(num_samples, num_ft)
beta = np.random.rand(num_ft, 1) # Define beta
# Add noise to y
y = np.dot(X, beta) + 0.001 * np.random.rand(num_samples, 1)
X_train = X[0:6, :]
y_train = y[0:6]
X_test = X[6:10, :]
y_test = y[6:10]
```

We build a simple estimator using the OLS (ordinary least squares) loss
function and minimize using Gradient descent.

```python
import parsimony.estimators as estimators
import parsimony.algorithms as algorithms
ols = estimators.LinearRegression(algorithm_params=dict(max_iter=1000))
```
Then we fit the model, estimate beta, and predict on test set.
```python
res = ols.fit(X_train, y_train)
print("Estimated beta error = ", np.linalg.norm(ols.beta - beta))
print("Prediction error = ", np.linalg.norm(ols.predict(X_test) - y_test))
```

Now we build an estimator with the OLS loss function and a Total Variation
penalty and minimize using FISTA.
```python
import parsimony.estimators as estimators
import parsimony.algorithms as algorithms
import parsimony.functions.nesterov.tv as tv
l = 0.0  # l1 lasso coefficient
k = 0.0  # l2 ridge regression coefficient
g = 1.0  # tv coefficient
A = tv.linear_operator_from_shape(shape)  # Memory allocation for TV
olstv = estimators.LinearRegressionL1L2TV(l, k, g, A, mu=0.0001,
                                         algorithm=algorithms.proximal.FISTA(),
                                         algorithm_params=dict(max_iter=1000))
```
We fit the model, estimate beta, and predict on the test set.
```python
res = olstv.fit(X_train, y_train)
print("Estimated beta error = ", np.linalg.norm(olstv.beta - beta))
print("Prediction error = ", np.linalg.norm(olstv.predict(X_test) - y_test))
```

Important links
----------------

* [Tutorials](http://neurospin.github.io/pylearn-parsimony/tutorials.html)

* [Documentation](http://neurospin.github.io/pylearn-parsimony/)

repository: neurospin/pylearn-parsimony

repo_name: neurospin/pylearn-parsimony


text:
# cerebro-linux-system

> [Cerebro](https://cerebroapp.com) plugin to automate some Linux system features

![cerebro-linux-system](mygif.gif)

## Usage

In Cerebro, type command that you need and `enter` to execute it.

### List of available system commands:
#### Power control
* `Restart`
* `Sleep`
* `Shut Down`

#### Volume control
* `! mute` Turn off the volume
* `! unmute` Turn on the volume
* `! 100%` Set the volume to 100%
* `! (+|++|+++)` Increase volume by (10|30|50)%
* `! (-|--|---)` Decrease volume by (10|30|50)%

#### Wifi control
* `wifi on` Turn on the wifi
* `wifi off` Turn off the wifi

#### Pendrive  control
* `eject (name)` Unmount and eject pendrive

#### Brightness control
* `* (10|20|30|40|50|60|70|80|90|100)%` Set the Brightness to seleced %

## Related

- [Cerebro](http://github.com/KELiON/cerebro) – main repo for Cerebro app;

## License

MIT © Adrian Arencibia Herrera


text:
---
name: Feature request
about: If you believe ModOpt could be improved with the addition of extra functionality
  or features feel free to let us know.
title: "[NEW FEATURE]"
labels: enhancement
assignees: ''

---

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

**Describe the solution you'd like**
In order to increase your chances of having a feature included, be sure to be as clear and specific as possible as to the properties this feature should have.

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

**Are you planning to submit a Pull Request?**
- [ ] Yes
- [X] No

repository: CEA-COSMIC/ModOpt

repo_name: CEA-COSMIC/ModOpt


text:
# Maxwell

A low-level javascript circuit simulation engine designed to model, simulate, and render complex electronic circuitry.

**Demo Link:** [http://circuitlab.herokuapp.com/](http://circuitlab.herokuapp.com/)

## Running the App

- `npm install`
- `node demo/app.js`

The application will run on localhost port 6502 by default.

## Features
  - Solvers for linear, nonlinear, analog, digital, and mixed-signal circuitry
  - Preset definitions and examples
  - Wide catalog of elements
  - Performance tuned

## API

##### Entry Point

```javascript
var circuitContext = Maxwell.createCircuit("Voltage Divider", "./voltdivide.json", function(circuit) {
  // Runs once circuit has finished loading
});

```

## Introduction

### JSON circuit definition specification:
  A comprehensive list of examples can be found in the circuits folder.

### Component Hierarchy
  Maxwell can keep track of and simulate many circuits at a time:
    Each Circuit has many components (These are anything that would go on a PCB/breadboard: Resistors, Transistors, etc...)
      Each component has many node connections which have both a current and voltage relative to ground.
    Each Circuit has many nodes which are the junctions between components. A node has a single ground referenced voltage and is linked to one or more components.

### A simple example:

Consider a simple resistor-capacitor (RC) circuit with a resistance of 50 Ohms and a capacitance of 20 milliFarads.

##### Setting up the circuit:
  ```javascript

  resistiveCircuit = Maxwell.createCircuit('Simple RC circuit');

  // Set the timestep to 1 millisecond (1 microsecond is the default):
  resistiveCircuit.configure({ timeStep: '1e6', cacheOnStep: true })

  // Add a 50 Ohm resistor resistor:
  resistiveCircuit.addComponent('resistor', [0, 1], { id: "simple_resistor", resistance: 50 });

  // Add a 2 millifarad capacitor with an initial voltage of 1.0 volt
  resistiveCircuit.addComponent('capacitor',[1, 2], { "simple_capacitor", resistance: 2e-3, v0: 1.0 });

  // Define the ground. Maxwell can infer this automatically, but it's good practice to set an explicit ground
  resistiveCircuit.addComponent('ground', []);

  resistiveCircuit.reset();       // Implicitly gets called on create. Sets time to 0 seconds
  resistiveCircuit.time           // 0 seconds have elapsed

  // A simple human readable printout of the state and parameters of the circuit:
  resistiveCircuit.describe();

  // Step the simulation forward using the previously configured time step:
  resistiveCircuit.step();
  resistiveCircuit.describe();

  // For linear circuits we can declare an explicit time step as well:
  resistiveCircuit.step(3e-6);
  resistiveCircuit.describe();

  // We can also step until a specified time (100ms in this example):
  resistiveCircuit.stepUntil(1e4);
  resistiveCircuit.describe();

  Maxwell.getCircuits(); // [resistiveCircuit(...)]

  ```

##### Querying computed values within the circuit:
  ```javascript

  components  = resistiveCircuit.getComponents();
  nodes       = resistiveCircuit.getNodes();
  links       = resistiveCircuit.getNodeLinks();

  primaryNode = resistiveCircuit.findNodeById("1");

  // primaryNode.connectedComponents();

  resistor = resistiveCircuit.findComponentById("simple_resistor");

  resistor.getNodes();
  resistor.siblings();
  resistor.getVoltages(); // { "node1_id": 1.0, "node2_id": 2.0 }
  resistor.getCurrents(); // { "node1_id": 0.1, "node2_id": 0.5 }
  ```

  ```javascript

  // Other helpers
  resistiveCircuit.isPlanar(); // true
  resistiveCircuit.isLinear(); // true
  resistiveCircuit.isReactive(); // true (since a reactive element (capacitor) is present

  resistiveCircuit.isPureAnalog();  // true
  resistiveCircuit.isDigital();     // false
  resistiveCircuit.isMixedSignal(); // false

  // Analysis:
  conductance_matrix = resistiveCircuit.getConductanceMatrix();
  driving_matrix = resistiveCircuit.getDrivingMatrix();
  ```

## Rendering and Plotting:
  Maxwell can also render to one or more `<canvas>` elements via the `Renderer` object.

##### Setting up the canvas:

  **HTML:**
  ```html
    <canvas id="circuitboard"></canvas>
  ```

##### Debug options

- Show element bounding boxes
- Show element terminals

##### Configuration and initialization:
  **Javascript:**
  ```javascript
    var schmittTrigger = Maxwell.createCircuit('Schmitt trigger example', "schmitt_trigger.json");

    circuitboardCanvas = document.findById('circuitboard');
    var options = {
      toolbar: true,
      mouseEditor: true,
      mouseInfo: true,
      keyboardListener: true,
      infoOnHover: true,
      controlBar: true,
      theme: "default",
      fpsLimit: 30,
      retina: false,
      autoupdate: true,  // Automatically updates the drawing after the rendering completes for each frame
      autopause: true,  // Stop animation on focus

      interval: 1,    // Redraw once for every interval iterations of update (default: 1)
    };

    circuitRenderer = Maxwell.Renderer(circuitboardCanvas, schmittTrigger, options);

    // Show circuit initially:
    circuitRenderer.redraw(schmittTrigger);
  ```

  It's also possible to update the view externally:

  ```javascript
  // Trigger a render each frame:
  schmittTrigger.onstep(function() {
    circuitRenderer.redraw(schmittTrigger);
  });
  ```

  The Maxwell Rendering API is an extension of Soulwire's Sketch.js framework. You can find find a list of additional
  methods used to customize the display there.

### Plotting and adding Oscilloscopes:

  **(Work in progress)**

### TODO

- Unique IDs for CircuitComponent
- Consistent fields for CircuitComponent

## License

Copyright (c) 2011-2017 Anthony Erlinger

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

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

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

repository: rosickey/maxwell

repo_name: rosickey/maxwell


text:
# Developer Documentation

This directory contains files that are purely used in development.

The theme should continue to work even if this directory is removed.

## Getting Started

Install build tool chain

```sh
npm i
```

After editing the .less files, run

```sh
npm run build
```

Commit both `dev/less` and `static/css`.

## Files

|File                 | Description                          |
|---                  |---                                   |
|reset.less           | CSS reset script                     |
|pygments.less        | Syntax highlighting                  |
|main.less            | Main file that @includes files below |
|site.less            | Core styles                          |
|markup.less          | Styles for rendered content |
|util.less            |                                      |
|flexbox-prefixes.less|                                      |

repository: vatula/cocoa-hugo-theme

repo_name: vatula/cocoa-hugo-theme


text:
# Getting Started

> So where do we start?

_Great question!_ Below are a couple of different tools that will be important in contributing to the project. There are many ways to contribute to Legesher - most of which you only need wifi access!

We'll walk the installation of each tool, their purpose, and how we use them within in Legesher.

But above all, **enjoy**!

## Table of Contents

The best place to start is to evaluate what _exactly_ you have in your toolbox and what else you need to obtain. The few key tools that are essential to contributing to Legesher: **Discord**, a **Github account** and a **text editor** \(Atom\).

* [The Pride w/ Discord](getting-started.md#the-pride)
* [The Code w/ Github](getting-started.md#the-code)
* [The Platform w/ Atom](getting-started.md#the-platform)

## The Pride

> **Pride** - A community of ostriches

Community is extremely important to us, and having a designated space for all of us to connect and challenge each other as we share our gifts is what _Discord_ provides us.

> **Discord** - Communication platform built to create and foster a strong, inspiring community

### Getting Connected

{% hint style="success" %}
Welcome to the Pride, [click here to enter](https://discord.gg/yvsprVf)!
{% endhint %}

This link will take you to this page. Discord is similar to any other communication platform - like `Slack` or `Cisco Spark`, but allows us to focus on a key feature we love within the Legesher community - our voice.

![](../.gitbook/assets/discord-invitation.png)

### Navigating The Community

You can either open Discord up in the browser using their web application or you can download the desktop app \(recommended\) to access the community. Once you've given us a name to call you by, you will see this page.

![](../.gitbook/assets/discord-welcome.png)

On Discord, you'll be able to connect with other inspiring individuals like yourself as you contribute towards Legesher.
1⃣ Introduce yourself on the `#introductions` channel
2⃣Check out our[ Code of Conduct](../the-official-things/code-of-conduct.md)
3⃣ Learn [how to contribute](../the-official-things/contributing-guidelines.md) to Legesher

**Servers** After you accept the invitation to join Legesher's Discord Community, you are essentially adding the Legesher server to your Discord account. The far left-hand column contains all of the servers you as a user are connected to.

**Channels**
The column next to the server list contains all of the channels within a specific server. You start with being in the `#Welcome` channel.

* `#introductions`: place to connect with other members of the pride.
* `#announcements`: place where major updates will be communicated.

Every channel has a short description that details the manner of the conversation within that specific channel. If you have questions regarding a specific part of the project, finding the channel that relates would be the best place to ask it!

## The `Code`

Obviously, a very important aspect of Legesher is the code itself. Whether you are wanting to contribute as an experienced developer or writer or marketer, we want the code to excite you and not bring you anxiety. Allow us to explain further with one of the tools you will come to love!

### What is Github

> Github - a system that uses git, a version control software so you can version, share, collaborate and deploy code.

_TONS_ of buzz words there ^, so let's break it down!

**Github**
Github is like a social media platform for developers. Instead of posting photos, you’re posting your coding projects. You can “like” other’s projects ⭐ and follow other people to stay updated with their work. You can “repost” projects and add your own twist to them by forking 🍴.

Github is also like Google Drive, where it hosts all of the content and assets for your projects in larger files called _repositories_. A repository has all of the code, images, assets, etc. needed for a particular project. Github has its own version of "revision history" to trace back what a specific document / project looked like at a specific moment in time. You hit save or _commit_ to create a checkpoint in your project to reference back to.

**Git**
Git is the version control software that Github uses to keep track of what is happening to your coding projects.

_**What does version control mean?**_
Anytime you work in your project, anytime you save a change \(in git we call that `committing a change`\), you’re able to go back to that “snapshot” of the project and restart from there if you find yourself in a pigeon hole. Just like checkpoints in video games, if you fail a challenge you can restart at the checkpoint. Best thing about git, is that you can create checkpoints whenever and however often you want!

_**Why use a version control software?**_
I put every project on Github, because you can never predict when your laptop is going to crash/get stolen and you don’t want to lose all the work you’ve done. In college, I started writing my essays in Google Drive so I can work anywhere and the auto-saves literally save my butt anytime my computer crashed. \(And now, Google Drive has “revision history” so it's now even a little more like git\)

With a version control software you are able to work anywhere, with anyone, at anytime. _Pretty cool, huh?_

### Creating a Github Account

You might already feel lost - you just decided you want to help on this project but right out of the bag you're faced with a hurdle of unknown. That helplessness you feel is exactly the type of feeling the programmers we're building this tool for experience! Let's get through this together, and learn a lot in the process.

![](../.gitbook/assets/sign-up-github.png)

1⃣ Navigate to [Github](https://github.com) to create a new account. Enter your desired username, associated email address and secret password.

![](../.gitbook/assets/github-1.png)

2⃣ Verify you're not a robot 🤖by going through the exercise.

![](../.gitbook/assets/github-2.png)

3⃣ Once verified human, select your subscription \(free is more than fine\). You don't need to select the `Help me set up an organization next` for you will be contributing to the `Legesher` organization's repositories to start!

![](../.gitbook/assets/github-4.png)

4⃣ You will then need to verify your email address to finish setting up your account. \(Also, feel free to email<EMAIL_ADDRESS>for questions, concerns, or funny memes.\)

![](../.gitbook/assets/github-5.png)

5⃣ After you verified your account, you can access your profile. This is where other developers can see what you've been working on and connect with you.

**Repositories**
You repositories will be available to view here \(unless they are private repositories, then they will only be visible to you\).

**Projects**
This is for larger, overarching initiatives that belong to a project.

**Stars** ⭐
If you come across a repository that you think is awesome, you want to refer to later on, or any other reason - give it a star ⭐! This encourages the developer\(s\) working on it that you see their work, and allows you to come back to the repository later on.

**Followers/Following**
Just like any other basic social media platform, you are given the ability to follow and be followed by others.

![](../.gitbook/assets/github-6.png)

6⃣ Let's dive into Legesher and how to contribute! Feel free to star any \(or all lol\) of these repositories and follow any of our team members because they're inspiring people just like you!

## The Platform

![](../.gitbook/assets/atom-mainscreen.png)

> Text Editor - interface that allows you to open and edit your code in an user-friendly environment

Text editors can do a number of amazing things for your code - including autocorrect and color formatting. Great text editors keep track of key words and variables that you set, so you spend less time searching and debugging your code and more time implementing your solution. At this time, we are only actively working on extensions for [Atom](https://atom.io).

The text editor is a foundational element for the Legesher project. The syntax highlighting of keywords is a key element to the success of our code.

### Introduction to Atom \(Text Editor\)

In the Atom text editor, you can add `packages` to enhance the capabilities of the editor. This is where many of the **legesher** packages will be made available / what we will be building off of. For example, on the image above you can see the `language-legesher-python` package _installed_ and _enabled_ on my editor.

repository: legesher/legesher-docs

gha_language: Ruby

gha_license_id: NOASSERTION

repo_name: legesher/legesher-docs


text:
{::options toc_levels="2,3" /}

Aegisub is highly customizable and hence has a large amount of user-changeable
options. These are available in the options dialog box, found in the View menu.
This page is a reference of all the available options.

Aegisub stores all its configuration in a plain text file called _config.json_
which by default is stored in the [[?user|Aegisub_path_specifiers]] directory.
If you want to reset Aegisub to its default options without reinstalling the
program, you can just delete config.json and restart Aegisub.

## General ##

[[img/preferences-general.png]]{: class="center"}
**Auto Check for Updates**
: If enabled, Aegisub will periodically check whether there is a newer version
available, and alert you if there is. Requires a working connection to the
internet.

**Show main toolbar**
: If disabled, Aegisub's main toolbar is hidden.

**Toolbar icon size**
: The size of icons to use in all of the toolbars in Aegisub. Currently the
only valid values are 16 and 24.

**Automatically load linked files**
: Whenever you save a script, Aegisub also stores some information about what
video, audio and timecodes files you had open while working on it, inside the
script itself. This option decides what Aegisub does with these files that are
"linked" to the script when opening it. If set to "ask", Aegisub will ask you
if you want to load linked files. If set to "never", Aegisub will never load
linked files, and likewise if set to "always", Aegisub will always try to load
linked files (and report an error if the file(s) were not found).

**Undo levels**
: The maximum number of changes that can be undone. The higher this value, the
more memory Aegisub will use.

**Recently Used Lists**
: Maximum number of items to remember for all of the various lists of recently
used items in Aegisub. The memory impact from increasing these is trivial, but
larger lists may get unwieldy to use.

## Audio ##

[[img/preferences-audio.png]]{: class="center"}
**Lock scroll on cursor**
: When enabled, the audio waveform view will automatically scroll to follow the
playback cursor if it gets too close to either of the edges.

**Snap markers by default**
: When enabled, Aegisub will default to snapping audio markers to other markers
in the audio display (such as keyframes and the start or end times of other
lines) when moving them by clicking or dragging them if they are close enough.
Snapping can be toggled on or off by holding down shift.

**Default mouse wheel to zoom**
: When enabled, the mouse wheel will zoom the audio display horizontally by
default, and scroll the audio display when Ctrl is held down. If disabled, this
is reversed.

**Auto-focus on mouse over**
: If enabled, moving the mouse cursor over the audio waveform will
automatically give it focus (as opposed to requiring a click).

**Play audio when stepping in video**
: When enabled, frame stepping plays the audio for that frame.

**Default timing length**
: The default length of a new untimed line, in milliseconds.

**Default lead-in length**
**Default lead-out length**
: The duration added to the start of a line by the "add lead-in" and "add
lead-out" functions. Also used in (and set by) the [[timing
postprocessor|Timing_Post-Processor]].

**Marker drag-start sensitivity**
: The distance in pixels that a marker must be dragged for it to register as a
drag. Higher values reduce the chance of accidental changes, at the cost of
worse responsiveness.

**Left-click-drag moves end marker**
: When enabled, left clicking will set the start time of the line to the
clicked point, then set the end time of the line to the point dragged to,
making it possible to time a line with a single click-drag movement. When
disabled, left-click-drag always updates only the start time of the line, as
right-click does with the end time.

**Line boundary thickness**
: The width, in pixels, of the line start and end markers.

**Maximum snap distance**
: Maximum distance to snap markers to other markers, in pixels.

**Show inactive lines**
: Controls how lines surrounding the currently selected line are displayed in
the audio waveform. "Don't show" will only display the current line. "Show
previous" will show the previous line (in the grid, _not_ chronologically) in
gray in addition to the current line. "Show next and previous" will show the
lines before and after the current line (in the grid, _not_ chronologically).
"Show all" will show all lines in gray in addition to the current line.

**Include commented inactive lines**
: If disabled, commented lines will be skipped over when picking which inactive
lines to show in the audio display (making "Show previous" into "Show last
uncommented line before this line", and so on).

### Display Visual Options ###

**keyframes**
: If enabled, lines marking the positions of keyframes in the video will be
drawn on the audio waveform when in dialogue timing mode (the default).

**Karaoke keyframes**
: If enabled, lines marking the positions of keyframes in the video will be
drawn on the audio waveform when in karaoke timing mode.

**Draw cursor time**
: If enabled, a timestamp showing the time since the start of the file will be
drawn near the top of the audio waveform cursor.

**Video position**
: If enabled, a line is drawn in the audio display marking the start time of
the current video frame.

**Waveform style**
: Selects which of the waveform rendering styles to use

    Maximum + Average
    : The waveform is two-tone, indicating both the maximum value of a sample
        within a pixel's time range, and in a brighter color, the average value
        of all samples within the time range.

    Maximum
    : The waveform displays only the maximum value, as previous versions of
        Aegisub did.

### Audio labels ###
These options control the appearance of labels drawn in the audio display for
karaoke syllables.

**Font Face**
:   The font to use for audio labels.

**Font Size**
:   The font size to use for audio labels.

## Video ##

[[img/preferences-video.png]]{: class="center"}
**Show keyframes in slider**
: When enabled, Aegisub will draw keyframe markers on the video seek slider.

**Seek video to line start on selection change**
: When enabled, whenever the active line is changed Aegisub will automatically
seek the video to the first frame of the new line. Note that this can by done
manually by double-clicking on the grid, or by pressing Ctrl-1.

**Always show visual tools**
: When disabled, the visual typesetting tools are only rendered when the mouse
is over the video display.

**Automatically open audio when opening video**
: When enabled, when you open a video file which also has audio data, Aegisub
will automatically load the audio.

**Default zoom**
: The default video zoom level. Useful if you have a very big or very small screen.

**Fast jump step in frames**
: Decides how big "jumps" Aegisub will make when you use the fast seek feature
(Alt-rightarrow and Alt-leftarrow). Measured in frames.

**Screenshot save path**
: Decides where Aegisub should save screenshots. The default is `?video`, which
means they are saved to wherever the video is, but you can change it to any
path you like. [[Aegisub_path_specifiers]] are supported; another option
directly available in the dropdown is `?script`, which is wherever the script
is.

### Script resolution ###

**Use resolution of first video opened**
: When enabled, Aegisub will automatically set the script resolution to the
video resolution if you open a video and the script resolution is not yet set.
If this is disabled, Aegisub instead sets the script resolution to a
configurable default.

**Match video resolution on open**
: Controls what Aegisub will do about script resolution when you open a video.
If set to "never", Aegisub will do nothing if the script resolution doesn't
match the video resolution. If set to "ask", Aegisub will ask you if you want
to change the script resolution to match the video resolution if they don't
match. If set to "always", Aegisub will always change the script resolution to
match the video resolution automatically. "always" is not recommended since it
just changes script resolution without resampling anything, so it will most
likely break existing typesetting.

## Interface ##

[[img/preferences-interface.png]]{: class="center"}

**Enable call tips**
: When enabled, Aegisub will detect when you are writing an [[override
tag|ASS_Tags]] and display a small box with a brief reference of the syntax of
the tag in question until you close the tag. This is called a "call tip" and
the feature may be familiar to users of various programming IDEs.

**Overwrite in time boxes**
: Controls the behavior of all time edit boxes in the program. By default, all
time edit boxes in Aegisub behave like as if you had pressed the Insert button,
so every digit you type overwrites what is already there, and you cannot erase
numbers that are already there, you have to overwrite them. Unticking this box
disables this behavior and makes the time edit boxes behave just like normal
text edit boxes (almost).

**Enable syntax highlighting**
: Enables or disables syntax highlighting of override tags in the main edit
box.

**Path to dictionary files**
: Decides where Aegisub will look for dictionary files for its spellchecker and
thesaurus. By default it looks in `?data/dictionaries`, but if you have your
own dictionaries in the correct format somewhere else, feel free to point
Aegisub there instead.

**Font**
: Decides the font and fontsize used for the subtitle edit box and other edit
boxes.

**Maximum characters per line**
: If the value of the character counter is higher than this number, the
background will turn red to alert you that you have exceeded the maximum line
length. The maximum length is not enforced in any other way.

**Ignore whitespace**
: If enabled, whitespace will not be included in the character count.

**Focus grid on click**
: When enabled, the subtitles grid acts as its own area of the program and it
can have focus, just like the audio or the video can, and while it does you can
use the arrow keys/mouse wheel to scroll around it etc. On the other hand, if
you disable this option, the focus will stay where it was before whenever you
click in the grid. This means you can't use keyboard shortcuts in the grid
anymore, but on the other hand it means you can click in the grid to go to a
line without losing the audio focus and so on. Use at your own discretion.

**Highlight visible subtitles**
: When enabled, all subtitle lines that are currently visible in the video
frame (or at least _should_ be visible; Aegisub does not account for alpha and
such trickery in this case; it cares only about the timing of the line) will be
highlighted in the grid with a special background color (see the "Line in frame
background" option below).

**Hide overrides symbol**
: The character that will be shown instead of override blocks if tag hiding is
active. Note that despite the name, this can be more than one character if you
so desire.

**Font**
: Decides the font and font size of all text in the grid.

### Colors ###

[[img/preferences-colours.png]]{: class="center"}

#### Audio Display ####

**Play cursor**
: The color of the playback cursor.

**Line boundary start**
**Line boundary end**
**Line boundary inactive line**
: The respective colors of the various line boundary markers.

**Syllable boundary**
: The color of a syllable boundary line in karaoke mode.

### Color Schemes ###
Controls the color scheme used for the waveform/spectrum and some of the UI
elements. Aegisub currently does not have a UI for editing the color schemes or
creating new ones, but if you're feeling adventurous they can be found in
config.json.

#### Syntax Highlighting ####

**Normal**
: The color of normal text.

**Brackets**
: The color of brackets that start/end override blocks.

**Slashes and parentheses**
: The color of backslashes and parentheses within override blocks.

**Tags**
: The color of tag names within override blocks.

**Parameters**
: The color of parameters to override tags.

**Error**
: The error color for invalid syntax within an override block.

**Error background**
: Background color for errors.

**Line break**
: Color for \N, \n and \h outside of override blocks.

**Karaoke templates**
: Color for karaoke templater blocks on template lines.

#### Subtitle Grid ####

**Standard foreground**
**Standard background**
: The normal color of lines in the grid. "Foreground" is the text color, and
"Background" is obviously the background color.

**Selection foreground**
**Selection background**
: The color of selected lines in the grid.

**Comment background**
**Selected comment background**
: The background color of commented-out lines and selected commented-out lines,
respectively.

**Collision foreground**
: The text color of lines whose timings overlap with the currently active line.

**Line in frame background**
: The background color of lines currently visible in the video frame.

**Header**
**Left column**
**Active line border**
**Lines**
: The color of the grid lines and fixed columns/headers.

## Hotkeys ##

[[img/preferences-hotkeys.png]]{: class="center"}

This page lists all hotkeys currently set in Aegisub, and allows you to add,
remove or change them.

### Hotkey Contexts ###
Aegisub supports setting different hotkeys depending on what part of the
program has focus.

The "Default" group is for hotkeys which should work regardless of what in
Aegisub currently has keyboard focus. Hotkeys set in Default are overridden by
the more specific categories when applicable.

The "Always" group sets hotkeys which are enabled by Medusa mode, which apply
everywhere in the program and override all other keypresses, including ordinary
typing in edit boxes.

All other hotkey contexts should be self-explanatory.

### Setting hotkeys ###
To modify a hotkey, first click on the row to select it, then click on the
hotkey field in the row, then press the key(s) that should trigger the command.
Accept the new hotkey by clicking on another row.

To add a new hotkey, select the context you want to add the hotkey to, then
click the New button. Enter the [[command name|Commands]], then set the hotkey
as when editing them.

## Backup ##

[[img/preferences-backup.png]]{: class="center"}

### Automatic Save ###

**Enable**
: If enabled, Aegisub will periodically save a copy of the script you are
working on to the autosave path.

**Interval in seconds**
: How often should Aegisub autosave.

**Path**
: Decides where to save autosaved copies of scripts you are working on. By
default set to `autosave` in your Aegisub `?user` directory (see the
[[Aegisub_path_specifiers]] page for details).

**Autosave after every change**
: If enabled, Aegisub will save the file after every change made to it. Note
that this currently causes some problems with the undo system.

### Automatic Backup ###

**Enable**
: If enabled, Aegisub will save a backup copy of each script you open,
immediately on opening it. By default, it is saved to `?user/autoback/`, but
this can be changed (see below).

**Path**
: Decides where to save automatic backup copies of scripts. By default set to
`autoback` in your Aegisub `?user` directory.

## Automation ##

[[img/preferences-automation.png]]{: class="center"}

**Base path**
: A base directory where you put non-autoloaded automation scripts. Used only
for saving paths to script files in the subtitles.

**Include path**
: List of directories where include files and modules are searched for.
Directories are separated with a pipe character, `|`.

**Auto-load path**
: List of directories that are searched for scripts on startup, which are then
automatically loaded. Directories are separated with a pipe character, `|`.

**Trace level**
: When a script sends a message to the debug console it can also specify a
trace level. If the trace level of a message is lower than the value given
here, the message is not logged. The names given to the levels are only
suggestions and they don't have any effect on the execution of the script.
(i.e. a "Fatal" level message will not cause the script to terminate.)

**Thread priority**
: Priority given to the script execution thread. If you're on a
single-core/single-CPU system having this on lower than normal will make other
programs more responsive while long-running scripts are active.

**Autoreload on Export**
: Automatically reloads the specified sets of scripts when the [[Exporting]]
dialogue is opened. In that case you will have to enter the
[[Automation/Manager]] window and determine the cause of the error.

## Advanced Audio ##

[[img/preferences-advanced-audio.png]]{: class="center"}

**Audio provider**
: What backend to to use for loading audio. Currently there are only two
    methods.

    _avisynth_ (Windows only)
    : Uses [Avisynth](http://www.avisynth.org) to load audio. All file types
        will be loaded with DirectShowSource(), except for AVS files which will
        be opened with Import().

    _FFmpegSource_
    : Uses [FFMS2](http://code.google.com/p/ffmpegsource/) to load audio.
        Generally more reliable than opening via DirectShowSource, but slower
        due to that it has to index files first.

    Regardless of this setting, the internal PCM WAV reader will always be
    tried first for WAV files.

**Audio player**
: What method to use for playing back audio. The options depend on the platform.

    _DirectSound_ (Windows only)
    : Uses Microsoft DirectSound to play back audio. This is the best
        tested and most stable audio player.

    _DirectSound-old_ (Windows only)
    : Aegisub's original implementation of the DirectSound player. If
        you have audio playback problems when using the DirectSound player this
        one may work better (but probably won't).

    _alsa_ (Linux only)
    : Uses the [Advanced Linux Sound
        Architecture](http://www.alsa-project.org/) to play back audio. ALSA is
        the native sound architecture of Linux and is not available on any
        other systems.

    _pulse_ (Linux and other *NIX-like systems)
    : Plays sound back through a [PulseAudio](http://pulseaudio.org/)
        sound server. This is the least-tested and least likely to work of the
        audio players, and is only recommended if your audio setup makes
        non-pulse players undesirable.

    _portaudio_
    : Use the [PortAudio](http://www.portaudio.com/) API to play back
        sound. PortAudio has different playback implementations on different
        platforms. On most Unices it uses Open Sound System (OSS) for output.
        It is currently the only Windows audio player which supports
        selecting the output device.

    _openal_
    : Uses the [OpenAL](http://www.openal.com/) API to play back audio.
        This is the recommended player on OS X. It is normally not included in
        windows builds due to that it adds an extra dependency for little
        benefit.

### Cache ###

**Cache type**
: Use RAM unless you have very little of it, then use Hard Disk. The cache is
not needed and not used when PCM WAV files are opened. If you disable caching,
audio playback might become very unreliable.

**Path**
**File name**
: These options determine where the hard disk audio cache will be located. Only
used if cache is set to hard disk. You shouldn't need to change this unless
you're low on disk space. For the name, the string expects a printf-style "%i"
parameter, that will be replaced with a number. "%02i" is used by default.
Don't change that unless you know what you are doing.

### Spectrum ###

**Spectrum quality**
: Determines the quality of the audio spectrum display. Higher quality settings
result in larger CPU and RAM use. Each consecutive setting uses a bit more CPU
than the previous, and double the amount of RAM.  For 48 kHz sample rate audio,
one minute of audio uses this much memory at the different settings:

    <table class="table table-bordered table-condensed">
      <tr><th>0 "regular"</th><td>11 MB</td>
      <tr><th>1 "better"</th><td>22 MB</td>
      <tr><th>2 "high"</th><td>44 MB</td>
      <tr><th>3 "insane"</th><td>88 MB</td>
    </table>

    The amount of memory used does not depend on the number of channels
    (Aegisub always works in mono) or the bit-depth (the spectrum is always
    calculated in 32 bit floating point) of the audio.

{::template name="todo"}this is probably wrong{:/}

**Cache memory max**
: The maximum amount of memory to use for audio spectrum caching. The results
of the calculations to display the audio spectrum are cached to make scrolling
through the audio smoother. The amount of spectrum display that can be cached
in an amount of memory depends on the quality setting above. The default cache
size of 128 MB results a little less than 6 minutes of audio at 48 kHz in
quality 1. If you set this smaller than 5 MB, the default of 128 MB will be
used instead. You probably shouldn't set this to more than 1/4 of your amount
of physical RAM installed.

### Avisynth (Windows only) ###

**Avisynth down-mixer**
: Aegisub can only use mono (single-channel) audio. This option determines
which Avisynth function to use to convert audio to mono.

**Force sample rate**
: Convert all audio opened to the given sample rate. Forcing the sample rate to
the sample rate used by your sound card (rather than having the audio player do
it) can potentially improve audio performance and fix playback issues.

### FFmpegSource ###

**Audio indexing error handling mode**
: What to do if an error occurs while indexing an audio track.

    _Ignore_
    : Ignore the error and continue decoding the file. This mode can let you
        open some corrupted files, but can cause audio/video desync.

    _Clear_
    : Pretend that the track with the error does not exist in the file.

    _Stop_ (default)
    : Stop indexing at the point of the error and return all audio data before
        the error. This is the default due to that corrupted audio packets at
        the very end of files are fairly common.

    _Abort_
    : Refuse to open the file at all.

**Always index all audio tracks**
: If disabled, opening a video file will only index the video tracks, forcing
you to reindex the file to open audio tracks from the same file.

### Portaudio ###

**Portaudio device**
: What output device to use when playing audio through portaudio.

## Advanced Video ##

[[img/preferences-advanced-video.png]]{: class="center"}

**Video provider**
: Decides what method Aegisub should use to load video. What options you have
    available here depends on how your copy of Aegisub was compiled and what
    operating system you are running under. The following alternatives exist:

    _avisynth_ (Windows only)
    : Uses [Avisynth](http://www.avisynth.org) to load video. Versatile,
        supports loading almost all common formats as well as .d2v files
        (indexed DVD VOBs) if the correct plugin is supplied. Note that Aegisub
        can install its own avisynth.dll instead of using your system
        installation if so desired. Requires Video for Windows decoders for AVI
        files for best performance. Uses DirectShow for most formats, so it
        isn't recommended for anything but AVI, d2v and opening Avisynth
        scripts.

    _FFmpegSource_
    : Uses [FFMS2](http://code.google.com/p/ffmpegsource/) to load video.
        Generally the most reliable option.

**Subtitles provider**
: Decides what backend Aegisub uses to render subtitles on the video.
    If you install additional CSRI renderers such as VSFilterMod or
    xy-VSFilter (by placing the dlls in the CSRI directory within Aegisub's
    directory), they will be listed here along with the default ones.

    *CSRI/vsfilter_textsub* (Windows only)
    : Use VSFilter 2.40 to render subtitles. This is the standard subtitle
        renderer which defines the ASS format used by Aegisub.

    _libass_
    : Use [libass](http://code.google.com/p/libass/) to render subtitles.
        libass is far faster than VSFilter and (somewhat) cross-platform, but
        unfortunately still has some rendering differences from VSFilter and
        font-related issues on Windows. If you are doing complex typesetting
        that will be [[softsubbed|Attaching subtitles to video#softsubbing]] it
        is a good idea to check your work with both VSFilter and libass, as an
        increasing number of users are using libass.

**Force BT.601**
: Pretend all YUV videos are BT.601, for VSFilter compatibility.

    When VSFilter is used as a DirectShow filter, it always uses the BT.601
    color matrix for converting the subtitles from RGB to YUV. This means that
    if the video uses BT.709 (as most HD video and the occasional DVD does),
    colors which match the video in Aegisub will not match the video in the
    player. This option makes Aegisub always convert videos to RGB using
    BT.601, making the colors shown in Aegisub incorrect, but making it so that
    if the colors match in Aegisub, they will match in the player.

    To make things more exciting, VSFilter will use the *correct* color space
    when used as the internal subtitle renderer in MPC-HC, so enabling this
    option will result in *mismatched* colors in that case. As the ISR is
    currently broken in many ways (e.g. it is impossible to accurately position
    subtitles with it), we recommend not worrying about it for now.

    This comparison may make this clearer:

    [[img/bt601.png]]

    Aegisub now writes what colorspace should be used for RGB -> YUV
    conversions to the subtitle file, so hopefully this mess will be resolved
    by renderer improvements sometime in the future.

### Avisynth ###

**Allow pre-2.56a Avisynth**
: Support using ancient versions of Avisynth that a few people refuse to
upgrade past for various bad reasons.

**Avisynth memory limit**
: Frame cache memory limit for Avisynth. Raising this generally does not
improve performance and should be done only if you're opening overcomplicated
Avisynth scripts directly.

### FFmpegSource ###

**Debug log verbosity**
: Set ffmpeg/libav's verbosity level. Only has an effect when you have a
debugger attached to Aegisub.

**Decoding threads**
: Maximum number of threads to use to decode video, or -1 to choose
automatically. Setting this to 1 can fix some decoding issues at the cost of
performance. There is rarely any reason to set it to a value other than 1 or
-1.

**Enable unsafe seeking**
: Disable some of FFMS2's sanity checks when seeking in video. Makes it
possible to open some files which FFMS2 cannot seek frame-accurately in.

repository: Aegisub/aegisite

gha_language: HTML

repo_name: Aegisub/aegisite


text:
---
layout: mod-feed-ixd
title: / IXD
category: Interaction Design
active: Topics 03-04
---

This course is all about **interaction**, or how respond, develop, and communicate with the world around us. We do this a number of ways in the arts; through our devices, through our collaborators, and through the iterative processes behind designing and producing our products.

We'll continue by looking at these core principles, particularly in reference to web design and web practices.

repository: Media-Ed-Online/princ-int-media

branch_name: refs/heads/gh-pages

repo_name: Media-Ed-Online/princ-int-media


text:
---
layout: 2018.njk
title: Interests of Eric Caron - EricCaron.com
---
# My Interests

My [About](/about/) page has a lot more information about what drives me. This page is really just a collection of links & resources that are so amazing I want to share them.

Think of it like what [Delicious](https://del.icio.us/) could have been.

* [Minnesota Tech Scene](minnesota-tech-scene.html)
* [Minnesota Food Scene](minnesota-food-scene.html)
* [Recruiting & People Management](recruiting-and-people-management.html)
* [Open Source & Programming](open-source-and-programming.html)
* [Product Management & APIs](product-management-and-apis.html)

gha_language: Nunjucks


text:
---
layout: post
title:  "2015 Quiz 11 - Rules Geek"
date:   2015-10-30
author: "Bruce Maurer"
---

This week’s Rules Geek is prepared by Jerry Peters in association with Beau Rugg
and Dr. Bruce Maurer. [Click here to view a PDF of the quiz along with the
answers](https://storage.googleapis.com/ohsaa-websites/quizzes/2015/rules_geek_quiz_11.pdf).

## Rules
1. A, 2/5 @ B’s 30 YL. A1’s pass is intercepted by B1. While A1’s pass was in
   flight B2 was flagged for defensive pass interference (DPI). After the
interception the BJ blows his whistle inadvertently.

2. A1 scores a TD on a long pass. On the Try K’s ball boy hands another ball
   (“kicking ball”) to the LJ to bring in for the Try kick.

3. A, 1/10 @ A’s 20 YL. During a run play at A’s 40 YL the HL collides with one
   of B’s assistant coaches in the restricted area, the HL throws his flag. A1
is downed at B’s 35 YL. The R gives signal 38 (personal foul) and signal 27
(UNS) and the crew marks the penalty off from the spot of the foul.

4. A, 3/6 @ B’s 45 YL. B1’s helmet comes completely off during an attempt to
   tackle A2. B1 remains in contact with A2 and A2 drags B1 3 yards before going
to the ground. The U throws a flag on B1 for illegal participation for
continuing to participate after his helmet came off.

5. A, 3/15 @ A’s 45 YL. A1 is involved in close line play with B1. A1’s helmet
   comes completely off as the play continues downfield without being caused by
a foul by any B player. A1 continues downfield but does not touch anyone
throughout the remainder of the play. The LJ sees A1 continue downfield without
his helmet and doesn’t throw a flag since he did not participate in any contact.

6. After A1 crosses B’s GL. He immediately raises the ball in the air for a
   second. He stops and crosses his chest with one hand and points to the sky
with the other hand briefly. He then looks into the stands and gives the “feed
me” (like a spoon into his mouth motion) and pounds his chest.

## OHSAA Mechanics
7. Two upright opposing players start to throw punches at each other. The U gets
   between them and pushes them away from each other.

8. After a penalty the calling official runs 10 steps to get closer to the R to
   yell the foul, give the signal and tell the number of the offending player.

9. The passer is tackled, the R determines his passing arm was going forward at
   the time he was tackled and it’s ruled an incomplete pass. The R only gives
the incomplete pass signal (2X).

## OHSAA Regulations
10.  The U tells the
host management the game balls must be leather and not a rubber composite ball.

repository: paulghaddad/ohsaafb

repo_name: paulghaddad/ohsaafb


text:
# Swift Code Snippets

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

Swift code snippets for Xcode.

- [Getting Started](#getting-started)
    - [Requirements](#requirements)
    - [Installation](#installation)
- [Usage](#usage)
- [FAQ](#faq)
- [Author](#author)
- [License](#license)
- [Acknowledgments](#acknowledgments)

## Getting Started

### Requirements

* Xcode 9.0+

### Installation

**[xcodesnippet (Swift)](https://github.com/watanabetoshinori/xcodesnippet)**

Clone the repository and build from the terminal.

```sh
$ clone https://github.com/watanabetoshinori/xcodesnippet.git
$ cd xcodesnippet
$ swift build
```

```sh
# Install all snippets
$ swift run xcodesnippet install /path/to/snipeets

# Install single snippet
$ swift run xcodesnippet install SwiftCodeSnippets
```

**[xcodesnippet (Ruby)](https://github.com/Xcode-Snippets/xcodesnippet)**

Install the tools with the gem command.

```sh
gem install xcodesnippet
```

```sh
# Install all snippets
$ cd SwiftCodeSnippets
$ python install_all.py

# Install single snippet
$ xcodesnippet install /path/to/snippet.swift
```

## Usage

Just typing completion in xocde :)

|**completion** | **Description** |
|:---:|:---:|
| dispatch_after | GCD template |
| dispatch_async | GCD template |
| outlet | @IBOutlet |
| outlet_collection | @IBOutlet collection |
| df | DateFormatter template |
| nsl | NSLocalizedString |
| rgb | UIColor RGB |
| alert | UIAlertController template (Alert) |
| confirm | UIAlertController template (Confirm) |
| home_directory_url | Home directory URL |
| document_directory_url | Document directory URL |
| init_singleton | Initializing Singleton template |
| instantiate_viewcontroller | Instantiate ViewController template |
| init_view | Initializing subclass of UIVview template |
| extension_property | extension property using AssociatedObject |
| prepare_for_segue | prepareForSegue template |
| mark | // MARK -  |
| log | Basic print log template |

### FAQ

> How do I delete the snippets?

* If you have insalled [xcodesnippet](https://github.com/watanabetoshinori/xcodesnippet), you can remove snippets with the following command

```sh
$ swift run xcodesnippet remove -all
```

* To delete manually, delete the files in the following directories.

```sh
~/Library/Developer/Xcode/UserData/CodeSnippets/
```

## Author

Watanabe Toshinori –<EMAIL_ADDRESS>
## License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## Acknowledgments

This application depends on the following tools:

*  [xcodesnippet](https://github.com/Xcode-Snippets/xcodesnippet)

repository: watanabetoshinori/SwiftCodeSnippets

repo_name: watanabetoshinori/SwiftCodeSnippets


text:
# :warning: This repository is no longer maintained
Due to conflict of interests, I am no longer able to support development on Velma. Please feel free to fork it!

# <img src="https://user-images.githubusercontent.com/549323/41639879-a6eeb290-742d-11e8-8ece-bb1c292b407a.png" alt="" width="100" height="auto" valign="middle"> Velma Solidity Debugger - VS Code Extension
This repository contains the VS Code extension which integrates with the [Velma Solidity Debugger](https://github.com/seeseplusplus/velma). Design and implementation decisions for MVP v1.0.0 were heavily guided by the needs of Augur and Augur's application.

## :warning: Velma is alpha software! We're still working out a lot of kinks/bugs so please bare with us :warning:

## Get Status Updates About Releases!
Follow us on Twitter at https://twitter.com/seeseplusplus to get updates about new releases/etc about Velma

## Submitting Issues
Unless you know for certain the issue belongs in this repository, please submit issues related to the Velma Debugger at the [debugger main repo](https://github.com/seeseplusplus/velma/issues)

## Prerequisites
You must install a Solidity language VS Code extension; I suggest the one from Juan Blanco. I **suggest** that you change the keyboard shortcut this extension uses to compile the Solidity file as it defaults to `F5` and inhibits smooth debugging (if you left the default `F5` command for continuing while in a debug session). You can do this following the below instructions:
1. Press Ctrl+Shift+P (or Command+Shift+P) to open the settings quick open popup
1. Search for and open `Preferences: Open Keyboard Shortcuts` (with the preceeding `>` that should already be entered)
1. In the search box in the `Keyboard Shortcuts` tab, search for `solidity.compile.active`
1. Click the edit pencil on the left of the row and enter a different keyboard shortcut that isn't `F5`

## Installing the extension (which includes the debugger)
1. Go to https://github.com/seeseplusplus/vscode-velma-debug/releases and navigate to the latest versioned tag
1. Download the attached vscode-velma-debug-{version}.vsix file
1. Open VS Code
1. Go to the Extensions panel (default shortcut: Ctrl+Shift+X or Command+Shift+X)
1. Click the horizontal dots in the top right of the Extensions panel
1. Click "Install from VSIX..."
1. Select the downloaded VSIX file
1. Reload VS Code

## Current Limitations (of both Velma and Velma VS Code Extension)
- Currently only basic array (1-Dimensional, fixed-size (i.e. not dynamic)) variable inspection support.
- No `hover` REPL/Debug Console viewing support
- No backwards stepping support
- **Important**: Until my changes to 3rd party repos have been merged and released to NPM, you must use the associated GitHub links. You can find the supporting GitHub repositories at https://github.com/seeseplusplus. These versions of the repos (i.e. `1.0.0-rc.1` branches) are likely out of date from the upstream repo. **Please take this into consideration when testing**

## Sample project
For the scope of the [Augur bounty](https://github.com/AugurProject/augur-bounties#-bounty-2-portable-solidity-debugger), the only way you can currently use the debugger is through Ganache (formally TestRPC). The recommended method is by setting up a Mocha test which will compile the contracts, upload them to the Ganache, link the debug symbols (aka compilation output and contract addresses) to Velma, and execute transactions.

I **highly recommend** you familiarize yourself with the [test application](https://github.com/seeseplusplus/velma-sample) before integrating your own project.

repository: SeesePlusPlus/vscode-velma-debug

repo_name: SeesePlusPlus/vscode-velma-debug


text:
# request-ms

`request-ms` is a simple and easy to use module for measuring the response time for HTTP(S) requests. request-ms sends a HEAD request and measures the response time of the remote endpoint, which it returns as an extra variable (`response.elapsed`) in the response.

This module can for example be used for monitoring remote endpoint performance (as in API health checks). It aims to be a small and unobtrusive module with the greatest amount of flexibility.

There is also a [CLI app](http://github.com/MichielvdVelde/request-ms-cli) which you can use from the command line.

## Install

If you don't need to use the CLI app, you can install the module locally:

    npm install request-ms --save

## Usage

    request(requestOptions, [settingsOptions, ]callback);

* `requestOptions`: the request options. Some defaults are set for you:
  * `protocol`: the protocol to use (`http:` or `https:`, defaults to `http:`)
  * `method`: the method to use (defaults to `HEAD`)
  * `headers`: the headers to send
    * `Connection: close` is the default Connection header
* `settingsOptions`: the settings options. Defaults are set as follows
  * `timeout`: Timeout in ms. Set to `0` for no timeout

`callback` is in the usual node style `(error, response)`.

## Example

`request-ms` is easy to use, as you can see in this example:

```js
var request = require('request-ms');

// You can either call using an object conforming to options from the HTTP(S) module...
request({ 'hostname': 'google.com', 'path': '/' }, function(err, response) {
    if(err) return console.log(err);
    console.log('HEAD google.com - %d - %dms', response.statusCode, response.elapsed);
});

// ... or pass a string
request('http://google.com', function(err, response) {
    if(err) return console.log(err);
    console.log('HEAD google.com - %d - %dms', response.statusCode, response.elapsed);
});

// If we want to set a timeout we can do that:
request('http://google.com', { 'timeout': 2500 }, function(err, response) {
    if(err) return console.log(err);
    console.log('HEAD google.com - %d - %dms', response.statusCode, response.elapsed);
});
```
Which outputs something along the lines of:

    HEAD google.com - 302 - 50.235131ms

An error can be any of the standard HTTP(S) node.js errors. The response object is passed on success as the second argument.

## Version history

* 0.5.0
  * Moved CLI app to [a separate package](http://github.com/MichielvdVelde/request-ms-cli)
	* Added some additional checks (but still requires rewriting)
* 0.4.1 - 29 November 2015
  * Renamed `lib` dir to `bin`, as per convention
  * Node's http(s) module is now only loaded when needed
* 0.4.0 - 28 November 2015
  * Added CLI capabilities
  * Improved protocol type handling
* 0.3.2 - 28 November 2015
  * Less strict protocol handling
  * Removed 'may change' note in readme
* 0.3.0 - 3.0.1 - 19 November 2015
  * (0.3.1) Bumped version to sync npm readme
  * (0.3.0) Simplified timeout setting (now set `timeout` to a non-zero positive number in ms)
  * (0.3.0) Improved HTTP protocol check
* 0.2.2 - 0.2.3 - 12 July 2015
  * (0.2.3) Version bump to sync readme
  * (0.2.2) Added `settingsOptions` which allows for extra options.
  * (0.2.2) `settingsOptions` now supports timeouts. By default the timeout is disabled and `when` (see example) is set to 2500(ms)
* 0.2.1 - 12 July 2015
  * Refactored codebase and re-implemented several features
  * Switched from GET to HEAD as default method
  * Options argument now conforms to valid options from the HTTP(S) module
* 0.0.2, 0.0.3 - 11 July 2015
  * Cleaned up code
  * Added `elapsedOnIncoming` option
* 0.0.1 - 11 July 2015
  * First release

## License

Copyright 2015 Michiel van der Velde.

This software is licensed under the [MIT License](LICENSE)

repository: MichielvdVelde/request-ms

repo_name: MichielvdVelde/request-ms


text:
# ChangeLog

## 2.7.1
 - Fix a bug of opening shared memory KVS.
 - Modified to reply NotFound when it can not invoke the action.

## 2.7.0
 - Fix possibility of thread conflicting when receiving packets.
 - Changed hash algorithm to HMAC of SHA3.
 - Added Memcached as session store.
 - Updated malloc algorithm of TSharedMemoryAllocator.
 - Updated system logger.
 - Performance improvement for pooling database connections.

## 2.6.1
 - Fix a bug of outputting access log.
 - Added a link option for LZ4 shared library on Linux or macOS.

## 2.6.0
 - Implemented in-memory KVS for cache system.
 - Added a link option for Glog shared library.
 - Fix bugs of macros for command line interface.
 - Updated LZ4 to v1.9.4.

## 2.5.0
 - Implemented flushResponse() function to continue the process after sending a response.
 - Updated glog to v0.6.0
 - Performance improvement for redis client.
 - Implemented memcached client. [Experimental]
 - Implemented a cache-store for memcached, TCacheMemcachedStore class.

## 2.4.0
 - Implemented memory store for cache.
 - Updated Mongo C driver to v1.21.2.

## 2.3.1
 - Fix compilation errors on Qt 6.3.

## 2.3.0
 - Fix a bug of inserting a double-type value by SqlObject.
 - Implemented log output to calculate processing time of SQL query.
 - Implemented logics to set the log format of the SQL query log.
 - Implemented the treefrog command to show settings option.
 - Modified the timing of initializing sqlite cache store.

## 2.2.0
 - Fix a bug of cache logic for sqlite.
 - Modified not to use core5compat module in running on Qt6.
 - Performance improvement.

## 2.1.0
 - Fix a bug of calculating length of receiving packets.
 - Added echo() function with a variantmap argument.
 - Implement the logic of the tspawn command to generate scaffolding for vue.js.

## 2.0.2
 - Updated the scaffold generator to generate WebAPI codes.
 - Modified the scaffold generator to generate service classes for the model layer.

## 2.0.1
 - Support for Qt version 6.
 - Modified not to use obsolete functions of Qt.

## 1.31.0
 - Fix a bug of TMultiplexingServer (epoll server).
 - Modified not to use obsolete functions of Qt.
 - Modified to use std::call_once() function.
 - Added TAbstractSqlORMapper class.
 - Performance improvement.

## 1.30.0
 - Implemented logics for X-Forwarded-For Header.
 - Implemented ActionMailer.smtp.RequireTLS parameter in application.ini.
 - Added a option for showing URL routing to treefrog command.
 - Updated I/F of ORM functions.
 - Performance improvement.

## 1.29.0
 - Fix a bug of max-age of cookie.
 - Fix a bug of generating select-tag.
 - Modified to initialize boolean fields in classes generated.
 - Implemented publish() function in TActionController class.
 - Rename functions; renderAndStoreInCache() to renderAndCache(),
   renderFromCache() to renderOnCache(), removeFromCache() to removeCache().

## 1.28.0
 - Implemented to add a SameSite attribute to cookie.
 - Modified to add a max-age value to cookie.
 - Fix a bug of listing available controllers.
 - Fix a bug of showing a port number by -l option.
 - Fix a bug of content type in renderText() function.

## 1.27.0
 - Implemented OAuth2 client.  [Experimental]
 - Supports for MongoDB version 3.2 and later.
 - Fix a bug that timer for TSqlDatabasePool stops. #279
 - Fix a bug not to set all databases to transaction state value.
 - Fix a bug of execution of diff in tspawn command.
 - Replaced QDir::separator() by "/". #264
 - Added a value, svg:image/svg+xml.

## 1.26.0
 - Added cache modules of SQLite, MongoDB and Redis.
 - Updated LZ4 compression algorithm to 1.9.2.
 - Fix a compilation error on Ubuntu 19.10.
 - Changed the epoll module from multi-thread to single thread architecture.
 - Performance improvement.

## 1.25.0
 - Updated Mongo C driver to v1.9.5.
 - Updated LZ4 compression algorithm to v1.9.1.
 - Modified to set a domain in session cookie. #245
 - Changed the default C++ config from c++11 to c++14.
 - Erased 'DISTINCT' from SELECT statement.
 - Fix a bug of stopping tadpole.
 - Fix a bug of outputting accesslog.
 - Modified for MSVC2015.
 - Performance improvement.

## 1.24.0
 - Modified to use LZ4 compression algorithm.
 - Modified to use QLatin1String(), QStringLiteral() and QByteArrayLiteral()
   where possible.
 - Fix a bug of incorrect Content-Type returned for files with uppercase
   extension.
 - Fix a bug of parsing form-data values included backslashes.
 - Implemented a function, TMultipartFormData::uploadedFilePath().
 - Implemented a function, TSqlQuery::value(const QString &name).
 - Implemented functions storing data of hash type for Redis.
 - Brushed up THttpRequest class. #234
 - Improved functions of TSqlQuery class. #243
 - Performance improvement.

## 1.23.0
 - Added failsafe of SQL when BEGEN/COMMIT/ROLLBACK failed.
 - Modified to replace QLatin1String with QStringLiteral for view codes.
 - Model optimalizations. #231 #230
 - Minor changes of exception classes. #229
 - Added log messages for query log. #227
 - Added possibility to disable sql transactions in unit test. #226
 - Use delete[] to free aio_buf in aiocb struct. #225
 - Minor changes of testcases for Qt 5.12.
 - Fix a bug of sqlobject for session store.
 - Fix a bug of invoking StaticInitialize() function.
 - Modified not to do keep-alive when action threads equals or more than max
   thread value of config.

## 1.22.0
 - Support for CMake build.
 - Support SMTP connections to older servers. #207
 - Modified log messages.
 - Fix bugs of tspawn.pro file.

## 1.21.0
 - Added the option of linking the shared mongoc library.
 - Fix a bug of line endings of HTTP headers on Windows.
 - Fix a bug of reloading app libraries.
 - Fix to return 404 when the action is not found.

## 1.20.0
 - Implemented rawBody() function in THttpRequest class.
 - Added some functions for getting query string.
 - Added sql statements to PostOpenStatements in database.ini.
 - Fix compilation error on Ubuntu 17.10 and macOS.
 - Fix compilation error on Qt 5.10.

## 1.19.0
 - Added TSqlDriverExtension class for upsert statement.
 - Added QString arguments to sort columns function.
 - Added linkTo() functions that has various arguments.
 - Added itemCountOfCurrentPage() into TPaginator class.
 - Added routes.cfg settings by which redirecting to URL path.
 - Modified to send a message of empty body when the status code is 304.
 - Fix a bug of Windows service stop-request.
 - Fix a bug of routing when any controller is not found.
 - Fix a bug that urlq() function doesn't keep arguments.
 - Fix a bug of printing help messages.
 - Fix compilation error on FreeBSD.

## 1.18.0
 - Implemented a session store for MongoDB.
 - Fix a bug of file session store.
 - Fix a bug of generator of controllers.
 - Fix a bug of parsing arguments when running as Windows service.
 - Fix leak of db connections.

## 1.17.0
 - Fix a bug of comparisn logic of If-Modified-Since header.
 - Fix a bug of URL path traversal.
 - Modified to add view files into the project when tmake was executed.
 - Added logics to invoke a controller constructor by QMetaObject::newInstance()
   function.
 - Added logic of routing to a static file.
 - Added a class to process in background, TBackgroundProcess.

## 1.16.0
 - Added a config for listening IP address.
 - Added a config for executing SQL statements on post-open.
 - Added a function for multi-fields 'order by', tfGetModelListByCriteria().
 - Fix a bug of selecting aarge number of rows in sqlite
 - Modified the generator to generate better code.
 - Added pages for GigHub Pages, English and Japanese.

## 1.15.0
 - Added setValidationError(2) function to TFormValidator class
 - Added debug functions like 'tDebug() << "foo" << ..'.
 - Added config-initializer functions to TWebApplication class.
 - Added C++11 for-loop for TSqlORMapper class.
 - Modified functions of TFormValidator class.
 - Modified to handle quoted multipart/form-data boundary value.
 - Fix a bug of JSON parser of THttpRequest class.
 - Fix a bug of deadlock of thread on win64.
 - Fixed risky fallback for Content-Type in POST handling.
 - Added C++11 for-loop for TSqlORMapper class.
 - Added a fixed width setting for %O parameter for access log.

## 1.14.0
 - Modified to use QThreadStorage class instead of thread_local.
 - Modified the scaffold generater to generate better codes.
 - Modified url() and urla() functions so as to generate the url, searching
   the routing file.
 - Added '#partial' tag in ERB.
 - Added hasEntity() function to TMultipartFormData class.
 - Fix a bug of renderPartial() funcion on Windows.
 - Fix a bug of treefrog termination.
 - Fix a bug of session sqlobject store in PostgreSQL.
 - Fix crash on missing treefrog -k signal argument.
 - Deleted obsolete functions.
 - Performance improvement.

## 1.13.0
 - Implements hazard pointer, lock-free algorithm.
 - Fix a compilation error in MSVC2015.
 - Added TAtomic class, TAtomicPtr class.
 - Performance tuning.
 - Required C++11 compiler.

## 1.12.0
 - Added helper generator to tspawn command.
 - Added inlineImageTag() function.
 - Added functions to Redis driver class.
 - Added modules for server-side JavaScript processing. [Experimental]
 - Fix a bug of mongo driver.

## 1.11.0
 - Updated the mongo C driver to version 1.3.3.
 - Added a optionTags() function.
 - Added variableNameToFieldName() function.
 - Added method chaining to TMongoODMapper class and TSqlORMapper class.
 - Added setSortOrder(const QString &column).
 - Modified the strong trim mode, '2', to delete white spaces and trim views
   strongly.
 - Modified the trim mode for ERB parser, use '.trim_mode' file in
   subdirectories for view.
 - Modified the tmake command to use QLatin1Sring() in preference to tr().
 - Fix a bug of tmake command when c++ code is empty in ERB.
 - Fix a bug of setting cookie for session.

## 1.10.0
 - Implemented a class which represents SQL join clause for the O/R mapper.
 - Implemented LD_PRELOAD mechanism to the treefrog command, Linux only.
 - Added RDB client dlls for 64bit Windows.
 - Fix a bug of TMongoODMapper class.
 - Fix a bug of SQL for SELECT-COUNT query.
 - Fix a bug of getting running application's file path for root user.
 - Support for OS X El capitan.

## 1.9.2
 - Implemented Redis driver.
 - Implemented auto reloading system for application.
 - Fix a bug of receiveing way of TEpollSocket.
 - Fix a bug of timing of calling deleteLater().
 - Fix a bug of segmentation fault on OS X.

## 1.9.1
 - Added 'status' subcommand for treefrog.
 - Added imageLinkTo() method to TViewHelper class.
 - Implemented HTTP send function from WebSocket module.
 - Fix a bug of outputing a newline code by tmake command.
 - Fix compilation error on Qt5.5
 - Enhanced C++11 support.

## 1.9.0
 - Implemented keep-alive modules for WebSocket.
 - Implemented publish/subscribe functions for WebSocket.
 - Changed API of endpoint class.
 - Changed default random generator to std::mt19937.
 - Changed system bus module so as to use local socket class.
 - Added TSql::IsEmpty operator for TCriteria class.
 - Added NOT operator for TCriteria class.
 - Fix a bug of parsing WebSocket frame.
 - Fix a bug of sending logic for epoll.
 - Fix a bug of segmentation error.
 - Fix a bug of throwing runtime exception of treefrog.
 - Fix a buf of windows installer.
 - Performance improvement of multiplexing server.

## 1.8.0
 - Support WebSocket protocol.
 - C++11 support enabled as default.
 - Performance improvement in hybrid MPM.
 - Fix a bug of 'abort' subcommand of treefrog on Windows.
 - Fix a bug of routing URL.
 - Modified to use std::atomic instead of QAtomic.
 - Modified to catch SIGINT in case of debug mode.
 - Modified so as not to use Tf::currentDateTimeSec() function.
 - Modified to collect settings infomation to TAppSettings class.
 - Added hint macros, QLIKELY/QUNLIKELY.
 - Unsupported prefork MPM.
 - Deleted obsolete functions.

## 1.7.9
 - Support for Raspberry Pi, ARM architecture.
 - Fix a bug of settings of default project file on Qt4.

## 1.7.8
 - Added a debug mode option for tadpole command.
 - Fix a bug of TSqlObject for PostgresSQL.
 - Fix a bug that QPSQLResult doesn't call QSqlField::setAutoValue().
 - Changed for work of tfmanager in Windows service mode.
 - Changed a default project file, app.pro.
 - Changed a signal-handler message.
 - Changed the default project file to build views.
 - Support for Visual Studio 2013. [Experimental]

## 1.7.7
 - Routing enhancements, added ':param' parameter for routes.cfg.
 - Added a directive, EnableHttpMethodOverride, of application.ini.
 - Added code of checking parameters to addRouteFromString().
 - Added a test case, 'urlrouter'.
 - Added checkBoxTag() function.
 - Fix a bug of 'abort' option.

## 1.7.6
 - Modified to specify the max connections of database pool.
 - Changed identityKeyOfLoginUser() to public function.
 - Added ApplicationController::staticRelease() function.
 - Added StandardException class.
 - Implemented TStaticReleaseThread class.
 - Implemented command-line interface.
 - Added setAllowUnauthenticatedUser(1) and setDenyUnauthenticatedUser(1)
    functions into TAccessValidator class.
 - Added the permissions parameter to renameUploadedFile().
 - Modified save() function to call create() instead of mdata()->create().
 - Fix a bug of files not generated with tspawn.
 - Fix a bug of ERB generation for mailer directory.
 - Implemented Sendmail client. [Experimental]

## 1.7.5
 - Performance improvement of multiplexing server.
 - Modified to start multiple application servers under 'thread' MPM.
 - Added checkBoxTag(4) and radioButtonTag(4) functions into TViewHelper
    class.
 - Added selectTag() and optionTags() functions into TViewHelper class.
 - Fix a bug of inserting a record that has a primary key.
 - Fix bugs of 'restart' option of treefrog command.
 - Changed parameter names in ini file.
 - Modified to flush access logging.
 - Modified to update updated_at field of SQL object with the current
    date/time in updateAll() function.
 - Added new classes, TScheduler and TApplicationScheduler. [Experimental]
 - Added max number of buffering data under async I/O.
 - Modified to use async I/O file writer for logging.
 - Fix a bug of TID printing.
 - Fix a bug of specifing month string of the Date header.
 - Fix a bug of 'abort' option of treefrog command.
 - Fix build error of ORM class.
 - Fix a bug of commiting a transacton under HTTP-pipeline.
 - Fix a bug of access validation of non-login user.
 - Fix a bug of generating source codes of MongoDB.

## 1.7.4
 - Fix a bug of connection error under high load.

## 1.7.3
 - Implemented asynchronous log outputting.
 - Support HTTP-pipeline mechanism (HTTP 1.1).
 - Updated a parser of HTTP header.
 - Modified output logics of query log.
 - Added HMAC_SHA256, HMAC_SHA384 and HMAC_SHA512 algorithm.
 - Fix a bug of specifing thread ID on logging.
 - Modified to use accept4() in multiplexing app server.
 - Implemented getUTCTimeString() and Tf::currentDateTimeSec() functions.

## 1.7.2
 - Fix a bug of plugin loading in Qt5.
 - Fix a bug of specifying Mongo operators.
 - Fix a bug of access validation.
 - Fix a bug of request receiving of multipart/form-data.
 - Fix a bug of configure execution in a spaced path.
 - Modified program logic for scaffolding.
 - Added implement receiving JSON data of post method.
 - Updated to MongoDB C Driver v0.8.1.

## 1.7.1
 - Fix a bug of linkToIf() and linkToUnless().
 - Fix a bug of user-model generation.
 - Added findCount() into classes generated by tspawn command.
 - Added urlq() function into TActionHelper class.
 - Update the default encoding of JSON response in HTTP, 'charset=utf-8'.
 - Imports new files, tjsonutil.cpp and tjsonutil.h and add utility functions
    for JSON.
 - Deleted TF_BUILD_MONGODB macros
 - Added '--show-collections' option to tspawn command for MongoDB.
 - Updated oidInc() function in tbson.cpp
 - Updated the configure script.

## 1.7.0
 - Added a multiplexing socket receiver using epoll system call (Linux only)
 - Update Mongo C driver to v0.8.
 - Modified to use atomic functions instead of mutex locking.
 - Improving Performance of multiplexing receiver.
 - Added 'hybrid' as multi-processing module (MPM)
 - Added the THttpSendBuffer class for send buffering.
 - Fix compile error in Qt v5.1.
 - Added a atomic queue module, TAtomicQueue class.
 - Added a object-document mapper module for MongoDB, MongoODMapper class.
 - Supported MongoDB object as model objects.
 - Added a criteria converter for MongoDB, TCriteriaMongoConverter class.
 - Added new functions to TMongoQuery class.
 - Changed a patameter type of updateAll() to QMap<int,QVariant> class.
 - Fix a bug of execution of SQL query in a constuctor.
 - Added the option of Mongo object creation to 'tspawn' generator.

## 1.6.1
 - Fix a bug of generating user models.
 - Fix a bug of case-sensitivity of field names in DB tables.
 - Fix compile error when the 'gui_mod' flag is on.
 - Fix a bug of the 'TSql::In' statement used.
 - Performance improvement.
 - Added a class for KVS exception, KvsException.
 - Added a function for 'POP brefore SMTP' auth.
 - Added methods for TSqlORMapper, findFirstBy(), findCount(), findBy() and
    findIn().
 - Mac: Fix a bug of including path of appbase.pri.
 - MongoDB: Added functions for MongoDB access, findById(), removeById()
    and updateById().
 - MongoDB: Fix a bug of updateMulti() method in TMongoQuery class.
 - MongoDB: Added numDocsAffected() function into the TMongoQuery class.
 - MongoDB: Modified to generate a ObjectId on client.

## 1.6
 - Performance improvement.
 - JSON supported for AJAX, added sendJson() method into TActionController.
 - XML supported for AJAX, added new method, renderXml().
 - Changed the common data format from QVariantHash to QVariantMap for JSON
    conversion.
 - Bugfix of creating the 'ORDER BY' clause.
 - Updated the configure script.
 - Fixed compile error on Qt-4.6
 - MongoDB supported for easy access.  [Experimental]

## 1.3
 - Qt version 5 supported.
 - Added a version string of Windows8.
 - Added a local socket mechanism for killing tfmanager.
 - Implemented '-l' option for treefrog command.
 - Fix error in writing.

## 1.2
 - TreeFrog app-server for Windows service supported.
 - Modified the logic of parsing HTML text.
 - Added parentExists() function of tmake command.
 - Modified parseWord() function.
 - Modified help message of tfmanager command.
 - Modified it not to use gettimeofday() function.
 - Changed a class name, TAccessAuthenticator -> TAccessValidator.
 - Added the method TActionController::availableControllers().
 - Implements access auth of users into TActionController.
 - Added removeRawHeader() into TInternetMessageHeader class.

## 1.1
 - Bugfix of parsing a boundary of HTTP request.
 - Implemented releaseDatabases() function.
 - Implemented tehex2() macro.
 - Implemented htmlEscape(int n, Tf::EscapeFlag f) function.
 - Implemented '%|%' tag for echo a default value on ERB system
 - Implemented setContentType() function into TActionController class.
 - Added a escape-flag parameter to the htmlEscape() function.
 - Bugfix of calling staticInitialize().
 - Multi-database access supported.
 - Modified the URL validation to be strict.
 - Added various setRule() functions.
 - Implemented a query parameter of src of image-tag.
 - Modified ApplicationController template class.
 - Added TStaticInitializer class for prefork module.
 - Implemented logic of calling staticInitialize() of ApplicationController.
 - Added typeName() function to TDispatcher.
 - Added a restart command into tfmanager.
 - Added resetSignalNumber() function into TWebApplication.
 - Added a logics of checking idle time of socket recieving.
 - Modifiied that tfmanager opens a socket in case of Prefork only.
 - Added a OpenFlag parameter to nativeListen() function.
 - Modified the way of call nativeListen() function.
 - Move nativeListen() function into TApplicationServer class, and
    added --ctrlc-enable option to tadpole command.
 - Changed enum valus, UserDefined -> Pattern, and etc.
 - Renamed class name, THashValidator -> TFormValidator.
 - Added to output SQL query log.
 - Modified a function name to be called.
 - Update a parameter, QHash<QString,QString> -> QVariantHash.
 - Added setValidationError() function for custom validation.
 - Writes stderr output of tfserver to a debug file.
 - Modified parameters of imageLinkTo() function.
 - Imports new setting file, development.ini.
 - Modified thattmake and tspawn commands refer to the
    'TemplateSystem' setting of the development.ini file.
 - Added a defaultValue parameter to queryItemValue() and
    formItemValue() method each.
 - Added a parameter of a query string to the url() fucntion.
 - Added renderErrorResponse() method into the TActionController class.
 - Modified access log output.
 - Implemented UNIX domain socket.
 - Modified to check the socket's timeout.
 - The default prefix of Otama marking was changed, '#' -> '@'.
 - Added to set a default value into TAccessAuthenticator::clear() function.
 - Added a method, redirectToPage().
 - Added to install defaults/403.html.
 - Added new class, TAccessAuthenticator.
 - Added a method, currentController(), to TActionContext class.
 - Modified to update only DB-fields whose values were changed.
 - Fix a bug of generating a user-model.
 - Added logic of initializing member variables of model class to
    the model-generater.
 - Added to create a Makefile by qmake command.
 - Added validate function.
 - Fix a bug of TSqlORMapperIterator and TSqlQueryORMapperIterator.
 - Added new files, tsqlqueryormapperiterator.h and
    TSqlQueryORMapperIterator.
 - Modified the posision of 'new entry' on entry.erb and entry.html.
 - Modified generator logics; controller, model and view.
 - Added url and urla() functons with a QVariant parameter.
 - Added an auto-update logic of 'modified_at'.
 - Changed a form type, QHash<QString,QString> -> QVariantHash.
 - Added typedef QHash<QString, QString>.
 - Modified the creating logic of URL of urala() function.
 - Modified the method name, setActionView() -> setSubActionView().
 - Modified static files for error, 500.html, 404.html and 413.html
 - Fix a bug of order of 'ORDER BY' phrase.
 - Modified -d option's message.
 - Modified a method name, allExportVariants -> allVariants.

repository: treefrogframework/treefrog-framework

repo_name: treefrogframework/treefrog-framework