text:
#include <aws/elastictranscoder/model/PlayReadyDrm.h>
#include <aws/core/utils/json/JsonSerializer.h>

#include <utility>

using namespace Aws::Utils::Json;
using namespace Aws::Utils;

namespace Aws
{
namespace ElasticTranscoder
{
namespace Model
{

PlayReadyDrm::PlayReadyDrm() :
    m_formatHasBeenSet(false),
    m_keyHasBeenSet(false),
    m_keyMd5HasBeenSet(false),
    m_keyIdHasBeenSet(false),
    m_initializationVectorHasBeenSet(false),
    m_licenseAcquisitionUrlHasBeenSet(false)
{
}

PlayReadyDrm::PlayReadyDrm(JsonView jsonValue) :
    m_formatHasBeenSet(false),
    m_keyHasBeenSet(false),
    m_keyMd5HasBeenSet(false),
    m_keyIdHasBeenSet(false),
    m_initializationVectorHasBeenSet(false),
    m_licenseAcquisitionUrlHasBeenSet(false)
{
  *this = jsonValue;
}

PlayReadyDrm& PlayReadyDrm::operator =(JsonView jsonValue)
{
  if(jsonValue.ValueExists("Format"))
  {
    m_format = jsonValue.GetString("Format");

    m_formatHasBeenSet = true;
  }

  if(jsonValue.ValueExists("Key"))
  {
    m_key = jsonValue.GetString("Key");

    m_keyHasBeenSet = true;
  }

  if(jsonValue.ValueExists("KeyMd5"))
  {
    m_keyMd5 = jsonValue.GetString("KeyMd5");

    m_keyMd5HasBeenSet = true;
  }

  if(jsonValue.ValueExists("KeyId"))
  {
    m_keyId = jsonValue.GetString("KeyId");

    m_keyIdHasBeenSet = true;
  }

  if(jsonValue.ValueExists("InitializationVector"))
  {
    m_initializationVector = jsonValue.GetString("InitializationVector");

    m_initializationVectorHasBeenSet = true;
  }

  if(jsonValue.ValueExists("LicenseAcquisitionUrl"))
  {
    m_licenseAcquisitionUrl = jsonValue.GetString("LicenseAcquisitionUrl");

    m_licenseAcquisitionUrlHasBeenSet = true;
  }

  return *this;
}

JsonValue PlayReadyDrm::Jsonize() const
{
  JsonValue payload;

  if(m_formatHasBeenSet)
  {
   payload.WithString("Format", m_format);

  }

  if(m_keyHasBeenSet)
  {
   payload.WithString("Key", m_key);

  }

  if(m_keyMd5HasBeenSet)
  {
   payload.WithString("KeyMd5", m_keyMd5);

  }

  if(m_keyIdHasBeenSet)
  {
   payload.WithString("KeyId", m_keyId);

  }

  if(m_initializationVectorHasBeenSet)
  {
   payload.WithString("InitializationVector", m_initializationVector);

  }

  if(m_licenseAcquisitionUrlHasBeenSet)
  {
   payload.WithString("LicenseAcquisitionUrl", m_licenseAcquisitionUrl);

  }

  return payload;
}

} // namespace Model
} // namespace ElasticTranscoder
} // namespace Aws


text:
package org.kuali.coeus.propdev.api.budget.subaward;

import org.kuali.coeus.common.budget.api.core.IdentifiableBudget;

public interface IdentifiableSubAwardBudget extends IdentifiableBudget {
    Integer getSubAwardNumber();
}

redpajama_set_name: RedPajamaGithub


text:
package com.metova.android.util.concurrent;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * A blocking unbounded thread pool. Tasks are run on a thread from the thread
 * pool with a default maximum size of 10 concurrently running threads. New
 * tasks that are added when all threads are busy will be added to a queue.
 *
 * @see ThreadPoolExecutor
 */
public class ThreadPool extends ThreadPoolExecutor {

    private static final int CORE_POOL_SIZE = 10;
    private static final int MAXIMUM_POOL_SIZE = 10;
    private static final TimeUnit TIME_UNIT = TimeUnit.MILLISECONDS;
    private static final int KEEP_ALIVE_TIME = 1000;

    /**
     * Creates a thread pool with a default size of 10 concurrently running threads.
     */
    public ThreadPool() {

        super( CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME, TIME_UNIT, new LinkedBlockingQueue<Runnable>() );
    }

    /**
     * Creates a thread pool with the given size.
     * @param poolSize the size of the pool
     */
    public ThreadPool(int poolSize) {

        this( poolSize, false );
    }

    /**
     * Creates a thread pool with the given size.
     * @param poolSize the size of the pool
     * @param whether or not to limit the queue to 20 tasks
     */
    @SuppressWarnings( "serial" )
    public ThreadPool(int poolSize, final boolean limitQueue) {

        super( poolSize, poolSize, KEEP_ALIVE_TIME, TIME_UNIT, new LinkedBlockingQueue<Runnable>() {

            @Override
            public boolean offer( Runnable e ) {

                if ( limitQueue ) {

                    boolean value = super.offer( e );
                    if ( size() > 20 ) {
                        poll();
                    }

                    return value;
                }
                else {
                    return super.offer( e );
                }
            }
        } );
    }
}


text:
var should = require('chai').should();
var TimeTraveler = require('../lib/time_traveler.js');

describe('TimeTraveler', function(){
  describe('constructor', function(){
    it('converts a string to a moment', function(){
      var settings = {starts_at: "2016-10-31"};
      var traveler = new TimeTraveler(settings);

      traveler.starts_at.should.be.a('object');
      traveler.starts_at.date().should.equal(31);
      traveler.starts_at.month().should.equal(10-1);  // January = 0
      traveler.starts_at.year().should.equal(2016);
    });
  });

  describe("#step_forward()", function(){
    it("should increment the current step by 1", function(){
      var settings = {starts_at: "2016-10-31", time_units: "years"};
      var traveler = new TimeTraveler(settings);

      traveler.step_forward();
      traveler.current.step.should.equal(1);

      traveler.step_forward();
      traveler.current.step.should.equal(2);
    });

    it("should increment the current time by 1 time unit", function(){
      var settings = {starts_at: "2016-10-31", time_units: "years"};
      var traveler = new TimeTraveler(settings);

      traveler.step_forward();
      traveler.current.time.format('YYYY MM DD').should.equal("2017 10 31");

      traveler.step_forward();
      traveler.current.time.format('YYYY MM DD').should.equal("2018 10 31");
    });
  });

  describe("#step_backward()", function(){
    it("should decrement the current step by 1", function(){
      var settings = {starts_at: "2016-10-31", time_units: "years"};
      var traveler = new TimeTraveler(settings);

      traveler.step_backward();
      traveler.current.step.should.equal(-1);

      traveler.step_backward();
      traveler.current.step.should.equal(-2);
    });

    it("should decrement the current time by 1 time unit", function(){
      var settings = {starts_at: "2016-10-31", time_units: "years"};
      var traveler = new TimeTraveler(settings);

      traveler.step_backward();
      traveler.current.time.format('YYYY MM DD').should.equal("2015 10 31");

      traveler.step_backward();
      traveler.current.time.format('YYYY MM DD').should.equal("2014 10 31");
    });
  });

  describe("#validate()", function(){
    it('should return an empty array if all settings are valid', function(){
      var settings = {starts_at: "2016-10-31", steps: 10, time_units: "days"};
      var traveler = new TimeTraveler(settings);

      traveler.validate().should.be.an('array');
    });

    describe("with errors", function(){
      it("should return ['starts_at must be a valid ISO date']", function(){
        var settings = {starts_at: true, steps: 10, time_units: "days"};
        var traveler = new TimeTraveler(settings);

        traveler.validate().should.have.members(["starts_at must be a valid ISO date"]);
      });

      it("should return ['steps must be an integer']", function(){
        var settings = {starts_at: "2016-10-31", steps: 11.1, time_units: "days"};
        var traveler = new TimeTraveler(settings);

        traveler.validate().should.have.members(["steps must be an integer"]);
      });
    });
  });

  describe('#is_valid()', function(){
    it('returns TRUE if no errors', function(){
      var settings = {starts_at: "2016-10-31", steps: 10, time_units: "days"};
      var traveler = new TimeTraveler(settings);

      traveler.is_valid().should.equal(true);
    });

    it('returns FALSE if errors', function(){
      var settings = {starts_at: 10, steps: "5", time_units: "days"};
      var traveler = new TimeTraveler(settings);

      traveler.is_valid().should.equal(false);
    });
  });

  describe('#run(callback)', function(){
    it('throws error if the TimeTraveler is not valid', function(){
      var settings = {starts_at: "2016-10-31", steps: true};
      var traveler = new TimeTraveler(settings);
      var callback = function(step){ console.log("test"); };

      traveler.run.bind(traveler, callback).should.Throw(Error, /Invalid TimeTraveler: ['steps must be an integer']/);
    });

    it('calls the given callback for each time interval', function(){
      var settings = {starts_at: "2016-10-31", steps: 5, time_units: "days", time_scale: 1};
      var traveler = new TimeTraveler(settings);
      var counter = 0;

      traveler.run(function(dt){ counter++; });

      counter.should.equal(5);
    });
  });

  describe('#runAsync(callback)', function(){
    it('rejects Promise if the TimeTraveler is not valid', function(){
      var settings = {starts_at: "2016-10-31", steps: true};
      var traveler = new TimeTraveler(settings);
      var callback = function(step){ };

      return traveler.runAsync(callback).catch(function (error) {
        error.message.should.equal("Invalid TimeTraveler: steps must be an integer");
      });
    });

    it('resolve Promise after calling the given callback for each time interval', function(){
      var settings = {starts_at: "2016-10-31", steps: 5, time_units: "days", time_scale: 1};
      var traveler = new TimeTraveler(settings);
      var counter = 0;
      var callback = function(dt){ counter++; }

      return traveler.runAsync(callback).then(function () {
        counter.should.equal(5);
      });
    });
  });
});


text:
package com.github.landyking.learnShiro.kaitao;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

/**
 * Description:TODO <br/>
 *
 * @author: Landy
 * @date: 2017/9/21 9:22
 * note:
 */
public abstract class AbstractKaitaoTest {
    protected void login(String cfgFile, String userName, String passWord) {
        //1、获取SecurityManager工厂,此处使用Ini配置文件初始化SecurityManager
        Factory<SecurityManager> factory =
                new IniSecurityManagerFactory( cfgFile);
        //2、得到SecurityManager实例 并绑定给SecurityUtils
        org.apache.shiro.mgt.SecurityManager securityManager = factory.getInstance();
        SecurityUtils.setSecurityManager(securityManager);
        //3、得到Subject及创建用户名/密码身份验证Token(即用户身份/凭证)
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(userName, passWord);

        try {
            //4、登录,即身份验证
            subject.login(token);
        } catch (AuthenticationException e) {
            //5、身份验证失败
        }
    }

    protected org.apache.shiro.subject.Subject subject() {
        return SecurityUtils.getSubject();
    }
}


text:
'use strict';

describe('VotingPageController', function () {

    beforeEach(module('GVA.Voting'));

    var scope;
    var mockIdentityService;
    var mockTokenService;
    var mockPollService;
    var mockVoteService;
    var mockRoutingService;
    var mockRouteParams;

    var setTokenPromise;
    var getTokenPromise;
    var getManageIdPromise;
    var submitVotePromise;
    var getTokenVotesPromise;
    var getPollPromise;

    var pollId = '5130518A-4DA5-4FAA-B8FC-0242C9CAA079';

    var mockTokenValue = '4A9AFE2C-240B-4BFF-A569-0FEF5A78FC10';
    var mockPollValue = {
        MaxPoints: 5,
        MaxPerVote: 1,
        Choices: [{ Id: 1 }, { Id: 2 }, { Id: 3 }, { Id: 4 }],
        NamedVoting: false,

        TokenGuid: mockTokenValue
    };

    beforeEach(inject(function ($rootScope, $q, $controller) {

        scope = $rootScope.$new();

        scope.poll = { Choices: [] };

        getTokenPromise = $q.defer();
        getManageIdPromise = $q.defer();
        setTokenPromise = $q.defer();

        mockRouteParams = { pollId: pollId };

        mockIdentityService = {
            identity: { name: 'Bob' },
            registerIdentityObserver: function () { },
            openLoginDialog: function () { }
        };
        mockTokenService = {
            setToken: function() {
                return setTokenPromise.promise;
            },
            retrieveToken: function () {
                return mockTokenValue;
            },
            getManageId: function () {
                return getManageIdPromise.promise;
            }
        };

        mockPollService = {
            getPoll: function () { }
        };
        getPollPromise = $q.defer();
        spyOn(mockPollService, 'getPoll').and.callFake(function () { return getPollPromise.promise; });

        mockVoteService = {
            getTokenVotes: function () { },
            submitVote: function () { }
        };
        submitVotePromise = $q.defer();
        getTokenVotesPromise = $q.defer();
        spyOn(mockVoteService, 'submitVote').and.callFake(function () { return submitVotePromise.promise; });
        spyOn(mockVoteService, 'getTokenVotes').and.callFake(function () { return getTokenVotesPromise.promise; });

        mockRoutingService = {
            getResultsPageUrl: function () { },
            navigateToResultsPage: function () { }
        };

        spyOn(mockIdentityService, 'registerIdentityObserver').and.callThrough();
        spyOn(mockIdentityService, 'openLoginDialog').and.callThrough();
        spyOn(mockTokenService, 'retrieveToken').and.callThrough();
        spyOn(mockTokenService, 'setToken').and.callThrough();
        spyOn(mockRoutingService, 'navigateToResultsPage').and.callThrough();

        $controller('VotingPageController', {
            $scope: scope,
            IdentityService: mockIdentityService,
            TokenService: mockTokenService,
            PollService: mockPollService,
            VoteService: mockVoteService,
            RoutingService: mockRoutingService,
            $routeParams: mockRouteParams
        });
    }));

    it('Registers callback with IdentityService', function () {

        expect(mockIdentityService.registerIdentityObserver).toHaveBeenCalled();
    });

    it('Gets poll from PollService and saves it into scope', function () {

        getPollPromise.resolve(mockPollValue);
        setTokenPromise.resolve();
        scope.$apply();

        expect(mockPollService.getPoll).toHaveBeenCalled();

        expect(scope.poll).toBe(mockPollValue);
    });

    it('Gets poll from PollService and saves the token', function () {

        getPollPromise.resolve(mockPollValue);
        setTokenPromise.resolve();
        scope.$apply();

        expect(mockTokenService.setToken).toHaveBeenCalled();
    });

    it('Gets votes for a given Token', function () {

        getPollPromise.resolve({ data: mockPollValue });
        setTokenPromise.resolve();
        scope.$apply();

        expect(mockVoteService.getTokenVotes).toHaveBeenCalled();
    });

    it('Sets the value for the vote into the choices', function () {
        var tokenVotes = [
            { ChoiceId: 1, VoteValue: 1 },
            { ChoiceId: 3, VoteValue: 1 }
        ];

        var tokenResponse = { data: tokenVotes };
        getTokenVotesPromise.resolve(tokenResponse);
        getPollPromise.resolve(mockPollValue);

        var expectedVoteUpdatedChoices = {
            data: [
                { Id: 1, voteValue: 1 },
                { Id: 2, voteValue: 0 },
                { Id: 3, voteValue: 1 },
                { Id: 4, voteValue: 0 }
            ]
        };
        setTokenPromise.resolve();

        scope.$apply();
        expect(scope.poll.Choices).toEqual(expectedVoteUpdatedChoices.data);
    });

    describe('Submit Vote', function () {

        beforeEach(function () {
            setTokenPromise.resolve();
            getPollPromise.resolve(mockPollValue);
            scope.$apply();
        });

        it('Does not call Vote Service when choices is null', function () {

            scope.submitVote(null);

            expect(mockVoteService.submitVote).not.toHaveBeenCalled();
        });

        it('Does not call Vote Service when there is no token', function () {

            scope.token = null;

            scope.submitVote([]);

            expect(mockVoteService.submitVote).not.toHaveBeenCalled();
        });

        it('Calls what has been set as the voteCallback when there are choices to submit', function () {
            var called = false;

            scope.setVoteCallback(function () { called = true; return []; });

            scope.submitVote([]);

            expect(called).toBe(true);
        });

        it('Calls Vote Service when there are choices to submit', function () {
            var called = false;

            scope.setVoteCallback(function () { called = true; return []; });

            scope.submitVote([]);

            expect(called).toBe(true);
        });

        it('Calls Routing Service to navigate to the results page when the Vote Service submit is successful', function () {
            submitVotePromise.resolve();

            scope.submitVote([]);

            scope.$apply();
            expect(mockRoutingService.navigateToResultsPage).toHaveBeenCalled();
        });

        it('With no identity set for a Named Voting poll, calls the IdentityService to show the login dialog', function () {
            mockIdentityService.identity = null;
            scope.poll.NamedVoting = true;

            scope.submitVote([]);

            expect(mockIdentityService.openLoginDialog).toHaveBeenCalled();
        });
    });

    describe('Voter Choice Added Event', function () {

        it('Gets poll from PollService and saves it into scope', function () {

            getPollPromise.resolve(mockPollValue);
            setTokenPromise.resolve();
            scope.$apply();

            // Clear the spied calls, as it gets called during construction.
            mockPollService.getPoll.calls.reset();

            scope.$emit('voterChoiceAddedEvent');

            expect(mockPollService.getPoll).toHaveBeenCalled();
            expect(scope.poll).toBe(mockPollValue);

        });

        it('Maintains selected values after poll reload', function () {
            var poll = {
                Choices: [
                    { Id: 1, voteValue: 1 },
                    { Id: 2, voteValue: 2 },
                    { Id: 3, voteValue: 0 },
                    { Id: 4, voteValue: 0 },
                    { Id: 5, voteValue: 3 }
                ]
            };

            var selectedChoices = [
                { Id: 1, voteValue: 1 },
                { Id: 2, voteValue: 0 },
                { Id: 3, voteValue: 0 },
                { Id: 4, voteValue: 2 }
            ];

            var expectedChoices = [
                { Id: 1, voteValue: 1 },
                { Id: 2, voteValue: 0 },
                { Id: 3, voteValue: 0 },
                { Id: 4, voteValue: 2 },
                { Id: 5, voteValue: 0 }
            ];

            scope.poll.Choices = selectedChoices;

            getPollPromise.resolve(poll);
            scope.$emit('voterChoiceAddedEvent');
            setTokenPromise.resolve();

            scope.$apply();
            expect(scope.poll.Choices).toEqual(expectedChoices);
        });

        it('Passes token to PollService when getting poll', function () {

            getPollPromise.resolve(mockPollValue);
            setTokenPromise.resolve();
            scope.$apply();

            // Clear the spied calls, as it gets called during construction.
            mockPollService.getPoll.calls.reset();

            scope.$emit('voterChoiceAddedEvent');

            expect(mockPollService.getPoll).toHaveBeenCalledWith(pollId, mockTokenValue);
        });

    });

    describe('Clear Vote', function () {

        beforeEach(function () {
            getPollPromise.resolve(mockPollValue);
            setTokenPromise.resolve();
            scope.$apply();
        });

        it('Calls Vote Service to clear the vote', function () {

            scope.clearVote();

            expect(mockVoteService.submitVote).toHaveBeenCalled();
        });

        it('Calls Vote Service with no votes', function () {

            scope.clearVote();

            var expectedBallot = {
                VoterName: 'Bob',
                Votes: []
            };

            expect(mockVoteService.submitVote).toHaveBeenCalledWith(jasmine.any(String), expectedBallot, jasmine.any(String));
        });

        it('Calls Routing Service to navigate to the results page when the Vote Service submit is successful', function () {

            submitVotePromise.resolve();

            scope.clearVote();

            scope.$apply();
            expect(mockRoutingService.navigateToResultsPage).toHaveBeenCalled();
        });

    });

});


text:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>io.klerch.alexa.utterances.console (Alexa Skill Schema Generator 2.0.0 API)</title>
<meta name="date" content="2018-08-14">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">

io.klerch.alexa.utterances.console

Classes

Console


text:
* * *

titul: "Umělec: tvary" Náhled: page_curriculum téma: žádné

* * *

<%= partial('curriculum_header', :unittitle=>Kurz 1',: Lekce => 10,: titul => ' Umělec: tvary,: unplugged => false,: čas => 30) %>

[obsah]

[dohromady]

## Lekce – přehled

Vrátíme-li se k umělci, hádanky v této fázi se zaměřují na kreslení, kombinování a dělení čtverců a obdélníků.

[Shrnutí]

## Přehled výuky

### **Začínáme**

[Úvod](#GetStarted)

### **Aktivita: Umělecké tvary**

[Umělec: tvary](#Activity)

### **Rozšířená výuka**

[Aktivity jako rozšíření](#Extended)

[/ Shrnutí]

## Cíle lekce

### Studenti budou:

  * Vytvořit program ke kreslení tvaru pomocí postupných kroků
  * Vysvětlete rozdíl mezi čtverci a obdélníky a podpořte to důkazy skládající se z povelů pro kreslení různých tvarů
  * Porovnat pozice různých objektů použitím "nahoře," "pod", "vedle"
  * Správně identifikovat tvary bez ohledu na jejich celkovou velikost
  * Porovnat a dát do protikladu čtverce a obdélníky podle jejich počtu stran a délky stran

[/ dohromady]

[dohromady]

## Začínáme

###  Úvod

Před zahájením této lekce, studenti by měli mít základní znalosti o čtvercích a obdélnících.

  * Jak si udělat čtverec? Obdélník?
  * Co se stane, když dáte dva čtverce vedle sebe?

[/ dohromady]

[dohromady]

## Aktivita

###  [Umělec: tvary](http://learn.code.org/s/course1/stage/10/puzzle/1)

Pokud studenti bojují s použitím správného počtu bloků k nakreslení čáry, připomeňte, že každý segment čáry má bod na obou koncích.

[/ dohromady]

[dohromady]

## Rozšířená výuka

Používejte tyto aktivity k prohloubení učení studentů. Lze je použít jako mimoškolní aktivitu nebo jiné obohacení.

### Kopírka

  * Dejte studentům dva listy papíru
  * Na jednom listu mají studenti nakreslete jednoduchý obrázek (pouze pravé úhly a rovné čáry)
  * Na druhém listu nakreslete pokyny k znovuvytvoření tohoto obrazu pomocí řady šipek
  * Vyměňte návody a pokuste se znovu vytvořit obrázek pomocí poskytnutých instrukcí.

[/ dohromady]

[standardy]

## Připojení a základní informace

### PARCC / chytřejší vyvážené zhodnocení schopností

  * Klepnout / poklepat
  * Přetažení
  * Vybrat objekt
  * Použít video přehrávač

### ISTE standardy (dříve NETS)

  * 1.a - uplatnit existující znalosti pro vytváření nových myšlenek, výrobků nebo procesů.
  * 1.b - vytvořit originální díla jako prostředky výraz osobní nebo skupiny.
  * 1.c - Použití modelů a simulace ke zkoumání komplexních systémů a problémů.
  * 4.b - plánovat a spravovat aktivity k vývoji řešení nebo dokončení projektu.
  * 6.a - porozumět a používat technologické systémy.
  * 6.c - systémy pro odstraňování potíží a aplikace.
  * 6.d - převod současných znalostí k učení nových technologií.

### CSTA K-12 standardy informatiky

  * CL.L1:3-02. Kooperujte a spolupracujte s kolegy učiteli a dalšími používající technologie.
  * CT.L1:3-01. Používejte technologické prostředky (např, puzzly, programy na logické myšlení ) k řešení problémů odpovídající věku.
  * CPP.L1:6-05. Sestavte program jako soubor podrobných instrukcí, které musí být provedeny.
  * CPP.L1:6-06. Realizovat řešení problémů pomocí vizuálního programovacího jazyka blokově založeném.
  * CT.L2-01. Používejte základní kroky v algoritmické řešení problémů k návrhu řešení.
  * BTOL2-06 - popište a analyzujte posloupnost sledovaných instrukcí.
  * CT.L2-08. Používejte vizuální zobrazení problémových stavů, struktur a dat.
  * CT.L2-12. Používejte abstrakci k rozkladu problému na dílčí problémy.

### Next-Gen vědecké standardy

  * K-2-PS3-2. Používejte nástroje a materiály poskytnuté na návrh a vytváření zařízení, které řeší konkrétní problém nebo řeší specifický problém.

### Obecné základní matematické postupy

  *   1. Ujasnit problémy a vytrvat v jejich řešení.
  *   1. Zdůvodňovat abstraktně a kvantitativně.
  *   1. Modelovat s matematikou
  *   1. Používat strategicky vhodné nástroje.
  *   1. Dbát na přesnost.
  *   1. Vyhledávejte a využívejte struktury.
  *   1. Vyhledávejte a vyjádřete pravidelnost v opakujících úvahách.

### Obecné základní standardy matematiky

  * K.G.A.1 - popisují objekty v prostředí pomocí názvy obrazců a popisují vzájemné polohy těchto objektů pomocí termínů, jako nad, pod, vedle, před, za a vedle.
  * K.G.A.2 - správně název obrazce bez ohledu na jejich orientaci nebo celkovou velikost.
  * K.G.B.6 - tvoří jednoduché tvary k větší tvary. Například "můžete zapojit tyto dva trojúhelníky s plnou stran dotýkají aby obdélník?"
  * 1.G.A.1 - rozlišovat mezi vlastnostmi (např. trojúhelníky jsou uzavřené a trojstranné) proti definování vlastností (např. barvy, orientace, celkové rozměry); vytvořit a nakreslit tvary mající definované vlastnosti.
  * 1.G.A.2 - složit dvojrozměrné obrazce (obdélníky, čtverce, lichoběžníky, trojúhelníky, půlkruhy a čtvrtkruhy) nebo třírozměrné obrazce (krychle, hranoly, jehlany a válce). Chcete-li vytvořit složený tvar a vytvořit nové tvary ze složeného tvaru.
  * 1.G.A.3 - Rozdělení kruhů a obdélníků na dva a čtyři rovné tvary, popište pomocí slova polovina, čtvrtina a čtvrtiny a použijte věty se slovy polovina, čtvrtina a čtvrtletí. Popište celek jako ze dvou nebo čtyř částí. Pochopit tyto příklady, že rozkládají do stejných částí vytvářející menší části.
  * 2.G.A.1 - rozpoznat a nakreslit tvary s zadanými vlastnostmi, například zadaný počet úhlů nebo počet stejných stěn.1 identifikovat trojúhelníky, čtyřúhelníky, pětiúhelníky, šestiúhelníky a krychle.

### Obecné základní standardy umění jazyka

  * SL.K.1 - podílet se na společné rozhovory s rozmanitými partnery o tématech a texty o školce s vrstevníky a dospělými v malých a větších skupinách.
  * SL.K.3 - Doplnit kresby nebo jiné vizuální zobrazení požadovaných popisů pro zajištění dalších podrobností.
  * L.K.6 - používat slova a fráze, získané během konverzace, čtení a přečíst si je a reagovat na texty.
  * SL.K.1 - podílet se na společných rozhovorech s rozmanitými partnery o tématech a textech o školce s vrstevníky a dospělými, v malých a větších skupinách.
  * SL.1.5 - přidání kresby nebo jiné vizuální zobrazení popisu, když je vhodné vyjasnit nápady, myšlenky a pocity.
  * L.1.6 - používat slova a fráze, získaná prostřednictvím konverzace, čtení a přečtená, odpovídat na texty, včetně použití často se vyskytujících spojek signalizující jednoduché vztahy.
  * SL.K.1 - podílet se na společných rozhovorech s rozmanitými partnery o tématech a textech o školce s vrstevníky a dospělými, v malých a větších skupinách.
  * L.2.6 - používat slova a fráze získané prostřednictvím konverzace, čtení a přečíst si je a odpovídat na texty včetně použití k popisu přídavných jmen a příslovců.

[/standardy]

[/ obsah]

<link rel="stylesheet" type="text/css" href="../docs/morestyle.css" />


text:
include ActionView::Helpers::SanitizeHelper
class Subject < Topic
  define_index do
    indexes :name, :sortable => true
  end

  def self.site_subjects(local_site=nil, find_opts={})
    Subject.for_site(local_site).find(:all, find_opts)
  end

  def self.national_subjects
    site_subjects(nil)
  end

  def self.find_subject(slug, local_site=nil)
    Subject.for_site(local_site).find(:first, :conditions => {:slug => slug})
  end

  def self.tagged_subject(tag, local_site=nil)
    Subject.for_site(local_site).find(:first, :conditions => {:tag_id => tag.id})
  end

  def groupings
    Subject.groupings_for(slug).collect{|g| g.keys.first}
  end

  def grouping(group)
    Subject.grouping_for(slug, group)
  end

  # just in case subject gets treated as a topic...
  def subjects
    []
  end

  def is_high_volume?
    topic_volume <= SocialNewsConfig["high_volume_subject_days"]
  end

  def is_minor_subject?
    topic_volume >= 30
  end

  # for topics_column
  def topics_by_grouping(local_site=nil)
    topics_by_grouping = {}
    TopicRelation.find(:all, :conditions => {:local_site_id => local_site ? local_site.id : nil, :related_topic_id => self.id}).each do |topic_relation|
      grouping = topic_relation.grouping || :none
      topics_by_grouping[grouping] ||= []
      topics_by_grouping[grouping] << topic_relation.topic unless topic_relation.topic.id == self.id # weird condition
    end
    topics_by_grouping.each{|g, topic_list| topics_by_grouping[g] = topic_list.sort{|tx, ty| tx["name"] <=> ty["name"]}}
    return topics_by_grouping
  end

  # for 'all topics' page
  def topics(find_options={}, topic_status=["list", "feature"])
    find_options[:joins]      = " JOIN topic_relations on topics.id=topic_relations.topic_id" +
                                " JOIN tags ON tags.id = topics.tag_id" +
                                " #{find_options[:joins]}"
    find_options[:conditions] = "topic_relations.related_topic_id = #{self.id}" +
                                " AND topic_relations.context = 'subject'" +
                                " #{find_options[:conditions]}"
    Topic.topics_only.for_site(self.local_site).with_status(topic_status).find(:all, find_options)
  end

  # for 'featured topics' page
  def featured_topics(find_options={})
    topics(find_options, "feature")
  end

  def top_sources
    Source.top_sources_for_subject(self)
  end

  class << self
    def search(str, options = {})
      Topic.search(str, options.merge(:conditions => { :type => 'Subject' }))
    end

    def names
      TopicRelation.topic_subjects
    end

    def groupings_for(subject)
      TopicRelation.topic_subject_groupings(subject)["groupings"]
    end

    def groupings_for_select(subject)
      groupings_for(subject).collect{|g| [g.values.first["name"], g.keys.first]}
    end

    def grouping_for(name, group)
        grouping = groupings_for(name).select{|g| g.keys.first==group}
        raise "No grouping for #{group}" if grouping.empty?
        return grouping.first.values.first["name"]
      rescue RuntimeError
        nil
    end
  end
end


text:
/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package rocks.trino.rest.slack.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class SlackResponse
{
    private final boolean ok;
    private final String error;

    public SlackResponse(
            @JsonProperty("ok") boolean ok,
            @JsonProperty("error") String error)
    {
        this.ok = ok;
        this.error = error;
    }

    public String getError()
    {
        return error;
    }

    public boolean isOk()
    {
        return ok;
    }
}


text:
/**
 * Constructs a posterisation filter.
 *
 * @class A simple posterisation filter.
 * @param {number} levels The number of levels to output.
 */
cinejs.filters.Posterise = function (levels) {
	this.divisor = 256 / Math.floor(levels);
};

/**
 * The processing function for the posterisation filter.
 *
 * @param {ImageData} frame
 * @param {HTMLCanvasElement} canvas
 */
cinejs.filters.Posterise.prototype.processFrame = function (frame, canvas) {
	for (var i = 0; i < frame.data.length; i += 4) {
		/* We'll use round rather than floor to try to keep the overall
		 * image brightness roughly the same. */
		frame.data[i + 0] = this.divisor * Math.round(frame.data[i + 0] / this.divisor);
		frame.data[i + 1] = this.divisor * Math.round(frame.data[i + 1] / this.divisor);
		frame.data[i + 2] = this.divisor * Math.round(frame.data[i + 2] / this.divisor);
	}
};

// See, Americans, I think of you.
cinejs.filters.Posterize = cinejs.filters.Posterise;

// vim: set cin noet ts=8 sw=8:


text:
using System.Collections.Generic;

namespace MusicXml.Domain
{
	public class Measure
	{
		internal Measure()
		{
			Width = -1;
			MeasureElements = new List<MeasureElement>();
		}

		public decimal Width { get; internal set; }

		// This can be any musicXML element in the measure tag, i.e. note, backup, etc
		public List<MeasureElement> MeasureElements { get; internal set; }

		public MeasureAttributes Attributes { get; internal set; }
	}
}


text:
sap.ui.define([
	"./BaseController",
	"../model/formatter",
	"sap/ui/Device",
	"sap/ui/model/Filter",
	"sap/ui/model/FilterOperator",
	"sap/m/MessageToast",
	"sap/ui/model/json/JSONModel",
	"sap/ui/core/Fragment"
], function (
	BaseController,
	formatter,
	Device,
	Filter,
	FilterOperator,
	MessageToast,
	JSONModel,
	Fragment) {
	"use strict";

	return BaseController.extend("sap.ui.demo.cart.controller.Category", {
		formatter : formatter,
		// Define filterPreviousValues as global variables because they need to be accessed from different functions
		_iLowFilterPreviousValue: 0,
		_iHighFilterPreviousValue: 5000,

		onInit: function () {
			var oViewModel = new JSONModel({
				Suppliers: []
			});
			this.getView().setModel(oViewModel, "view");
			var oComponent = this.getOwnerComponent();
			this._oRouter = oComponent.getRouter();
			this._oRouter.getRoute("category").attachMatched(this._loadCategories, this);
			this._oRouter.getRoute("productCart").attachMatched(this._loadCategories, this);
			this._oRouter.getRoute("product").attachMatched(this._loadCategories, this);
			this._oRouter.getRoute("comparison").attachMatched(this._loadCategories, this);
			this._oRouter.getRoute("comparisonCart").attachMatched(this._loadCategories, this);
		},

		_loadCategories: function(oEvent) {
			var bSmallScreen = this.getModel("appView").getProperty("/smallScreenMode"),
				sRouteName = oEvent.getParameter("name");

			// switch to first column in full screen mode for category route on small devices
			if (sRouteName === "category") {
				this._setLayout(bSmallScreen ? "One" : "Two");
			}

			var oModel = this.getModel();
			this._loadSuppliers();
			var oProductList = this.byId("productList");
			var oBinding = oProductList.getBinding("items");
			oBinding.attachDataReceived(this.fnDataReceived, this);
			var sId = oEvent.getParameter("arguments").id;
			this._sProductId = oEvent.getParameter("arguments").productId;
			// the binding should be done after insuring that the metadata is loaded successfully
			oModel.metadataLoaded().then(function () {
				var oView = this.getView(),
					sPath = "/" + this.getModel().createKey("ProductCategories", {
					Category: sId
				});
				oView.bindElement({
					path : sPath,
					parameters: {
						expand: "Products"
					},
					events: {
						dataRequested: function () {
							oView.setBusy(true);
						},
						dataReceived: function () {
							oView.setBusy(false);
						}
					}
				});
			}.bind(this));
		},

		/**
		 * Create a unique array of suppliers to be used in the supplier flter option
		 * @private
		 */
		_loadSuppliers: function () {
			var oModel = this.getModel();
			oModel.read("/Products", {
				success: function (oData) {
					var aProducts = oData.results,
						aSuppliers = [];

					aProducts.forEach(function (oProduct) {
						aSuppliers.push(oProduct.SupplierName);
					});
					// remove duplications from the suppliers array and sort it
					var aUniqueSuppliers = aSuppliers.filter(function (sName, iIndex, aUniqueSuppliers) {
						return aUniqueSuppliers.indexOf(sName) === iIndex;
					}).sort();

					// create the unique suppliers array as array of of objects
					aUniqueSuppliers.map(function (sSupplierName, iIndex, aUniqueSuppliers) {
						aUniqueSuppliers[iIndex] = {SupplierName: sSupplierName};
					});
					this.getModel("view").setProperty("/Suppliers", aUniqueSuppliers);
				}.bind(this)
			});

			this._clearComparison();
		},

		fnDataReceived: function() {
			var oList = this.byId("productList");
			var aListItems = oList.getItems();
			aListItems.some(function(oItem) {
				if (oItem.getBindingContext().getPath() === "/Products('" + this._sProductId + "')") {
					oList.setSelectedItem(oItem);
					return true;
				}
			}.bind(this));
		},

		/**
		 * Event handler to determine which list item is selected
		 * @param {sap.ui.base.Event} oEvent the list select event
		 */
		onProductListSelect : function (oEvent) {
			this._showProduct(oEvent);
		},

		/**
		 * Event handler to determine which sap.m.ObjectListItem is pressed
		 * @param {sap.ui.base.Event} oEvent the sap.m.ObjectListItem press event
		 */

		onProductDetails: function (oEvent) {
			var oBindContext;
			if (Device.system.phone) {
				oBindContext = oEvent.getSource().getBindingContext();
			} else {
				oBindContext = oEvent.getSource().getSelectedItem().getBindingContext();
			}
			var oModel = oBindContext.getModel();
			var sCategoryId = oModel.getData(oBindContext.getPath()).Category;
			var sProductId = oModel.getData(oBindContext.getPath()).ProductId;

			// keep the cart context when showing a product
			var bCartVisible = this.getModel("appView").getProperty("/layout").startsWith("Three");
			this._setLayout("Two");
			this._oRouter.navTo(bCartVisible ? "productCart" : "product", {
				id: sCategoryId,
				productId: sProductId
			}, !Device.system.phone);
		},

		/** Apply selected filters to the category list and update text and visibility of the info toolbar
		 * @param oEvent {sap.ui.base.Event} the press event of the sap.m.Button
		 * @private
		 */
		_applyFilter : function (oEvent) {
			var oList = this.byId("productList"),
				oBinding = oList.getBinding("items"),
				aSelectedFilterItems = oEvent.getParameter("filterItems"),
				oCustomFilter =  this.byId("categoryFilterDialog").getFilterItems()[1],
				oFilter,
				oCustomKeys = {},
				aFilters = [],
				aAvailableFilters = [],
				aPriceFilters = [],
				aSupplierFilters = [];

			// Add the slider custom filter if the user selects some values
			if (oCustomFilter.getCustomControl().getAggregation("content")[0].getValue() !== oCustomFilter.getCustomControl().getAggregation("content")[0].getMin() ||
				oCustomFilter.getCustomControl().getAggregation("content")[0].getValue2() !== oCustomFilter.getCustomControl().getAggregation("content")[0].getMax()) {
				aSelectedFilterItems.push(oCustomFilter);
			}
			aSelectedFilterItems.forEach(function (oItem) {
				var sFilterKey = oItem.getProperty("key"),
					iValueLow,
					iValueHigh;
				switch (sFilterKey) {
					case "Available":
						oFilter = new Filter("Status", FilterOperator.EQ, "A");
						aAvailableFilters.push(oFilter);
						break;

					case "OutOfStock":
						oFilter = new Filter("Status", FilterOperator.EQ, "O");
						aAvailableFilters.push(oFilter);
						break;

					case "Discontinued":
						oFilter = new Filter("Status", FilterOperator.EQ, "D");
						aAvailableFilters.push(oFilter);
						break;

					case "Price":
						iValueLow = oItem.getCustomControl().getAggregation("content")[0].getValue();
						iValueHigh = oItem.getCustomControl().getAggregation("content")[0].getValue2();
						oFilter = new Filter("Price", FilterOperator.BT, iValueLow, iValueHigh);
						aPriceFilters.push(oFilter);
						oCustomKeys["priceKey"] = {Price: true};
						break;

					default:
						oFilter = new Filter("SupplierName", FilterOperator.EQ, sFilterKey);
						aSupplierFilters.push(oFilter);

				}
			});
			if (aAvailableFilters.length > 0) {
				aFilters.push(new Filter({filters: aAvailableFilters}));
			}
			if (aPriceFilters.length > 0) {
				aFilters.push(new Filter({filters: aPriceFilters}));
			}
			if (aSupplierFilters.length > 0) {
				aFilters.push(new Filter({filters: aSupplierFilters}));
			}
			oFilter = new Filter({filters: aFilters, and: true});
			if (aFilters.length > 0) {
				oBinding.filter(oFilter);
				this.byId("categoryInfoToolbar").setVisible(true);
				var sText = this.getResourceBundle().getText("filterByText") + " ";
				var sSeparator = "";
				var oFilterKey = oEvent.getParameter("filterCompoundKeys");
				var oKeys = Object.assign(oFilterKey, oCustomKeys);
				for (var key in oKeys) {
					if (oKeys.hasOwnProperty(key)) {
						sText = sText + sSeparator  + this.getResourceBundle().getText(key, [this._iLowFilterPreviousValue, this._iHighFilterPreviousValue]);
						sSeparator = ", ";
					}
				}
				this.byId("categoryInfoToolbarTitle").setText(sText);
			} else {
				oBinding.filter(null);
				this.byId("categoryInfoToolbar").setVisible(false);
				this.byId("categoryInfoToolbarTitle").setText("");
			}
		},

		/**
		 * Open the filter dialog
		 */
		onFilter: function () {
			// load asynchronous XML fragment
			if (!this._pCategoryFilterDialog) {
				this._pCategoryFilterDialog = Fragment.load({
					id: this.getView().getId(),
					name: "sap.ui.demo.cart.view.CategoryFilterDialog",
					controller: this
				}).then(function(oDialog){
					// connect dialog to the root view of this component (models, lifecycle)
					this.getView().addDependent(oDialog);
					oDialog.addStyleClass(this.getOwnerComponent().getContentDensityClass());
					return oDialog;
				}.bind(this));
			}
			this._pCategoryFilterDialog.then(function(oDialog) {
				oDialog.open();
			});
		},

		/**
		 * Updates the previous slider values
		 * @param {sap.ui.base.Event} oEvent the press event of the sap.m.Button
		 */
		handleConfirm: function (oEvent) {
			var oCustomFilter = this.byId("categoryFilterDialog").getFilterItems()[1];
			var oSlider = oCustomFilter.getCustomControl().getAggregation("content")[0];
			this._iLowFilterPreviousValue = oSlider.getValue();
			this._iHighFilterPreviousValue = oSlider.getValue2();
			this._applyFilter(oEvent);
		},

		/**
		 * Sets the slider values to the previous ones
		 * Updates the filter count
		 */
		handleCancel: function () {
			var oCustomFilter = this.byId("categoryFilterDialog").getFilterItems()[1];
			var oSlider = oCustomFilter.getCustomControl().getAggregation("content")[0];
			oSlider.setValue(this._iLowFilterPreviousValue).setValue2(this._iHighFilterPreviousValue);
			if (this._iLowFilterPreviousValue > oSlider.getMin() || this._iHighFilterPreviousValue !== oSlider.getMax()) {
				oCustomFilter.setFilterCount(1);
			} else {
				oCustomFilter.setFilterCount(0);
			}
		},

		/**
		 * Updates filter count if there is a change in one of the slider values
		 * @param {sap.ui.base.Event} oEvent the change event of the sap.m.RangeSlider
		 */
		handleChange: function (oEvent) {
			var oCustomFilter = this.byId("categoryFilterDialog").getFilterItems()[1];
			var oSlider = oCustomFilter.getCustomControl().getAggregation("content")[0];
			var iLowValue = oEvent.getParameter("range")[0];
			var iHighValue = oEvent.getParameter("range")[1];
			if (iLowValue !== oSlider.getMin() || iHighValue !== oSlider.getMax()) {
				oCustomFilter.setFilterCount(1);
			} else {
				oCustomFilter.setFilterCount(0);
			}
		},

		/**
		 * Reset the price custom filter
		 */
		handleResetFilters: function () {
			var oCustomFilter = this.byId("categoryFilterDialog").getFilterItems()[1];
			var oSlider = oCustomFilter.getCustomControl().getAggregation("content")[0];
			oSlider.setValue(oSlider.getMin());
			oSlider.setValue2(oSlider.getMax());
			oCustomFilter.setFilterCount(0);
		},

		/**
		 * Navigation to comparison view
		 * @param {sap.ui.base.Event} oEvent the press event of the link text in sap.m.ObjectListItem
		 */
		compareProducts: function (oEvent) {
			var oProduct = oEvent.getSource().getBindingContext().getObject();
			var sItem1Id = this.getModel("comparison").getProperty("/item1");
			var sItem2Id = this.getModel("comparison").getProperty("/item2");
			this._oRouter.navTo("comparison", {
				id : oProduct.Category,
				item1Id : (sItem1Id ? sItem1Id : oProduct.ProductId),
				item2Id : (sItem1Id && sItem1Id != oProduct.ProductId ? oProduct.ProductId : sItem2Id)
			}, true);
		},
		/**
		 * Always navigates back to category overview
		 * @override
		 */
		onBack: function () {
			this.getRouter().navTo("categories");
		}
	});
});