text:
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace Waf.MusicManager.Applications.Properties {
    using System;

    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {

        private static global::System.Resources.ResourceManager resourceMan;

        private static global::System.Globalization.CultureInfo resourceCulture;

        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }

        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Waf.MusicManager.Applications.Properties.Resources", typeof(Resources).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }

        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Do you want to abort the running converts and close the application?.
        /// </summary>
        internal static string AbortRunningConverts {
            get {
                return ResourceManager.GetString("AbortRunningConverts", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Could not delete the file {0}..
        /// </summary>
        internal static string CouldNotDeleteFile {
            get {
                return ResourceManager.GetString("CouldNotDeleteFile", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to The playlist could not be loaded. Maybe some referenced music files do not exist anymore..
        /// </summary>
        internal static string CouldNotLoadPlaylist {
            get {
                return ResourceManager.GetString("CouldNotLoadPlaylist", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to A file could not be opened..
        /// </summary>
        internal static string CouldNotOpenFiles {
            get {
                return ResourceManager.GetString("CouldNotOpenFiles", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Could not save the file {0}..
        /// </summary>
        internal static string CouldNotSaveFile {
            get {
                return ResourceManager.GetString("CouldNotSaveFile", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Could not save the modified files..
        /// </summary>
        internal static string CouldNotSaveFiles {
            get {
                return ResourceManager.GetString("CouldNotSaveFiles", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to The playlist could not be saved..
        /// </summary>
        internal static string CouldNotSavePlaylist {
            get {
                return ResourceManager.GetString("CouldNotSavePlaylist", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to A filter is set.
        /// </summary>
        internal static string FilterIsSet {
            get {
                return ResourceManager.GetString("FilterIsSet", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Playlist.
        /// </summary>
        internal static string Playlist {
            get {
                return ResourceManager.GetString("Playlist", resourceCulture);
            }
        }

        /// <summary>
        ///   Looks up a localized string similar to Search.
        /// </summary>
        internal static string Search {
            get {
                return ResourceManager.GetString("Search", resourceCulture);
            }
        }
    }
}


text:
import { module, test } from 'qunit';
import Validation from 'ember-validation';
import Ember from 'ember';

module('validation', 'Unit | Validation');

const ageValidations = {
  age: {
    numericality: {
      greaterThan: 13
    }
  }
};

test('validation that isValid', function(assert) {
  let model = Ember.Object.create({
    age: 30
  });

  let validation = Validation.create({
    validatee: model,
    validations: ageValidations
  });

  assert.equal(validation.get('isValid'), true, 'validation passes');
});

test('validation that is not isValid', function(assert) {
  let model = Ember.Object.create({
    age: 12
  });

  let validation = Validation.create({
    validatee: model,
    validations: ageValidations
  });

  assert.equal(validation.get('isValid'), false, 'validation failed');
});

redpajama_set_name: RedPajamaGithub


text: console.log("adios")


text:
<!DOCTYPE html>

		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>GitHub Issue Viewer</title>
		<link rel="stylesheet" href="css/style.css">


text:
package org.tbee.jdbcrollbackdriver;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.sql.Connection;
import java.sql.SQLException;

public class RollbackConnection implements InvocationHandler {
	final static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(RollbackDriver.class);

	static public java.sql.Connection wrap(RollbackDriver rollbackDriver, java.sql.Connection connection, String label) throws SQLException
	{
		// we are the handler
		RollbackConnection lThis = new RollbackConnection(rollbackDriver, connection, label);
		java.sql.Connection lConnection = (java.sql.Connection) Proxy.newProxyInstance(Connection.class.getClassLoader(), new Class[] { java.sql.Connection.class }, lThis);
		return lConnection;
	}

	// ================================================================================================
	// Constructor

	public RollbackConnection(RollbackDriver rollbackDriver, Connection connection, String label) throws SQLException {
		this.rollbackDriver = rollbackDriver;
		this.connection = connection;
		this.label = label;

		// initialize
		connection.setAutoCommit(false);

		// read through locks
//		connection.createStatement().execute("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"); // SQLServer specific TBEERNOT
	}
	final private RollbackDriver rollbackDriver;
	final private Connection connection;
	final private String label;

	// ================================================================================================
	// InvocationHandler
	// http://www.practicalsqldba.com/2012/05/ms-sql-server-nested-transaction-and.html

	@Override
	public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
		if ("setAutoCommit".equals(method.getName())) {
			if (rollbackDriver.getTransactionsEnabled()) {
				if (logger.isTraceEnabled()) logger.trace(label + " allowing " + method.getName() + "(" + args[0] + ")");
			}
			else {
				if (logger.isTraceEnabled()) logger.trace(label + " blocking " + method.getName() + "(" + args[0] + ")");
				return null;
			}
		}
		if ("commit".equals(method.getName())) {
			if (rollbackDriver.getTransactionsEnabled()) {
				if (logger.isDebugEnabled()) logger.debug(label + " allowing " + method.getName());
			}
			else {
				if (logger.isDebugEnabled()) logger.debug(label + " blocking " + method.getName());
				return null;
			}
		}
		if ("rollback".equals(method.getName())) {
			if (rollbackDriver.getTransactionsEnabled()) {
				if (logger.isDebugEnabled()) logger.debug(label + " allowing " + method.getName());
			}
			else {
				if (logger.isDebugEnabled()) logger.debug(label + " blocking " + method.getName());
				return null;
			}
		}
		if ("close".equals(method.getName())) {
			if (logger.isDebugEnabled()) logger.debug(label + " blocking " + method.getName());
			return null;
		}

		Object result = method.invoke(connection, args);

		if ("commit".equals(method.getName())) {
			if (logger.isDebugEnabled()) logger.debug(label + " SET ISOLATION READ UNCOMMITTED");
			connection.createStatement().execute("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"); // SQLServer specific TBEERNOT
		}
		if ("rollback".equals(method.getName())) {
			if (logger.isDebugEnabled()) logger.debug(label + " SET ISOLATION READ UNCOMMITTED");
			connection.createStatement().execute("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED"); // SQLServer specific TBEERNOT
		}
		return result;
	}
}


text:
#include <boost/program_options/cmdline.hpp>
#include <boost/program_options/options_description.hpp>
#include <boost/program_options/positional_options.hpp>
#include <boost/program_options/parsers.hpp>
#include <boost/program_options/variables_map.hpp>

#include "rtbkit/core/router/router.h"
#include "rtbkit/core/agent_configuration/agent_configuration_service.h"
#include "rtbkit/core/banker/null_banker.h"
#include "rtbkit/testing/test_agent.h"

#include "jml/utils/file_functions.h"

using namespace Datacratic;
using namespace RTBKIT;

static Json::Value loadJsonFromFile(const std::string & filename) {
    ML::File_Read_Buffer buf(filename);
    return Json::parse(std::string(buf.start(), buf.end()));
}

int main(int argc, char ** argv) {
    using namespace boost::program_options;

    int recordCount = 1000;
    std::string recordFile;
    std::string exchangeConfigurationFile = "rtbkit/examples/router-config.json";

    options_description endpoint_options("Bid request endpoint options");
    endpoint_options.add_options()
        ("record-request,r", value<std::string>(&recordFile),
         "filename prefix to record incoming bid request")
        ("record-count,n", value<int>(&recordCount),
         "number of bid request recorded by file")
        ("exchange-configuration,x", value<std::string>(&exchangeConfigurationFile),
         "configuration file with exchange data");

    options_description all_opt;
    all_opt
        .add(endpoint_options);
    all_opt.add_options()
        ("help,h", "print this message");

    variables_map vm;
    store(command_line_parser(argc, argv)
          .options(all_opt)
          .run(),
          vm);
    notify(vm);

    if(vm.count("help")) {
        std::cerr << all_opt << std::endl;
        exit(1);
    }

    std::shared_ptr<ServiceProxies> proxies(new ServiceProxies());

    // The agent config service lets the router know how our agent is
    // configured
    AgentConfigurationService agentConfig(proxies, "config");
    agentConfig.unsafeDisableMonitor();
    agentConfig.init();
    agentConfig.bindTcp();
    agentConfig.start();

    // We need a router for our exchange connector to work
    Router router(proxies, "router");
    router.unsafeDisableMonitor();
    router.init();

    // Set a null banker that blindly approves all bids so that we can
    // bid.
    router.setBanker(std::make_shared<NullBanker>(true));

    // Configure exchange connectors
    Json::Value exchangeConfiguration = loadJsonFromFile(exchangeConfigurationFile);
    router.initExchanges(exchangeConfiguration);
    router.initFilters();

    // Start the router up
    router.bindTcp();
    router.start();

    router.forAllExchanges([&](std::shared_ptr<ExchangeConnector> const & item) {
        item->enableUntil(Date::positiveInfinity());
        if(!recordFile.empty()) {
            std::string filename = item->exchangeName() + "-" + recordFile;
            item->startRequestLogging(filename, recordCount);
        }
    });

    // This is our bidding agent, that actually calculates the bid price
    TestAgent agent(proxies, "agent");

    agent.onBidRequest = [&] (
            double timestamp,
            const Id & id,
            std::shared_ptr<BidRequest> br,
            Bids bids,
            double timeLeftMs,
            const Json::Value & augmentations,
            const WinCostModel & wcm)
        {
            Bid& bid = bids[0];

            bid.bid(bid.availableCreatives[0], USD_CPM(1.234));
            agent.doBid(id, bids, Json::Value(), wcm);

            ML::atomic_inc(agent.numBidRequests);
            std::cerr << "bid count=" << agent.numBidRequests << std::endl;
        };

    agent.init();
    agent.start();
    agent.configure();

    for(;;) {
        ML::sleep(10.0);

        std::cerr << "----------[ REPORT ]----------" << std::endl;
        proxies->events->dump(std::cerr);
    }
}


text:
import _ from 'lodash/fp';

export const actions = {
  increment: (cell, amount) => cell.update(_.update('value', (x) => x + amount))
};


text:
@interface AIRequestContext : NSObject

@property(nonatomic, copy, readonly, AI_NONNULL) NSString *name;
@property(nonatomic, copy, readonly, AI_NULLABLE) NSDictionary AI_GENERICS_2(NSString *, id) *parameters;

- (AI_NONNULL instancetype)initWithName:(NSString * __AI_NONNULL)name
                          andParameters:(NSDictionary AI_GENERICS_2(NSString *, id) * __AI_NULLABLE)parameters;

@end


text:
contact: "Simon Kirby"
contact_role: "Vicar"
contact_photo: "/images/people/simon-kirby.jpg"
contact_email: "simon@coggesparish.com"
contact_bio: "Simon has been Vicar of Cogges, North Leigh & South Leigh since January 2013. He is married to Sue and has two sons Thomas & Luke. Before moving to Cogges the family lived in North London for 15 years where Simon worked among other things as a Youth Worker, Church planter, School Chaplain and School Rugby Coach. Simon can often be seen around Cogges shouting for his errant dog Odo to return."
contact_twitter: "sikirby"
---


text:
[CmdletBinding()]
param(
	[Parameter()]
	[String]$p,
	[String]$d = "$pwd\logtalk_doclet_logs",
	[String]$s = $env:USERPROFILE,
	# disable timeouts to maintain backward compatibility
	[String]$t = 0,
	[String]$a = "",
	[Switch]$v,
	[Switch]$h
)

Function Write-Script-Version {
	$myFullName = $MyInvocation.ScriptName
	$myName = Split-Path -Path $myFullName -leaf -Resolve
	Write-Output ($myName + " 2.3")
}

Function Run-Doclets() {
param(
	[Parameter(Position = 0)]
	[String]$path
)
	$directory = Split-Path -Path $path
	$directory_short = $directory -replace $prefix, ""
	Set-Location $d
	Write-Output '*******************************************************************************'
	Write-Output "***** Documenting $directory_short"
	$name = $directory -match '/' -replace '__'
	$doclet_exit = Run-Doclet $name $documenting_goal
	if ($doclet_exit -eq 0) {
		return 0
	} elseif ($doclet_exit -eq 124) {
		Write-Output "*****         timeout"
		Add-Content -Path $d\$name.errors -Value "LOGTALK_TIMEOUT"
	} else {
		Write-Output "*****         crash"
		Add-Content -Path $d\$name.errors -Value "LOGTALK_CRASH"
	}
	Exit 0
}

Function Run-Doclet() {
param(
	[Parameter(Position = 0)]
	[String]$name,
	[Parameter(Position = 1)]
	[String]$goal
)
	$results_file = Join-Path $d ($name + ".results")
	$errors_file  = Join-Path $d ($name + ".errors")
	if ($t -ne 0) {
		& $timeout_command $t $logtalk $logtalk_option $goal $a > $results_file 2> $errors_file
	} else {
		& $logtalk $logtalk_option $goal $a > $results_file 2> $errors_file
	}
	return $?
}

Function Write-Usage-Help() {
	$myFullName = $MyInvocation.ScriptName
	$myName = Split-Path -Path $myFullName -leaf -Resolve

	Write-Output ""
	Write-Output "This script automates running doclets found on the current directory and recursively"
	Write-Output "in its sub-directories by scanning for doclet.lgt and doclet.logtalk source files. In"
	Write-Output  "case of failed doclets or doclet errors, this script returns a non-zero exit code."
	Write-Output ""
	Write-Output "Usage:"
	Write-Output ("  " + $myName + " -p prolog [-d results] [-t timeout] [-s prefix] [-a arguments]")
	Write-Output ("  " + $myName + " -v")
	Write-Output ("  " + $myName + " -h")
	Write-Output ""
	Write-Output "Required arguments:"
	Write-Output "  -p backend Prolog compiler"
	Write-Output "     (possible values are b, ciao, cx, eclipse, gnu, ji, lvm, scryer, sicstus, swi, swipack, tau, trealla, xsb, and yap)"
	Write-Output ""
	Write-Output "Optional arguments:"
	Write-Output "  -d directory to store the doclet logs (default is ./logtalk_doclet_logs)"
	Write-Output ("  -t timeout in seconds for running each doclet (default is " + $t + "; i.e. disabled)")
	Write-Output ("  -s suppress path prefix (default is " + $s + ")")
	Write-Output "  -a arguments wrapped as a string to be passed to the integration script used to run the doclets (no default)"
	Write-Output "  -v print version"
	Write-Output "  -h help"
	Write-Output ""
}

Function Check-Parameters() {

	if ($v -eq $true) {
		Write-Script-Version
		Exit
	}

	if ($h -eq $true) {
		Write-Usage-Help
		Exit
	}

	if ($p -eq "") {
		Write-Output ("Error! Backend Prolog compiler not specified!")
		Write-Usage-Help
		Exit 1
	} elseif ($p -eq "b") {
		$script:prolog='B-Prolog'
		$script:logtalk="bplgt"
		$script:logtalk_option="-g"
	} elseif ($p -eq "ciao") {
		$script:prolog='Ciao Prolog'
		$script:logtalk="ciaolgt"
		$script:logtalk_option="-e"
	} elseif ($p -eq "cx") {
		$script:prolog='CxProlog'
		$script:logtalk="cxlgt"
		$script:logtalk_option="--goal"
	} elseif ($p -eq "eclipse") {
		$script:prolog='ECLiPSe'
		$script:logtalk="eclipselgt"
		$script:logtalk_option="-e"
	} elseif ($p -eq "gnu") {
		$script:prolog='GNU Prolog'
		$script:logtalk="gplgt"
		$script:logtalk_option="--query-goal"
	} elseif ($p -eq "ji") {
		$script:prolog='JIProlog'
		$script:logtalk="jiplgt"
		$script:logtalk_option="-n -g"
	} elseif ($p -eq "lvm") {
		$script:prolog='LVM'
		$script:logtalk="lvmlgt"
		$script:logtalk_option="-g"
		$script:dot="."
	} elseif ($p -eq "scryer") {
		$script:prolog='Scryer Prolog'
		$script:logtalk="scryerlgt"
		$script:logtalk_option="-g"
	} elseif ($p -eq "sicstus") {
		$script:prolog='SICStus Prolog'
		$script:logtalk="sicstuslgt"
		$script:logtalk_option="--goal"
		$script:dot="."
	} elseif ($p -eq "swi") {
		$script:prolog='SWI-Prolog'
		$script:logtalk="swilgt"
		$script:logtalk_option="-g"
	} elseif ($p -eq "swipack") {
		$script:prolog='SWI-Prolog'
		$script:logtalk="swipl"
		$script:logtalk_option="-g"
	} elseif ($p -eq "tau") {
		$script:prolog='Tau Prolog'
		$script:logtalk="taulgt"
		$script:logtalk_option="-g"
	} elseif ($p -eq "trealla") {
		$script:prolog='Trealla Prolog'
		$script:logtalk="tplgt"
		$script:logtalk_option="-g"
	} elseif ($p -eq "xsb") {
		$script:prolog='XSB'
		$script:logtalk="xsblgt"
		$script:logtalk_option="-e"
		$script:dot="."
	} elseif ($p -eq "yap") {
		$script:prolog='YAP'
		$script:logtalk="yaplgt"
		$script:logtalk_option="-g"
	} else {
		Write-Output ("Error! Unsupported backend Prolog compiler: " + "$p")
		Write-Usage-Help
		Exit
	}

	if ($p -eq "swipack") {
		$script:versions_goal = ("use_module(library(logtalk))," + $versions_goal)
	}

}

###################### here it starts ############################

# documenting goals

$versions_goal = ("logtalk_load(library(tester_versions)),halt" + $dot)
$documenting_goal = ("logtalk_load([doclet(loader),doclet]),halt" + $dot)

# default argument values

$base = $pwd
$dot = ""
$prolog = 'SWI-Prolog'
$logtalk = "swilgt"
$logtalk_option = "-g"

Check-Parameters

New-Item -Path $d -ItemType directory -Force > $null

if (Test-Path $d\*.results) {
	Remove-Item -Path $d\*.results -Force
}
if (Test-Path $d\*.errors) {
	Remove-Item -Path $d\*.errors -Force
}
if (Test-Path $d\errors.all) {
	Remove-Item -Path $d\errors.all -Force
}
if (Test-Path $d\tester_versions.txt) {
	Remove-Item -Path $d\tester_versions.txt -Force
}

$start_date = Get-Date -Format "yyyy-MM-dd-HH:mm:ss"

Write-Output '*******************************************************************************'
Write-Output ("***** Batch documentation processing started @ " + $start_date)
$tester_versions_file = Join-Path $d tester_versions.txt
& $logtalk $logtalk_option (" `"" + $versions_goal + "`"") > $tester_versions_file 2> $null
Select-String -Path $d\tester_versions.txt -Pattern "Logtalk version:" -SimpleMatch -Raw
(Select-String -Path $d\tester_versions.txt -Pattern "Prolog version:"  -SimpleMatch -Raw) -replace "Prolog", $prolog

$doclets=0
Get-ChildItem -Path . -Include doclet.lgt doclet.logtalk -Recurse |
Foreach-Object {
	$doclets++
	Run-Doclets $_.FullName
}

Push-Location $d

$timeouts = (Get-ChildItem -Path . -Filter *.errors  | Select-String -Pattern 'LOGTALK_TIMEOUT').count
$crashes =  (Get-ChildItem -Path . -Filter *.errors  | Select-String -Pattern 'LOGTALK_CRASH').count
$failures = (Get-ChildItem -Path . -Filter *.results | Select-String -Pattern 'failed').count

Write-Output "*******************************************************************************"
Write-Output "***** Compilation errors/warnings and failed doclets"
Write-Output "*******************************************************************************"
(Get-ChildItem -Path . -Filter *.results  | Select-String -Pattern 'syntax_error' -SimpleMatch -Raw) -replace '.results', '' | Tee-Object -FilePath errors.all -Append
(Get-ChildItem -Path . -Filter *.errors   | Select-String -Pattern 'syntax_error' -SimpleMatch -Raw) -replace '.errors', ''  | Tee-Object -FilePath errors.all -Append
(Get-ChildItem -Path . -Filter *.results  | Select-String -Pattern '!     ' -SimpleMatch -Raw) -replace '.results', '' | Tee-Object -FilePath errors.all -Append
(Get-ChildItem -Path . -Filter *.errors   | Select-String -Pattern '!     ' -SimpleMatch -Raw) -replace '.errors', ''  | Tee-Object -FilePath errors.all -Append
(Get-ChildItem -Path . -Filter *.results  | Select-String -Pattern '*     ' -SimpleMatch -Raw) -replace '.results', '' | Tee-Object -FilePath errors.all -Append
(Get-ChildItem -Path . -Filter *.errors   | Select-String -Pattern '*     ' -SimpleMatch -Raw) -replace '.errors', ''  | Tee-Object -FilePath errors.all -Append
Write-Output "*******************************************************************************"
Write-Output "***** Timeouts"
Write-Output "*******************************************************************************"
((Get-ChildItem -Path . -Filter *.errors | Select-String -Pattern 'LOGTALK_TIMEOUT' -SimpleMatch -Raw) -replace '\\', '__') -replace $prefix, ''
Write-Output "*******************************************************************************"
Write-Output "***** Crashes"
Write-Output "*******************************************************************************"
((Get-ChildItem -Path . -Filter *.errors | Select-String -Pattern 'LOGTALK_CRASH' -SimpleMatch -Raw) -replace '\\', '__') -replace $prefix, ''
Write-Output "*******************************************************************************"
Write-Output "***** Failures"
Write-Output "*******************************************************************************"
Get-ChildItem -Path . -Filter *.results | Select-String -Pattern 'failed' -SimpleMatch -Raw
Write-Output "*******************************************************************************"
Write-Output ("***** " + $doclets + " doclets: " + $timeouts + " timeouts, " + $crashes + " crashes, " + $failures + " failures")
Write-Output "*******************************************************************************"

$end_date = Get-Date -Format "yyyy-MM-dd-HH:mm:ss"

Write-Output ("***** Batch documentation processing ended @ " + $end_date)
Write-Output '*******************************************************************************'

Pop-Location

if ($crashes -gt 0) {
	Exit 7
} elseif ($timeouts -gt 0) {
	Exit 3
} elseif ($failures -gt 0) {
	Exit 1
} else {
	Exit 0
}


text:
package com.planet_ink.coffee_mud.Abilities.Fighter;
import com.planet_ink.coffee_mud.core.interfaces.*;
import com.planet_ink.coffee_mud.core.*;
import com.planet_ink.coffee_mud.core.collections.*;
import com.planet_ink.coffee_mud.Abilities.interfaces.*;
import com.planet_ink.coffee_mud.Areas.interfaces.*;
import com.planet_ink.coffee_mud.Behaviors.interfaces.*;
import com.planet_ink.coffee_mud.CharClasses.interfaces.*;
import com.planet_ink.coffee_mud.Commands.interfaces.*;
import com.planet_ink.coffee_mud.Common.interfaces.*;
import com.planet_ink.coffee_mud.Exits.interfaces.*;
import com.planet_ink.coffee_mud.Items.interfaces.*;
import com.planet_ink.coffee_mud.Libraries.interfaces.*;
import com.planet_ink.coffee_mud.Locales.interfaces.*;
import com.planet_ink.coffee_mud.MOBS.interfaces.*;
import com.planet_ink.coffee_mud.Races.interfaces.*;

import java.util.*;

public class Fighter_Endurance extends FighterSkill
{
	@Override public String ID() { return "Fighter_Endurance"; }
	private final static String localizedName = CMLib.lang().L("Endurance");
	@Override public String name() { return localizedName; }
	@Override public String displayText(){ return "";}
	@Override public int abstractQuality(){return Ability.QUALITY_OK_SELF;}
	@Override protected int canAffectCode(){return Ability.CAN_MOBS;}
	@Override protected int canTargetCode(){return 0;}
	@Override public boolean isAutoInvoked(){return true;}
	@Override public boolean canBeUninvoked(){return false;}
	@Override public int classificationCode() {   return Ability.ACODE_SKILL|Ability.DOMAIN_FITNESS; }

	@Override
	public boolean tick(Tickable ticking, int tickID)
	{
		if(!(affected instanceof MOB))
			return super.tick(ticking,tickID);

		final MOB mob=(MOB)affected;

		if(((CMLib.flags().isSitting(mob))||(CMLib.flags().isSleeping(mob)))
		&&(!mob.isInCombat())
		&&((mob.fetchAbility(ID())==null)||proficiencyCheck(null,0,false))
		&&(tickID==Tickable.TICKID_MOB))
		{
			final int bonus=(getXLEVELLevel(mob)/3)+1;
			for(int x=0;x<bonus;x++)
				CMLib.combat().recoverTick(mob);
			final CharState curState = mob.curState();
			final CharState maxState = mob.maxState();
			if((curState.getHitPoints() < maxState.getHitPoints())
			&&(curState.getMana() < maxState.getMana())
			&&(curState.getMovement() < maxState.getMovement()))
				helpProficiency(mob, 0);
		}
		return super.tick(ticking,tickID);
	}
}


text:
<?php
namespace Imunew\Pipeline\Test\Pipe;

use Imunew\Pipeline\Context\Context;
use Imunew\Pipeline\Context\ContextInterface;
use Imunew\Pipeline\Pipe\Pipes;
use Imunew\Pipeline\Pipeline;
use PHPUnit\Framework\TestCase;

/**
 * Class PipesTest
 * @package Imunew\Pipeline\Test\Pipe
 */
class PipesTest extends TestCase
{
    /**
     * @test
     */
    public function mergeNumberPipes()
    {
        $pipesA = (new Pipes())
            ->add(10, function ($context) {
                /** @var ContextInterface $context */
                $data = $context->getData('number', 0);
                return $context->setData('number', $data + 1);
            })
            ->add(20, function ($context) {
                /** @var ContextInterface $context */
                $data = $context->getData('number', 0);
                return $context->setData('number', $data * 10);
            })
        ;

        $pipesB = (new Pipes())
            ->add(15, function ($context) {
                /** @var ContextInterface $context */
                $data = $context->getData('number', 0);
                return $context->setData('number', $data + 2);
            })
        ;

        $pipesC = $pipesA->merge($pipesB);
        $pipeline = new Pipeline($pipesC);
        $context = $pipeline->process(new Context());

        $this->assertSame(30, $context->getData('number'));
    }

}


text:
package be.trojkasoftware.android.gestures.languagetest;

import android.view.View;

import be.trojkasoftware.android.gestures.IGestureAction;
import be.trojkasoftware.android.gestures.TouchGesture;
import be.trojkasoftware.android.gestures.dsl.GestureBuilder;

public class SingleTouchSequenceSentenceTests extends GestureBuilder<View> {

    public SingleTouchSequenceSentenceTests()
    {
        super(null);
    }

    public TouchGesture createDownMoveUpSequence()
    {
        TouchGesture gesture = new TouchGesture("");

        this.Create(gesture).TouchDown()
                .AndNext().Move()
                .AndNext().TouchUp()
        ;

        return gesture;
    }

    public TouchGesture createDownMoveUpAndDownAgainSequence()
    {
        TouchGesture gesture = new TouchGesture("");

        this.Create(gesture).TouchDown()
                .AndNext().Move()
                .AndNext().TouchUp()
                .AndNext().TouchDown()
        ;

        return gesture;
    }

    public TouchGesture createDownMoveUpDoingSomethingSequence()
    {
        TouchGesture gesture = new TouchGesture("");

        this.Create(gesture).TouchDown().Do1(DoSomething())
                .AndNext().Move().Do1(DoSomething())
                .AndNext().TouchUp().Do1(DoSomething())
                .AndFinally(DoSomething());
        ;

        return gesture;
    }

    public TouchGesture createDownMoveUpDoingSomethingAndDownAgainSequence()
    {
        TouchGesture gesture = new TouchGesture("");

        this.Create(gesture).TouchDown().Do1(DoSomething())
                .AndNext().Move().Do1(DoSomething())
                .AndNext().TouchUp().Do1(DoSomething())
                .AndNext().TouchDown().Do1(DoSomething())
        ;

        return gesture;
    }

    IGestureAction DoSomething()
    {
        return null;
    }

}


text:
namespace
{
	void getTextureSize(asIScriptGeneric* gen)
	{
		new (gen->GetAddressOfReturnLocation()) sf::Vector2f(reinterpret_cast<const sf::Texture*>(gen->GetObject())->getSize());
	}
}

void as::priv::RegTexture(asIScriptEngine* eng)
{
	AS_ASSERT(eng->SetDefaultNamespace("sf"));

	AS_ASSERT(eng->RegisterObjectType("Texture", 0, asOBJ_REF | asOBJ_NOCOUNT));

	AS_ASSERT(eng->RegisterObjectMethod("Texture", "bool get_Repeated() const", asMETHOD(sf::Texture, isRepeated), asCALL_THISCALL));
	AS_ASSERT(eng->RegisterObjectMethod("Texture", "void set_Repeated(bool)", asMETHOD(sf::Texture, setRepeated), asCALL_THISCALL));
	AS_ASSERT(eng->RegisterObjectMethod("Texture", "bool get_Smooth() const", asMETHOD(sf::Texture, isSmooth), asCALL_THISCALL));
	AS_ASSERT(eng->RegisterObjectMethod("Texture", "void set_Smooth(bool)", asMETHOD(sf::Texture, setSmooth), asCALL_THISCALL));

	AS_ASSERT(eng->RegisterObjectMethod("Texture", "Vec2 get_Size() const", asFUNCTION(getTextureSize), asCALL_GENERIC));

	AS_ASSERT(eng->SetDefaultNamespace(""));
}


text:
#ifndef __ESP_SOFTAP_H__
#define __ESP_SOFTAP_H__

#include "queue.h"

#ifdef __cplusplus
extern "C" {
#endif

/** \defgroup WiFi_APIs WiFi Related APIs
  * @brief WiFi APIs
  */

/** @addtogroup WiFi_APIs
  * @{
  */

/** \defgroup SoftAP_APIs SoftAP APIs
  * @brief ESP8266 Soft-AP APIs
  * @attention To call APIs related to ESP8266 soft-AP has to enable soft-AP mode first (wifi_set_opmode)
  */

/** @addtogroup SoftAP_APIs
  * @{
  */

struct softap_config {
    uint8 ssid[32];         /**< SSID of ESP8266 soft-AP */
    uint8 password[64];     /**< Password of ESP8266 soft-AP */
    uint8 ssid_len;         /**< Length of SSID. If softap_config.ssid_len==0, check the SSID until there is a termination character; otherwise, set the SSID length according to softap_config.ssid_len. */
    uint8 channel;          /**< Channel of ESP8266 soft-AP */
    AUTH_MODE authmode;     /**< Auth mode of ESP8266 soft-AP. Do not support AUTH_WEP in soft-AP mode */
    uint8 ssid_hidden;      /**< Broadcast SSID or not, default 0, broadcast the SSID */
    uint8 max_connection;   /**< Max number of stations allowed to connect in, default 4, max 4 */
    uint16 beacon_interval; /**< Beacon interval, 100 ~ 60000 ms, default 100 */
};

struct station_info {
    STAILQ_ENTRY(station_info)     next;    /**< Information of next AP */

    uint8 bssid[6];                         /**< BSSID of AP */
    struct ip_addr ip;                      /**< IP address of AP */
};

/**
  * @brief  Get the current configuration of the ESP8266 WiFi soft-AP
  *
  * @param  struct softap_config *config : ESP8266 soft-AP configuration
  *
  * @return true  : succeed
  * @return false : fail
  */
bool wifi_softap_get_config(struct softap_config *config);

/**
  * @brief  Get the configuration of the ESP8266 WiFi soft-AP saved in the flash
  *
  * @param  struct softap_config *config : ESP8266 soft-AP configuration
  *
  * @return true  : succeed
  * @return false : fail
  */
bool wifi_softap_get_config_default(struct softap_config *config);

/**
  * @brief     Set the configuration of the WiFi soft-AP and save it to the Flash.
  *
  * @attention 1. This configuration will be saved in flash system parameter area if changed
  * @attention 2. The ESP8266 is limited to only one channel, so when in the soft-AP+station mode,
  *               the soft-AP will adjust its channel automatically to be the same as
  *               the channel of the ESP8266 station.
  *
  * @param     struct softap_config *config : ESP8266 soft-AP configuration
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_set_config(struct softap_config *config);

/**
  * @brief     Set the configuration of the WiFi soft-AP; the configuration will
  *            not be saved to the Flash.
  *
  * @attention The ESP8266 is limited to only one channel, so when in the soft-AP+station mode,
  *            the soft-AP will adjust its channel automatically to be the same as
  *            the channel of the ESP8266 station.
  *
  * @param     struct softap_config *config : ESP8266 soft-AP configuration
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_set_config_current(struct softap_config *config);

/**
  * @brief     Get the number of stations connected to the ESP8266 soft-AP.
  *
  * @attention The ESP8266 is limited to only one channel, so when in the soft-AP+station mode,
  *            the soft-AP will adjust its channel automatically to be the same as
  *            the channel of the ESP8266 station.
  *
  * @param     null
  *
  * @return    the number of stations connected to the ESP8266 soft-AP
  */
uint8 wifi_softap_get_station_num(void);

/**
  * @brief     Get the information of stations connected to the ESP8266 soft-AP,
  *            including MAC and IP.
  *
  * @attention wifi_softap_get_station_info depends on DHCP, it can only
  *            be used when DHCP is enabled, so it can not get the static IP.
  *
  * @param     null
  *
  * @return    struct station_info* : station information structure
  */
struct station_info *wifi_softap_get_station_info(void);

/**
  * @brief     Free the space occupied by station_info when wifi_softap_get_station_info is called.
  *
  * @attention The ESP8266 is limited to only one channel, so when in the soft-AP+station mode,
  *            the soft-AP will adjust its channel automatically to be the same as
  *            the channel of the ESP8266 station.
  *
  * @param     null
  *
  * @return    null
  */
void wifi_softap_free_station_info(void);

/**
  * @brief     Enable the ESP8266 soft-AP DHCP server.
  *
  * @attention 1. The DHCP is enabled by default.
  * @attention 2. The DHCP and the static IP related API (wifi_set_ip_info) influence
  *               each other, if the DHCP is enabled, the static IP will be disabled;
  *               if the static IP is enabled, the DHCP will be disabled.
  *               It depends on the latest configuration.
  *
  * @param     null
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_dhcps_start(void);

/**
  * @brief  Disable the ESP8266 soft-AP DHCP server. The DHCP is enabled by default.
  *
  * @param  null
  *
  * @return true  : succeed
  * @return false : fail
  */
bool wifi_softap_dhcps_stop(void);

/**
  * @brief  Get the ESP8266 soft-AP DHCP server status.
  *
  * @param  null
  *
  * @return enum dhcp_status
  */
enum dhcp_status wifi_softap_dhcps_status(void);

/**
  * @brief     Query the IP range that can be got from the ESP8266 soft-AP DHCP server.
  *
  * @attention This API can only be called during ESP8266 soft-AP DHCP server enabled.
  *
  * @param     struct dhcps_lease *please : IP range of the ESP8266 soft-AP DHCP server.
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_get_dhcps_lease(struct dhcps_lease *please);

/**
  * @brief     Set the IP range of the ESP8266 soft-AP DHCP server.
  *
  * @attention 1. The IP range should be in the same sub-net with the ESP8266
  *               soft-AP IP address.
  * @attention 2. This API should only be called when the DHCP server is disabled
  *               (wifi_softap_dhcps_stop).
  * @attention 3. This configuration will only take effect the next time when the
  *               DHCP server is enabled (wifi_softap_dhcps_start).
  *    - If the DHCP server is disabled again, this API should be called to set the IP range.
  *    - Otherwise, when the DHCP server is enabled later, the default IP range will be used.
  *
  * @param     struct dhcps_lease *please : IP range of the ESP8266 soft-AP DHCP server.
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_set_dhcps_lease(struct dhcps_lease *please);

/**
  * @brief     Get ESP8266 soft-AP DHCP server lease time.
  *
  * @attention This API can only be called during ESP8266 soft-AP DHCP server enabled.
  *
  * @param     null
  *
  * @return    lease time, uint: minute.
  */
uint32 wifi_softap_get_dhcps_lease_time(void);

/**
  * @brief     Set ESP8266 soft-AP DHCP server lease time, default is 120 minutes.
  *
  * @attention This API can only be called during ESP8266 soft-AP DHCP server enabled.
  *
  * @param     uint32 minute : lease time, uint: minute, range:[1, 2880].
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_set_dhcps_lease_time(uint32 minute);

/**
  * @brief     Reset ESP8266 soft-AP DHCP server lease time which is 120 minutes by default.
  *
  * @attention This API can only be called during ESP8266 soft-AP DHCP server enabled.
  *
  * @param     null
  *
  * @return    true  : succeed
  * @return    false : fail
  */
bool wifi_softap_reset_dhcps_lease_time(void);

/**
  * @brief  Set the ESP8266 soft-AP DHCP server option.
  *
  * Example:
  * <pre>
  *         uint8 mode = 0;
  *         wifi_softap_set_dhcps_offer_option(OFFER_ROUTER, &mode);
  * </pre>
  *
  * @param  uint8 level : OFFER_ROUTER, set the router option.
  * @param  void* optarg :
  *    - bit0, 0 disable the router information;
  *    - bit0, 1 enable the router information.
  *
  * @return true  : succeed
  * @return false : fail
  */
bool wifi_softap_set_dhcps_offer_option(uint8 level, void *optarg);

/**
  * @}
  */

/**
  * @}
  */

#ifdef __cplusplus
}
#endif

#endif


text:
package simple.android;

public @interface Param {

}


text:
@interface XCSortSelectionAction ()

@property (nonatomic, assign) NSComparisonResult sortOrder;
@property (nonatomic,   copy) NSComparator compareFunction;

@end

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
@implementation XCSortSelectionAction

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (instancetype)initWithSortOrder:(NSComparisonResult)sortOrder
{
    if((self = [super init])) {
        self.sortOrder = sortOrder;
        self.subtitle  = @"Sorts the selected text";
        self.title     = [NSString stringWithFormat:@"Sort selection (%@)", sortOrder == NSOrderedDescending ? @"descending" : @"ascending"];
        self.enabled   = YES;
        NSComparator compareFunction  = (self.sortOrder == NSOrderedAscending ?
                                         ^(NSString *str1, NSString *str2) {
                                             NSString *trimmedStr1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
                                             NSString *trimmedStr2 = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
                                             return [trimmedStr1 compare:trimmedStr2 options:NSNumericSearch];
                                         } :
                                         ^(NSString *str1, NSString *str2) {
                                             NSString *trimmedStr1 = [str1 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
                                             NSString *trimmedStr2 = [str2 stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

                                             NSComparisonResult result = [trimmedStr1 compare:trimmedStr2 options:NSNumericSearch];
                                             switch(result) {
                                                 case NSOrderedAscending:   return NSOrderedDescending;
                                                 case NSOrderedDescending:  return NSOrderedAscending;
                                                 case NSOrderedSame:        return NSOrderedSame;
                                             }
                                         });
        self.compareFunction = compareFunction;
    }
    return self;
}

////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
- (BOOL)executeWithContext:(id<XCIDEContext>)context
{
    NSTextView *textView = context.sourceCodeTextView;

    NSRange rangeForSelectedText  = [context retrieveTextSelectionRange];
    NSRange lineRangeForSelection = [textView.string lineRangeForRange:rangeForSelectedText];

    NSMutableArray *lineComponents = [[textView.string substringWithRange:lineRangeForSelection] componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]].mutableCopy;
    [lineComponents removeLastObject];
    if(lineComponents.count < 2) return NO; // nothing to sort

    // REVIEW: If we're sort across empty lines, we probably don't want those extra blank lines to take part in the sorted selection, so we strip them out
    // just a quick and dirty method of achieving this, I'll come up with something cleaner later
    NSMutableArray *sortedLineComponents         = [lineComponents sortedArrayUsingComparator:self.compareFunction].mutableCopy;
    NSMutableIndexSet *emptyLineComponentIndices = [NSMutableIndexSet indexSet];

    [sortedLineComponents enumerateObjectsUsingBlock:^(NSString *line, NSUInteger idx, BOOL *stop) {
        if(line.length == 0) {
            [emptyLineComponentIndices addIndex:idx];
        }
    }];
    [sortedLineComponents removeObjectsAtIndexes:emptyLineComponentIndices];

    NSString *sortedChunk = [[sortedLineComponents componentsJoinedByString:@"\n"] stringByAppendingString:@"\n"];

    [textView.textStorage beginEditing];

    [textView insertText:sortedChunk replacementRange:lineRangeForSelection];

    [textView.textStorage endEditing];

    return YES;
}

@end


text:
<?php

namespace Drupal\ds\Plugin\DsFieldTemplate;

/**
 * Plugin for the reset field template.
 *
 * @DsFieldTemplate(
 *   id = "reset",
 *   title = @Translation("Full reset"),
 *   theme = "ds_field_reset",
 * )
 */
class Reset extends DsFieldTemplateBase {

  /**
   * {@inheritdoc}
   */
  public function alterForm(&$form) {
    $config = $this->getConfiguration();

    $form['lb'] = array(
      '#type' => 'textfield',
      '#title' => $this->t('Label'),
      '#size' => '10',
      '#default_value' => $config['lb'],
    );
  }

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    $config = array();
    $config['lb'] = '';

    return $config;
  }

  /**
   * {@inheritdoc}
   */
  public function massageRenderValues(&$field_settings, $values) {
    if (!empty($values['lb'])) {
      $field_settings['lb'] = $values['lb'];
    }
  }

}


text:
{% extends 'BaseScouting/base.html' %}
{% load staticfiles %}
{% load rawinclude %}

{% block head %}
    <title>Teams - Arctic Warriors Scouting</title>

    <link rel="stylesheet" type="text/css" href="{% static 'BaseScouting/lib/bootstrap-select/bootstrap-select.min.css' %}">

{% endblock head %}

{% block content %}

Teams

                <button type="button" id="col-select" class="btn btn-default">Select Columns

                         Team #
                         Skills
                        {% if user.is_authenticated %}  Bookmarks 	 {% endif %}

                         Auto Gears
                         Auto Fuel

                         Tele Gears Scored
                         Tele Fuel

                         Rope Percentage

                    {% for team in teams %}

                         {{ team.teamNumber }}

                        {% if user.is_authenticated %}

                            {% if team.isBookmarked %}
                            <input type="image" id="bookmark-{{team.teamNumber}}" src="{% static 'Scouting2017/Icons/star_bookmarked.png' %}" style="width:20px;" onClick='bookmark({{team.teamNumber}}, "bookmark");'>
                            {% else %}
                            <input type="image" id="bookmark-{{team.teamNumber}}" src="{% static 'Scouting2017/Icons/star_not_bookmarked.png' %}" style="width:20px;" onClick='bookmark({{team.teamNumber}}, "bookmark");'>
                            {% endif %}

                            {% if team.isDoNotPick %}
                            <input type="image" id="dnp-bookmark-{{team.teamNumber}}" src="{% static 'Scouting2017/Icons/dnp_bookmarked.png' %}" style="width:20px;" onClick='bookmark({{team.teamNumber}}, "do_not_pick");'>
                            {% else %}
                            <input type="image" id="dnp-bookmark-{{team.teamNumber}}" src="{% static 'Scouting2017/Icons/dnp_not_bookmarked.png' %}" style="width:20px;" onClick='bookmark({{team.teamNumber}}, "do_not_pick");'>
                            {% endif %}

                        {% endif %}
                         {{ team.metrics.auto_gears__avg }}
                         {{ team.metrics.auto_fuel_high_score__avg }}

                         {{ team.metrics.tele_gears__avg }}
                         {{ team.metrics.tele_fuel_high_score__avg }}

                         {{ team.skills.rope_pct|floatformat:2 }}%

                    {% endfor %}

                         Avg
                         -
                        {% if user.is_authenticated %}  - 	 {% endif %}
                         {{ stats.auto_gear_avg|floatformat:2 }}
                         {{ stats.fuel_hi_auto_avg|floatformat:2 }}
                         {{ stats.gear_avg|floatformat:2 }}
                         {{ stats.fuel_hi_avg|floatformat:2 }}
                         {{ stats.rope_avg|floatformat:2 }}%

{% endblock content %}


text:
<script src="../../node_modules/steal/steal.js"
        env="window-production"
        data-base-url="./"
        data-config="./package.json!npm"
        main="bundle-false-cdn/main"></script>


text:
namespace NinjaAssassins.Models
{
    using System;

    using NinjaAssassins.Helper;

    public class Game
    {
        private static Random random = new Random();
        private Deck deck;
        private Player[] players;
        private Player playerInTurn;
        private Player nextPlayer;
        private Card currentCard;
        private bool played;
        private string log;

        public Game()
            : this (new Deck())
        {
        }

        public Game(Deck deck)
        {
            this.Deck = deck;
            this.Players = new Player[Constants.TotalPlayers];
            this.IsCardPlayed = false;
        }

        public GameState GameState { get; set; }

        public virtual Deck Deck
        {
            get
            {
                return this.deck;
            }

            set
            {
                this.deck = value;
            }
        }

        public virtual Player[] Players
        {
            get
            {
                return this.players;
            }

            set
            {
                this.players = value;
            }
        }

        public Player PlayerInTurn
        {
            get
            {
                return this.playerInTurn;
            }

            set
            {
                this.playerInTurn = value;
            }
        }

        public Player NextPlayer
        {
            get
            {
                return this.nextPlayer;
            }

            set
            {
                this.nextPlayer = value;
            }
        }

        public Card CurrentCard
        {
            get
            {
                return this.currentCard;
            }

            set
            {
                this.currentCard = value;
            }
        }

        public bool IsCardPlayed
        {
            get
            {
                return this.played;
            }

            set
            {
                this.played = value;
            }
        }

        public string Log
        {
            get
            {
                return this.log;
            }

            set
            {
                this.log = value;
            }
        }
    }
}


text:
package io.cdap.plugin.zuora.objects;

import com.google.gson.annotations.SerializedName;
import io.cdap.cdap.api.data.schema.Schema;
import io.cdap.plugin.zuora.restobjects.annotations.ObjectDefinition;
import io.cdap.plugin.zuora.restobjects.annotations.ObjectFieldDefinition;
import io.cdap.plugin.zuora.restobjects.objects.BaseObject;

import javax.annotation.Nullable;

/**
* Object name: POSTPaymentMethodRequest (POSTPaymentMethodRequest).
* Related objects:
**/
@SuppressWarnings("unused")
@ObjectDefinition(
  Name = "POSTPaymentMethodRequest",
  ObjectType = ObjectDefinition.ObjectDefinitionType.NESTED
)
public class POSTPaymentMethodRequest extends BaseObject {
  /**
  * Name: type (type), Type: string.
  * Options (custom, update, select): false, false, false
  **/
  @Nullable
  @SerializedName("type")
  @ObjectFieldDefinition(FieldType = Schema.Type.STRING)
  private String type;

  @Override
  public void addFields() {
    addCustomField("type", type, String.class);
  }
}


text:
package com.tinkerpop.gremlin.process.graph.step.sideEffect;

import com.tinkerpop.gremlin.AbstractGremlinTest;
import com.tinkerpop.gremlin.FeatureRequirement;
import com.tinkerpop.gremlin.LoadGraphWith;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.structure.Graph;
import com.tinkerpop.gremlin.structure.Vertex;
import org.apache.commons.configuration.Configuration;
import org.junit.Test;

import java.util.function.Supplier;

import static com.tinkerpop.gremlin.LoadGraphWith.GraphData.MODERN;
import static com.tinkerpop.gremlin.structure.Graph.Features.VertexFeatures.FEATURE_ADD_VERTICES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;

/**
 * @author Stephen Mallette (http://stephen.genoprime.com)
 */
public abstract class SubgraphTest extends AbstractGremlinTest {
    public abstract Traversal<Vertex, Graph> get_g_v1_outE_subgraphXknowsX_name_capXsgX(final Object v1Id, final Graph subgraph);

    public abstract Traversal<Vertex, String> get_g_V_inE_subgraphXcreatedX_name(final Graph subgraph);

    @Test
    @LoadGraphWith(MODERN)
    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ADD_VERTICES)
    public void g_v1_outE_subgraphXknowsX() throws Exception {
        final Configuration config = graphProvider.newGraphConfiguration("subgraph", this.getClass(), name.getMethodName());
        graphProvider.clear(config);
        Graph subgraph = graphProvider.openTestGraph(config);
        Traversal<Vertex, Graph> traversal = get_g_v1_outE_subgraphXknowsX_name_capXsgX(convertToVertexId("marko"), subgraph);
        printTraversalForm(traversal);
        subgraph = traversal.next();
        assertVertexEdgeCounts(3, 2).accept(subgraph);
        subgraph.E().forEachRemaining(e -> {
            assertEquals("knows", e.label());
            assertEquals("marko", e.outV().values("name").next());
            assertEquals(new Integer(29), e.outV().<Integer>values("age").next());
            assertEquals("person", e.outV().label().next());

            final String name = e.inV().<String>values("name").next();
            if (name.equals("vadas"))
                assertEquals(0.5d, e.value("weight"), 0.0001d);
            else if (name.equals("josh"))
                assertEquals(1.0d, e.value("weight"), 0.0001d);
            else
                fail("There's a vertex present that should not be in the subgraph");
        });

        graphProvider.clear(subgraph, config);
    }

    @Test
    @LoadGraphWith(MODERN)
    @FeatureRequirement(featureClass = Graph.Features.VertexFeatures.class, feature = FEATURE_ADD_VERTICES)
    public void g_V_inE_subgraphXcreatedX_name() throws Exception {
        final Configuration config = graphProvider.newGraphConfiguration("subgraph", this.getClass(), name.getMethodName());
        graphProvider.clear(config);
        final Graph subgraph = graphProvider.openTestGraph(config);
        Traversal<Vertex, String> traversal = get_g_V_inE_subgraphXcreatedX_name(subgraph);
        printTraversalForm(traversal);
        traversal.iterate();

        assertVertexEdgeCounts(5, 4).accept(traversal.sideEffects().get("sg"));

        graphProvider.clear(subgraph, config);
    }

    public static class StandardTest extends SubgraphTest {

        @Override
        public Traversal<Vertex, Graph> get_g_v1_outE_subgraphXknowsX_name_capXsgX(final Object v1Id, final Graph subgraph) {
            return g.v(v1Id).with("sg", () -> subgraph).outE().subgraph("sg", e -> e.label().equals("knows")).values("name").cap("sg");
        }

        @Override
        public Traversal<Vertex, String> get_g_V_inE_subgraphXcreatedX_name(final Graph subgraph) {
            return g.V().with("sg", () -> subgraph).inE().subgraph("sg", e -> e.label().equals("created")).values("name");
        }
    }
}


text:
#include <aws/codestar/model/ListTeamMembersRequest.h>
#include <aws/core/utils/json/JsonSerializer.h>

#include <utility>

using namespace Aws::CodeStar::Model;
using namespace Aws::Utils::Json;
using namespace Aws::Utils;

ListTeamMembersRequest::ListTeamMembersRequest() :
    m_projectIdHasBeenSet(false),
    m_nextTokenHasBeenSet(false),
    m_maxResults(0),
    m_maxResultsHasBeenSet(false)
{
}

Aws::String ListTeamMembersRequest::SerializePayload() const
{
  JsonValue payload;

  if(m_projectIdHasBeenSet)
  {
   payload.WithString("projectId", m_projectId);

  }

  if(m_nextTokenHasBeenSet)
  {
   payload.WithString("nextToken", m_nextToken);

  }

  if(m_maxResultsHasBeenSet)
  {
   payload.WithInteger("maxResults", m_maxResults);

  }

  return payload.View().WriteReadable();
}

Aws::Http::HeaderValueCollection ListTeamMembersRequest::GetRequestSpecificHeaders() const
{
  Aws::Http::HeaderValueCollection headers;
  headers.insert(Aws::Http::HeaderValuePair("X-Amz-Target", "CodeStar_20170419.ListTeamMembers"));
  return headers;

}


text:
namespace weblayer {

struct ProfileInfo {
  // The profile name supplied by client code. Name can only contain
  // alphanumeric and underscore to be valid. The empty name is valid and
  // indicates the incognito profile.
  std::string name;
  // Path where persistent profile data is stored. This will be empty for the
  // incognito profile with empty name.
  base::FilePath data_path;
  // Path where cache profile data is stored. Depending on the OS, this may
  // be the same as |data_path|; the OS may delete data in this directory.
  base::FilePath cache_path;
};

// |name| must be a valid profile name. Ensures that both data and cache path
// directories are created. The paths returned may be different from the name
// to avoid reusing directories that are marked as deleted.
ProfileInfo CreateProfileInfo(const std::string& name);

base::FilePath ComputeBrowserPersisterDataBaseDir(const ProfileInfo& info);
void MarkProfileAsDeleted(const ProfileInfo& info);
void TryNukeProfileFromDisk(const ProfileInfo& info);

// Return names of profiles on disk. Invalid profile names are ignored.
// Profiles marked as deleted are ignored.
std::vector<std::string> ListProfileNames();

// This should be called before any |MarkProfileAsDeleted| for a single process
// to avoid races.
void NukeProfilesMarkedForDeletion();

// Functions exposed for testing.
namespace internal {

bool IsProfileNameValid(const std::string& name);
std::string CheckDirNameAndExtractName(const std::string& dir_name);
bool IsProfileMarkedForDeletion(const std::string& dir_name);

}  // namespace internal

}  // namespace weblayer

#endif  // WEBLAYER_BROWSER_PROFILE_DISK_OPERATIONS_H_


text:
package tfdocgen

import (
	"fmt"
	"sort"
	"strings"

	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
	"golang.org/x/text/cases"
	"golang.org/x/text/language"
)

type Attribute struct {
	Name        string
	Description string
}

type AttributeBlock struct {
	Name       string
	Parents    []string
	Attributes []Attribute
}

type Argument struct {
	Name        string
	Description string
	Required    bool
	Optional    bool
	ForceNew    bool
	Default     interface{}
}

func (p *Argument) RequiredOrOptional() string {
	if p.Required {
		return "Required"
	}
	if p.Optional {
		return "Optional"
	}
	return ""
}

func (p *Argument) DefaultString() string {
	if p.Default != nil {
		return fmt.Sprintf("`%v`", p.Default)
	}
	return ""
}

type ArgumentBlock struct {
	Name      string
	Parents   []string
	Arguments []Argument
}

type Schema struct {
	Arguments       []Argument
	Attributes      []Attribute
	ArgumentBlocks  []ArgumentBlock
	AttributeBlocks []AttributeBlock
}

func (s *Schema) AddArgumentBlock(block ArgumentBlock) {
	for _, b := range s.ArgumentBlocks {
		if b.Name == block.Name {
			return
		}
	}
	s.ArgumentBlocks = append(s.ArgumentBlocks, block)
}

func (s *Schema) AddAttributeBlock(block AttributeBlock) {
	for _, b := range s.AttributeBlocks {
		if b.Name == block.Name {
			return
		}
	}
	s.AttributeBlocks = append(s.AttributeBlocks, block)
}

func elemIsResource(s *schema.Schema) bool {
	if s.Elem == nil {
		return false
	}
	if _, ok := s.Elem.(*schema.Resource); ok {
		return true
	}
	return false
}

func NewSchema(sc map[string]*schema.Schema, parents ...string) *Schema {
	param := &Schema{}
	for name, s := range sc {
		if s.Computed && !s.Optional && !s.Required {
			attr := Attribute{
				Name:        name,
				Description: s.Description,
			}
			if elemIsResource(s) && attr.Description == "" {
				if s.MaxItems == 1 {
					attr.Description = fmt.Sprintf("A `%s` block as defined below", name)
				} else {
					attr.Description = fmt.Sprintf("A list of `%s` blocks as defined below", name)
				}
			}

			param.Attributes = append(param.Attributes, attr)
		} else {
			arg := Argument{
				Name:        name,
				Description: s.Description,
				Required:    s.Required,
				Optional:    s.Optional,
				ForceNew:    s.ForceNew,
				Default:     s.Default,
			}
			if elemIsResource(s) && arg.Description == "" {
				if s.MaxItems == 1 {
					article := cases.Title(language.English).String(indefiniteArticle(name))
					arg.Description = fmt.Sprintf("%s `%s` block as defined below", article, name)
				} else {
					arg.Description = fmt.Sprintf("One or more `%s` blocks as defined below", name)
				}
			}
			param.Arguments = append(param.Arguments, arg)
		}

		if elemIsResource(s) {
			nest := s.Elem.(*schema.Resource)
			parents := append(parents, name)
			nestSchema := NewSchema(nest.Schema, parents...)
			if len(nestSchema.Arguments) > 0 {
				param.AddArgumentBlock(ArgumentBlock{
					Name:      name,
					Arguments: nestSchema.Arguments,
					Parents:   parents,
				})
			}
			if len(nestSchema.Attributes) > 0 {
				param.AddAttributeBlock(AttributeBlock{
					Name:       name,
					Attributes: nestSchema.Attributes,
					Parents:    parents,
				})
			}
			for _, v := range nestSchema.ArgumentBlocks {
				param.AddArgumentBlock(v)
			}
			for _, v := range nestSchema.AttributeBlocks {
				param.AddAttributeBlock(v)
			}
		}
	}

	sort.Slice(param.Arguments, func(i, j int) bool {
		return param.Arguments[i].Name < param.Arguments[j].Name
	})
	sort.Slice(param.Attributes, func(i, j int) bool {
		return param.Attributes[i].Name < param.Attributes[j].Name
	})
	sort.Slice(param.ArgumentBlocks, func(i, j int) bool {
		if strings.Join(param.ArgumentBlocks[i].Parents, "") < strings.Join(param.ArgumentBlocks[j].Parents, "") {
			return true
		}
		if strings.Join(param.ArgumentBlocks[i].Parents, "") > strings.Join(param.ArgumentBlocks[j].Parents, "") {
			return false
		}
		return param.ArgumentBlocks[i].Name < param.ArgumentBlocks[j].Name
	})
	sort.Slice(param.AttributeBlocks, func(i, j int) bool {
		if strings.Join(param.AttributeBlocks[i].Parents, "") < strings.Join(param.AttributeBlocks[j].Parents, "") {
			return true
		}
		if strings.Join(param.AttributeBlocks[i].Parents, "") > strings.Join(param.AttributeBlocks[j].Parents, "") {
			return false
		}
		return param.AttributeBlocks[i].Name < param.AttributeBlocks[j].Name
	})

	return param
}


text:
git 2cf67bcaacfec590098cefb45af824b74671cfa0

---

# Laravel Horizon

- [Вступление](#introduction)
- [Установка](#installation)
    - [Настройка](#configuration)
    - [Стратегии балансировки](#balancing-strategies)
    - [Авторизация в информационной панели](#dashboard-authorization)
- [Обновление Horizon](#upgrading-horizon)
- [Запуск Horizon](#running-horizon)
    - [Развертывание Horizon](#deploying-horizon)
- [Теги](#tags)
- [Уведомления](#notifications)
- [Метрики](#metrics)
- [Удаление невыполненных заданий](#deleting-failed-jobs)
- [Удаление заданий из очередей](#clearing-jobs-from-queues)

## Вступление

> {tip} Прежде чем углубляться в Laravel Horizon, вам следует ознакомиться с базовыми [службами очередей](/docs/{{version}}/queues) Laravel. Horizon дополняет очередь Laravel дополнительными функциями, которые могут сбивать с толку, если вы еще не знакомы с основными функциями, предлагаемыми Laravel.

[Laravel Horizon](https://github.com/laravel/horizon) предоставляет красивую панель управления и конфигурацию для ваших [очередей Redis](/docs/{{version}}/queues), работающих на Laravel. Horizon позволяет легко отслеживать ключевые показатели системы очередей, такие как пропускная способность, время выполнения и сбои заданий.

При использовании Horizon вся ваша конфигурация обработчика очереди хранится в одном простом файле конфигурации. Определив конфигурацию воркеров (worker) приложения в файле с контролем версий, вы можете легко масштабировать или изменять воркеры очереди приложения при развертывании.

## Установка

> {note} Laravel Horizon требует, чтобы вы использовали [Redis](https://redis.io) для управления очередью. Следовательно, вы должны убедиться, что соединение с очередью настроено на `redis` в файле конфигурации приложения `config/queue.php`.

Вы можете установить Horizon в свой проект с помощью диспетчера пакетов Composer:

    composer require laravel/horizon

После установки Horizon опубликуйте его ресурсы с помощью Artisan-команды `horizon:install`:

    php artisan horizon:install

### Настройка

После публикации ресурсов Horizon его основной файл конфигурации будет расположен по адресу `config/horizon.php`. Этот файл конфигурации позволяет вам настроить параметры обработчика очереди для приложения. Каждый вариант конфигурации включает описание своего назначения, поэтому обязательно внимательно изучите этот файл.

> {note} Horizon использует Redis-соединение с именем «horizon». Это имя соединения Redis зарезервировано и не должно назначаться другому Redis-соединению в файле конфигурации `database.php` или в качестве значения параметра` use` в файле конфигурации `horizon.php`.

#### Окружение

Основным параметром конфигурации Horizon, с которым вы должны ознакомиться после установки, является параметр конфигурации `environments`. Этот параметр конфигурации представляет собой массив сред, в которых работает ваше приложение, и определяет параметры рабочего процесса для каждой среды. По умолчанию эта запись содержит окружение `production` и `local`. Однако вы можете добавлять дополнительные среды по мере необходимости:

    'environments' => [
        'production' => [
            'supervisor-1' => [
                'maxProcesses' => 10,
                'balanceMaxShift' => 1,
                'balanceCooldown' => 3,
            ],
        ],

        'local' => [
            'supervisor-1' => [
                'maxProcesses' => 3,
            ],
        ],
    ],

Когда вы запускаете Horizon, он будет использовать параметры конфигурации рабочего процесса для среды, в которой работает ваше приложение. Как правило, среда определяется значением `APP_ENV` [переменной среды](/docs/{{version}}/configuration#determining-the-current-environment). Например, стандартная локальная среда Horizon настроена на запуск трех рабочих процессов и автоматическое выравнивание количества рабочих процессов, назначенных каждой очереди. По умолчанию рабочая среда настроена на запуск максимум 10 рабочих процессов и автоматический баланс количества рабочих процессов, назначенных каждой очереди.

> {note} Вы должны убедиться, что раздел `environment` файла конфигурации` horizon` содержит запись для каждой [среды](/docs/{{version}}/configuration#environment-configuration), в которой вы планируете запускать Horizon.

####  Supervisors (Наблюдатели)

Как вы можете увидеть в файле конфигурации Horizon по умолчанию — каждая среда может содержать один или несколько "supervisors" (наблюдателей). По умолчанию в файле конфигурации этот supervisor определяется как `supervisor-1`; однако вы можете называть своих supervisors как хотите. Каждый supervisor, по сути, отвечает за "наблюдение" за группой рабочих процессов и заботится о балансировке рабочих процессов по очередям.

Вы можете добавить дополнительных "supervisors" в данную среду, если хотите определить новую группу рабочих процессов, которые должны выполняться в этой среде. Вы можете сделать это, если хотите определить другую стратегию балансировки или количество рабочих процессов для данной очереди, используемой вашим приложением.

#### Значения по умолчанию

В файле конфигурации Horizon по умолчанию вы заметите параметр конфигурации `defaults`. Эта опция конфигурации определяет значения по умолчанию для [Supervisors](#supervisors) приложения. Значения конфигурации супервизора по умолчанию будут объединены с конфигурацией супервизора для каждой среды, что позволит вам избежать ненужного повторения при определении супервизоров.

### Стратегии балансировки

В отличие от стандартной системы очередей Laravel, Horizon позволяет вам выбирать из трех стратегий балансировки рабочих процессов (worker): `simple`, `auto` и `false`. Стратегия `simple`, которая используется в конфигурационном файле по умолчанию, равномерно распределяет входящие задания между рабочими процессами:

    'balance' => 'simple',

Стратегия `auto` регулирует количество рабочих процессов в очереди на основе текущей рабочей нагрузки очереди. Например, если ваша очередь `notifications` имеет 1000 ожидающих заданий, а ваша очередь `render` пуста, Horizon будет выделять больше воркеров в очередь `notifications`, пока она не станет пустой.

При использовании стратегии `auto` вы можете определить параметры конфигурации `minProcesses` и `maxProcesses` для управления минимальным и максимальным количеством рабочих процессов, которые Horizon должен масштабировать в большую или меньшую стороны:

    'environments' => [
        'production' => [
            'supervisor-1' => [
                'connection' => 'redis',
                'queue' => ['default'],
                'balance' => 'auto',
                'minProcesses' => 1,
                'maxProcesses' => 10,
                'balanceMaxShift' => 1,
                'balanceCooldown' => 3,
                'tries' => 3,
            ],
        ],
    ],

Значения конфигурации `balanceMaxShift` и `balanceCooldown` определяют, насколько быстро Horizon будет масштабироваться в соответствии с требованиями рабочих процессов. В приведенном выше примере каждые три секунды будет создаваться или уничтожаться максимум один новый процесс. Вы можете изменять эти значения по мере необходимости в зависимости от потребностей вашего приложения.

Когда для параметра `balance` установлено значение `false`, будет использоваться поведение Laravel по умолчанию, обрабатывающее очереди в том порядке, в котором они перечислены в конфигурации.

### Авторизация в информационной панели (dashboard)

Horizon предоставляет информационную панель (dashboard) по URI `/horizon`. По умолчанию вы сможете получить доступ к этой панели инструментов только в локальной среде. Однако в файле `app/Providers/HorizonServiceProvider.php` есть определение [шлюза авторизации](/docs/{{version}}/authorization#gates). Этот шлюз контролирует доступ к Horizon **во внешних средах**. Вы можете настроить этот шлюз по мере необходимости, чтобы ограничить доступ к вашему приложению Horizon:

    /**
     * Регистрация шлюза Horizon.
     *
     * Этот шлюз определяют, кто может получить доступ к Horizon во внешней среде.
     *
     * @return void
     */
    protected function gate()
    {
        Gate::define('viewHorizon', function ($user) {
            return in_array($user->email, [
                'taylor@laravel.com',
            ]);
        });
    }

#### Альтернативные стратегии аутентификации

Помните, что Laravel автоматически добавляет к шлюзу аутентифицированного пользователя замыкание (closure). Если ваше приложение обеспечивает безопасность Horizon с помощью другого метода, например ограничения IP-адресов, то пользователям Horizon может и не требоваться "аутентификация". Следовательно, нужно будет изменить написание функции (сигнатуру) выше с `function ($user)` на `function ($user = null)`, чтобы Laravel не требовал аутентификации.

## Обновление Horizon

При обновлении до новой версии Horizon важно внимательно изучить [руководство по обновлению](https://github.com/laravel/horizon/blob/master/UPGRADE.md). Кроме того, при обновлении до любой новой версии Horizon вам следует повторно опубликовать ресурсы Horizon:

    php artisan horizon:publish

Чтобы поддерживать ресурсы в актуальном состоянии и избежать проблем в будущих обновлениях, вы можете добавить команду `horizon: publish` к сценариям `post-update-cmd` в файле `composer.json` вашего приложения:

    {
        "scripts": {
            "post-update-cmd": [
                "@php artisan horizon:publish --ansi"
            ]
        }
    }

## Запуск Horizon

После того как вы настроили свои супервизоры (supervisors) и рабочие процессы (workers) в файле конфигурации приложения `config/horizon.php`, вы можете запустить Horizon, используя Artisan-команду `horizon`. Эта единственная команда запустит все настроенные рабочие процессы для текущей среды:

    php artisan horizon

Вы можете приостановить процесс Horizon и дать ему указание продолжить обработку заданий, используя Artisan-команды `horizon:pause`и `horizon:continue`:

    php artisan horizon:pause

    php artisan horizon:continue

Вы также можете приостановить и продолжить определенные Horizon [супервизоры](#supervisors), используя Artisan-команды `horizon:pause-supervisor` и `horizon:continue-supervisor`:

    php artisan horizon:pause-supervisor supervisor-1

    php artisan horizon:continue-supervisor supervisor-1

Вы можете проверить текущий статус процесса Horizon, используя Artisan-команду `horizon:status`:

    php artisan horizon:status

Вы можете корректно завершить процесс Horizon, используя Artisan-команду `horizon:terminate`. Все задания, которые в настоящее время обрабатываются, будут завершены, а затем Horizon прекратит работу:

    php artisan horizon:terminate

### Развертывание Horizon (deploy)

Когда вы будете готовы развернуть Horizon на фактическом сервере приложения, вам следует настроить монитор процессов для отслеживания командой `php artisan horizon` и перезапустить ее, если она неожиданно завершится. Не волнуйтесь, ниже мы обсудим, как установить монитор процессов.

Во время процесса развертывания приложения вы должны дать команду Horizon завершить процесс, чтобы он был перезапущен монитором процессов и получил изменения кода:

    php artisan horizon:terminate

#### Установка Supervisor

Supervisor - это монитор процессов для операционной системы Linux, который автоматически перезапустит ваш процесс `horizon`, если он перестанет выполняться. Чтобы установить Supervisor в Ubuntu, вы можете использовать следующую команду. Если вы не используете Ubuntu, вы, вероятно, можете установить Supervisor с помощью диспетчера пакетов вашей операционной системы:

    sudo apt-get install supervisor

> {tip} Если настройка Supervisor сама по себе кажется утомительной, рассмотрите возможность использования [Laravel Forge](https://forge.laravel.com), который автоматически установит и настроит Supervisor для ваших проектов Laravel.

#### Настройка Supervisor

Файлы конфигурации супервизора обычно хранятся в каталоге вашего сервера `/etc/supervisor/conf.d`. В этом каталоге вы можете создать любое количество файлов конфигурации, которые определяют для супервизора, как следует контролировать процессы. Например, давайте создадим файл `horizon.conf`, который запускает и отслеживает процесс `horizon`:

    [program:horizon]
    process_name=%(program_name)s
    command=php /home/forge/example.com/artisan horizon
    autostart=true
    autorestart=true
    user=forge
    redirect_stderr=true
    stdout_logfile=/home/forge/example.com/horizon.log
    stopwaitsecs=3600

> {note} Вы должны убедиться, что значение `stopwaitsecs` больше, чем количество секунд, потребляемых вашим самым длительным выполняемым заданием. В противном случае Supervisor может удалить ваш процесс задания до того, как оно завершит обработку.

#### Запуск Supervisor

После создания файла конфигурации вы можете обновить конфигурацию Supervisor и запустить отслеживаемые процессы, используя следующие команды:

    sudo supervisorctl reread

    sudo supervisorctl update

    sudo supervisorctl start horizon

> {tip} Для получения дополнительной информации о запуске Supervisor обратитесь к [документации Supervisor](http://supervisord.org/index.html).

## Теги

Horizon позволяет назначать "теги" (tags) заданиям, включая почтовые сообщения, широковещательные события, уведомления и прослушиватели событий в очереди. Фактически, Horizon будет интеллектуально и автоматически помечать большинство заданий в зависимости от моделей Eloquent, прикрепленных к заданию. Например, взгляните на следующее задание (job):

    <?php

    namespace App\Jobs;

    use App\Models\Video;
    use Illuminate\Bus\Queueable;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Foundation\Bus\Dispatchable;
    use Illuminate\Queue\InteractsWithQueue;
    use Illuminate\Queue\SerializesModels;

    class RenderVideo implements ShouldQueue
    {
        use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

        /**
         * The video instance.
         *
         * @var \App\Models\Video
         */
        public $video;

        /**
         * Create a new job instance.
         *
         * @param  \App\Models\Video  $video
         * @return void
         */
        public function __construct(Video $video)
        {
            $this->video = $video;
        }

        /**
         * Execute the job.
         *
         * @return void
         */
        public function handle()
        {
            //
        }
    }

Если это задание поставлено в очередь с экземпляром `App\Models\Video` с атрибутом `id` равным `1`, то оно автоматически получит тег `App\Models\Video:1`. Это потому, что Horizon будет искать в свойствах задания любые модели Eloquent. Если модели Eloquent будут найдены, Horizon разумно пометит задание, используя имя класса модели и первичный ключ:

    use App\Jobs\RenderVideo;
    use App\Models\Video;

    $video = Video::find(1);

    RenderVideo::dispatch($video);

#### Самостоятельное тегирование заданий

Если вы хотите самостоятельно определить теги для одного из объектов в очереди, вы можете определить в классе метод "tags()":

    class RenderVideo implements ShouldQueue
    {
        /**
         * Получить теги которые назначаются заданию.
         *
         * @return array
         */
        public function tags()
        {
            return ['render', 'video:'.$this->video->id];
        }
    }

## Уведомления

> {note} При настройке Horizon для отправки уведомлений Slack или SMS необходимо ознакомиться с [предварительными условиями для соответствующего канала уведомлений](/docs/{{version}}/notifications).

Если вы хотите получать уведомления, когда одна из ваших очередей имеет длительное время ожидания, вы можете использовать методы `Horizon::routeMailNotificationsTo`, `Horizon::routeSlackNotificationsTo` и `Horizon::routeSmsNotificationsTo`. Вы можете вызвать эти методы из метода `boot` [провайдера](/docs/{{version}}/providers) вашего приложения `App\Providers\HorizonServiceProvider`:

    /**
     * Загрузчик сервисов приложения.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        Horizon::routeSmsNotificationsTo('15556667777');
        Horizon::routeMailNotificationsTo('example@example.com');
        Horizon::routeSlackNotificationsTo('slack-webhook-url', '#channel');
    }

#### Настройка пороговых значений времени ожидания уведомлений

Вы можете настроить, сколько секунд будет считаться "долгим ожиданием" в файле конфигурации Horizon `config/horizon.php`. Параметр конфигурации `waits` в этом файле позволяет вам настраивать пороги ожидания для каждой комбинации соединения/очереди:

    'waits' => [
        'redis:default' => 60,
        'redis:critical,high' => 90,
    ],

## Метрики

Horizon включает панель показателей, которая предоставляет информацию о времени ожидания и пропускной способности вашего задания и очереди. Чтобы заполнить эту информационную панель, вы должны настроить Artisan-команду Horizon `snapshot` на запуск каждые пять минут через [планировщик (scheduler)](/docs/{{version}}/scheduling) вашего приложения:

    /**
     * Определение расписания для команд.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('horizon:snapshot')->everyFiveMinutes();
    }

## Удаление невыполненных заданий

Если вы хотите удалить неудавшееся задание, можете использовать команду `horizon:forget`. Команда `horizon:forget` принимает идентификатор или UUID неудачного задания в качестве своего единственного аргумента:

    php artisan horizon:forget 5

## Удаление заданий из очередей

Если вы хотите удалить все задания из очереди приложения по умолчанию, то вы можете сделать это с помощью Artisan-команды `horizon:clear`:

    php artisan horizon:clear

Можно добавить опцию `queue` для удаления заданий из определенной очереди:

    php artisan horizon:clear --queue=emails


text:
title: Phuong Nguyen

authors:
- PhuongNguyen

superuser: no

# Role/position
role: Student

# Organizations/Affiliations
organizations:
- name: Florida State University
  url: "https://fsu.edu"

# Short bio (displayed in user profile at end of posts)
bio: The author, a student at Florida State University, was enrolled in the digital microhistory lab in fall 2019.

interests:

education:

social:
- icon: twitter
  icon_pack: fab
  link: https://twitter.com/
- icon: github
  icon_pack: fab
  link: https://github.com/PCN19

user_groups:
- Writers
---
The author, a student at Florida State University, was enrolled in the digital microhistory lab in fall 2019.


text:
煤堆列表

 新增煤堆

	<form name="addForm" class="form-horizontal col-md-6" role="form" data-ng-submit="create(addForm.$valid)" novalidate>

			 煤堆名称

				<input name="name" type="text" class="form-control" data-ng-model="name" placeholder="名称" required>

请输入煤堆名称

			 所属矿场

				<select name="warehouse" class="form-control" ng-model="warehouseSelected"
					ng-options="opt as opt.name for opt in warehouses" required >
				</select>

请选择所属矿场

			 重量

				<input name="weight" type="text" min="0.0" class="form-control" data-ng-model="weight" ng-pattern="numberPattern" required>

请输入煤堆重量

 请输入正确的重量(>0)

			 热值

				<input name="power" type="text" class="form-control" data-ng-model="power" ng-pattern="numberPattern" required>

请输入热值

请输入正确的热值(>0)

			 nitrogen值

				<input name="nitrogen" type="text" class="form-control" data-ng-model="nitrogen" ng-pattern="numberPattern" required>

请输入nitrogen值

请输入正确的nitrogen(>0)

				<button type="submit" class="btn btn-info">添加</button>

	</form>


text:
package eu.cloudopting.web.rest;

import java.util.List;

import javax.inject.Inject;

import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import eu.cloudopting.domain.OrganizationStatus;
import eu.cloudopting.events.api.controller.AbstractController;
import eu.cloudopting.events.api.service.BaseService;
import eu.cloudopting.service.OrganizationStatusService;

@RestController
@RequestMapping("/api")
public class OrganizationStatusResource extends AbstractController<OrganizationStatus> {

	@Inject
	private OrganizationStatusService organizationStatusService;

	public OrganizationStatusResource() {
		super(OrganizationStatus.class);
	}

	@RequestMapping(value = "/organizationStatus", method = RequestMethod.GET,
			produces = MediaType.APPLICATION_JSON_VALUE)
	@ResponseBody
	public final ResponseEntity<List<OrganizationStatus>> findAll() {
		List<OrganizationStatus> organizationStatusList = getService().findAll();
		return new ResponseEntity<>(organizationStatusList, HttpStatus.OK);
	}

	@Override
	protected BaseService<OrganizationStatus> getService() {
		return organizationStatusService;
	}
}


text:
package org.manicmonkey.lightwidget.widget;

import android.content.Context;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.util.Log;

/**
 * @author James Baxter 2015-08-15.
 */
public class SwitchWidgetSingleConfiguration {

    public static final String PREF_NAME = "NAME";
    public static final String PREF_SWITCH_ON = "SWITCH_ON";

    private static final String PREFS_NAME = "org.manicmonkey.lightwidget.widget.SwitchWidgetSingle";
    private static final String PREF_PREFIX_KEY = "appwidget_";

    private final Context context;
    private final int appWidgetId;

    public SwitchWidgetSingleConfiguration(Context context, int appWidgetId) {
        this.context = context;
        this.appWidgetId = appWidgetId;
    }

    // Write the prefix to the SharedPreferences object for this widget
    public void save(String name, boolean value) {
        SharedPreferences.Editor prefs = getSharedPreferences().edit();
        prefs.putBoolean(getKey(name), value);
        prefs.apply();
    }

    // Write the prefix to the SharedPreferences object for this widget
    public void save(String name, String value) {
        SharedPreferences.Editor prefs = getSharedPreferences().edit();
        prefs.putString(getKey(name), value);
        Log.d(getClass().getSimpleName(), "Saved setting [" + name + "] = [" + value + "]");
        prefs.apply();
    }

    // Read the prefix from the SharedPreferences object for this widget.
    // If there is no preference saved, get the default from a resource
    public boolean getBoolean(String name) {
        SharedPreferences prefs = getSharedPreferences();
        boolean value = prefs.getBoolean(getKey(name), false);
        Log.d(getClass().getSimpleName(), "Got setting [" + name + "] = [" + value + "]");
        return value;
    }

    public String getString(String name) {
        SharedPreferences prefs = getSharedPreferences();
        String value = prefs.getString(getKey(name), null);
        Log.d(getClass().getSimpleName(), "Got setting [" + name + "] = [" + value + "]");
        return value;
    }

    public void delete(String name) {
        SharedPreferences.Editor prefs = getSharedPreferences().edit();
        prefs.remove(getKey(name));
        prefs.apply();
    }

    @NonNull
    private String getKey(String name) {
        return PREF_PREFIX_KEY + appWidgetId + "_" + name;
    }

    private SharedPreferences getSharedPreferences() {
        return context.getSharedPreferences(PREFS_NAME, 0);
    }
}