text:
//==================================================================================
// BSD 2-Clause License
//
// Copyright (c) 2014-2022, NJIT, Duality Technologies Inc. and other contributors
//
// All rights reserved.
//
// Author TPOC: contact@openfhe.org
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
//
// 1. Redistributions of source code must retain the above copyright notice, this
//    list of conditions and the following disclaimer.
//
// 2. Redistributions in binary form must reproduce the above copyright notice,
//    this list of conditions and the following disclaimer in the documentation
//    and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//==================================================================================

/*
BFV implementation. See https://eprint.iacr.org/2021/204 for details.
 */

#define PROFILE

#include "cryptocontext.h"
#include "scheme/bfvrns/bfvrns-cryptoparameters.h"
#include "scheme/bfvrns/bfvrns-parametergeneration.h"
#include "scheme/scheme-utils.h"

namespace lbcrypto {

bool ParameterGenerationBFVRNS::ParamsGenBFVRNS(std::shared_ptr<CryptoParametersBase<DCRTPoly>> cryptoParams,
                                                uint32_t evalAddCount, uint32_t multiplicativeDepth,
                                                uint32_t keySwitchCount, size_t dcrtBits, uint32_t nCustom,
                                                uint32_t numDigits) const {
    if (!cryptoParams)
        OPENFHE_THROW(not_available_error, "No crypto parameters are supplied to BFVrns ParamsGen");

    if ((dcrtBits < DCRT_MODULUS::MIN_SIZE) || (dcrtBits > DCRT_MODULUS::MAX_SIZE))
        OPENFHE_THROW(math_error,
                      "BFVrns.ParamsGen: Number of bits in CRT moduli should be "
                      "in the range from 30 to 60");

    const auto cryptoParamsBFVRNS = std::dynamic_pointer_cast<CryptoParametersBFVRNS>(cryptoParams);

    KeySwitchTechnique ksTech        = cryptoParamsBFVRNS->GetKeySwitchTechnique();
    ScalingTechnique scalTech        = cryptoParamsBFVRNS->GetScalingTechnique();
    EncryptionTechnique encTech      = cryptoParamsBFVRNS->GetEncryptionTechnique();
    MultiplicationTechnique multTech = cryptoParamsBFVRNS->GetMultiplicationTechnique();
    ProxyReEncryptionMode PREMode    = cryptoParamsBFVRNS->GetPREMode();
    MultipartyMode multipartyMode    = cryptoParamsBFVRNS->GetMultipartyMode();

    if ((PREMode != INDCPA) && (PREMode != NOT_SET)) {
        std::stringstream s;
        s << "This PRE mode " << PREMode << " is not supported for BFVRNS";
        OPENFHE_THROW(not_available_error, s.str());
    }

    double sigma           = cryptoParamsBFVRNS->GetDistributionParameter();
    double alpha           = cryptoParamsBFVRNS->GetAssuranceMeasure();
    double p               = static_cast<double>(cryptoParamsBFVRNS->GetPlaintextModulus());
    uint32_t digitSize     = cryptoParamsBFVRNS->GetDigitSize();
    SecurityLevel stdLevel = cryptoParamsBFVRNS->GetStdLevel();

    // Bound of the Gaussian error polynomial
    double Berr = sigma * sqrt(alpha);

    // Bound of the key polynomial
    double Bkey;

    DistributionType distType;

    // supports both discrete Gaussian (GAUSSIAN) and ternary uniform distribution
    // (UNIFORM_TERNARY) cases
    if (cryptoParamsBFVRNS->GetSecretKeyDist() == GAUSSIAN) {
        Bkey     = sigma * sqrt(alpha);
        distType = HEStd_error;
    }
    else {
        Bkey     = 1;
        distType = HEStd_ternary;
    }

    // expansion factor delta
    auto delta = [](uint32_t n) -> double {
        return (2. * sqrt(n));
    };

    // norm of fresh ciphertext polynomial (for EXTENDED the noise is reduced to modulus switching noise)
    auto Vnorm = [&](uint32_t n) -> double {
        if (encTech == EXTENDED)
            return (1. + delta(n) * Bkey) / 2.;
        else
            return Berr * (1. + 2. * delta(n) * Bkey);
    };

    // GAUSSIAN security constraint
    auto nRLWE = [&](double logq) -> double {
        if (stdLevel == HEStd_NotSet) {
            return 0;
        }
        else {
            return static_cast<double>(
                StdLatticeParm::FindRingDim(distType, stdLevel, static_cast<usint>(ceil(logq / log(2)))));
        }
    };

    auto noiseKS = [&](uint32_t n, double logqPrev, double w, bool mult) -> double {
        if ((ksTech == HYBRID) && (!mult))
            return (delta(n) * Berr + delta(n) * Bkey + 1.0) / 2;
        else if ((ksTech == HYBRID) && (mult))
            // conservative estimate for HYBRID to avoid the use of method of
            // iterative approximations; we do not know the number
            // of moduli at this point and use an upper bound for numDigits
            return (multiplicativeDepth + 1) * delta(n) * Berr;
        else
            return delta(n) * (floor(logqPrev / (log(2) * dcrtBits)) + 1) * w * Berr;
    };

    // initial values
    uint32_t n = (nCustom > 0) ? nCustom : 512;

    double logq = 0.;

    // only public key encryption and EvalAdd (optional when evalAddCount = 0)
    // operations are supported the correctness constraint from section 3.5 of
    // https://eprint.iacr.org/2014/062.pdf is used
    // optimization (noise reduction) from Section 3.1 of https://eprint.iacr.org/2021/204.pdf
    // is also applied
    if ((multiplicativeDepth == 0) && (keySwitchCount == 0)) {
        // Correctness constraint
        auto logqBFV = [&](uint32_t n) -> double {
            return log(p * (4 * ((evalAddCount + 1) * Vnorm(n) + evalAddCount) + p));
        };

        // initial value
        logq = logqBFV(n);

        if ((nRLWE(logq) > n) && (nCustom > 0))
            OPENFHE_THROW(config_error,
                          "Ring dimension n specified by the user does not meet the "
                          "security requirement. Please increase it.");

        while (nRLWE(logq) > n) {
            n    = 2 * n;
            logq = logqBFV(n);
        }

        // this code updates n and q to account for the discrete size of CRT moduli
        // = dcrtBits

        int32_t k = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));

        double logqCeil = k * dcrtBits * log(2);

        while (nRLWE(logqCeil) > n) {
            n        = 2 * n;
            logq     = logqBFV(n);
            k        = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));
            logqCeil = k * dcrtBits * log(2);
        }
    }
    else if ((multiplicativeDepth == 0) && (keySwitchCount > 0) && (evalAddCount == 0)) {
        // this case supports automorphism w/o any other operations
        // base for relinearization

        double w = digitSize == 0 ? pow(2, dcrtBits) : pow(2, digitSize);

        // Correctness constraint
        auto logqBFV = [&](uint32_t n, double logqPrev) -> double {
            return log(p * (4 * (Vnorm(n) + keySwitchCount * noiseKS(n, logqPrev, w, false)) + p));
        };

        // initial values
        double logqPrev = 6 * log(10);
        logq            = logqBFV(n, logqPrev);
        logqPrev        = logq;

        if ((nRLWE(logq) > n) && (nCustom > 0))
            OPENFHE_THROW(config_error,
                          "Ring dimension n specified by the user does not meet the "
                          "security requirement. Please increase it.");

        // this "while" condition is needed in case the iterative solution for q
        // changes the requirement for n, which is rare but still theoretically
        // possible
        while (nRLWE(logq) > n) {
            while (nRLWE(logq) > n) {
                n        = 2 * n;
                logq     = logqBFV(n, logqPrev);
                logqPrev = logq;
            }

            logq = logqBFV(n, logqPrev);

            while (fabs(logq - logqPrev) > log(1.001)) {
                logqPrev = logq;
                logq     = logqBFV(n, logqPrev);
            }

            // this code updates n and q to account for the discrete size of CRT
            // moduli = dcrtBits

            int32_t k = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));

            double logqCeil = k * dcrtBits * log(2);
            logqPrev        = logqCeil;

            while (nRLWE(logqCeil) > n) {
                n        = 2 * n;
                logq     = logqBFV(n, logqPrev);
                k        = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));
                logqCeil = k * dcrtBits * log(2);
                logqPrev = logqCeil;
            }
        }
    }
    else if ((evalAddCount == 0) && (multiplicativeDepth > 0) && (keySwitchCount == 0)) {
        // Only EvalMult operations are used in the correctness constraint
        // the correctness constraint from Section 3.1 of https://eprint.iacr.org/2021/204.pdf
        // is used

        // base for relinearization
        double w = digitSize == 0 ? pow(2, dcrtBits) : pow(2, digitSize);

        // function used in the EvalMult constraint
        auto C1 = [&](uint32_t n) -> double {
            return delta(n) * delta(n) * p * Bkey;
        };

        // function used in the EvalMult constraint
        auto C2 = [&](uint32_t n, double logqPrev) -> double {
            return delta(n) * delta(n) * Bkey * Bkey / 2.0 + noiseKS(n, logqPrev, w, true);
        };

        // main correctness constraint
        auto logqBFV = [&](uint32_t n, double logqPrev) -> double {
            return log(4 * p) + (multiplicativeDepth - 1) * log(C1(n)) +
                   log(C1(n) * Vnorm(n) + multiplicativeDepth * C2(n, logqPrev));
        };

        // initial values
        double logqPrev = 6. * log(10);
        logq            = logqBFV(n, logqPrev);
        logqPrev        = logq;

        if ((nRLWE(logq) > n) && (nCustom > 0))
            OPENFHE_THROW(config_error,
                          "Ring dimension n specified by the user does not meet the "
                          "security requirement. Please increase it.");

        // this "while" condition is needed in case the iterative solution for q
        // changes the requirement for n, which is rare but still theoretically
        // possible
        while (nRLWE(logq) > n) {
            while (nRLWE(logq) > n) {
                n        = 2 * n;
                logq     = logqBFV(n, logqPrev);
                logqPrev = logq;
            }

            logq = logqBFV(n, logqPrev);

            while (fabs(logq - logqPrev) > log(1.001)) {
                logqPrev = logq;
                logq     = logqBFV(n, logqPrev);
            }

            // this code updates n and q to account for the discrete size of CRT
            // moduli = dcrtBits

            int32_t k = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));

            double logqCeil = k * dcrtBits * log(2);
            logqPrev        = logqCeil;

            while (nRLWE(logqCeil) > n) {
                n        = 2 * n;
                logq     = logqBFV(n, logqPrev);
                k        = static_cast<int32_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));
                logqCeil = k * dcrtBits * log(2);
                logqPrev = logqCeil;
            }
        }
    }
    else if ((multiplicativeDepth && (evalAddCount || keySwitchCount)) || (evalAddCount && keySwitchCount)) {
        // throw an exception if at least 2 variables are not zero
        std::string errMsg("multiplicativeDepth, evalAddCount and keySwitchCount are incorrectly set to [ ");
        errMsg += std::to_string(multiplicativeDepth) + ", ";
        errMsg += std::to_string(evalAddCount) + ", ";
        errMsg += std::to_string(keySwitchCount) + " ]. Only one of them can be non-zero.";

        OPENFHE_THROW(config_error, errMsg);
    }

    const size_t numInitialModuli = static_cast<size_t>(ceil((ceil(logq / log(2)) + 1.0) / dcrtBits));
    if (numInitialModuli < 1)
        OPENFHE_THROW(config_error, "numInitialModuli must be greater than 0.");
    const size_t sizeQ = multipartyMode == NOISE_FLOODING_MULTIPARTY ?
                             numInitialModuli + NOISE_FLOODING::NUM_MODULI_MULTIPARTY :
                             numInitialModuli;

    std::vector<NativeInteger> moduliQ(sizeQ);
    std::vector<NativeInteger> rootsQ(sizeQ);

    // makes sure the first integer is less than 2^60-1 to take advantage of NTL
    // optimizations
    NativeInteger firstInteger = FirstPrime<NativeInteger>(dcrtBits, 2 * n);

    moduliQ[0]                = PreviousPrime<NativeInteger>(firstInteger, 2 * n);
    rootsQ[0]                 = RootOfUnity<NativeInteger>(2 * n, moduliQ[0]);
    NativeInteger lastModulus = moduliQ[0];

    if (multipartyMode == NOISE_FLOODING_MULTIPARTY) {
        NativeInteger multipartyModulus = FirstPrime<NativeInteger>(NOISE_FLOODING::MULTIPARTY_MOD_SIZE, 2 * n);
        moduliQ[1]                      = PreviousPrime<NativeInteger>(multipartyModulus, 2 * n);
        if (moduliQ[1] == lastModulus) {
            moduliQ[1]  = PreviousPrime<NativeInteger>(moduliQ[1], 2 * n);
            lastModulus = moduliQ[1];
        }
        rootsQ[1] = RootOfUnity<NativeInteger>(2 * n, moduliQ[1]);

        for (size_t i = 2; i < 1 + NOISE_FLOODING::NUM_MODULI_MULTIPARTY; i++) {
            moduliQ[i] = PreviousPrime<NativeInteger>(moduliQ[i - 1], 2 * n);
            rootsQ[i]  = RootOfUnity<NativeInteger>(2 * n, moduliQ[i]);
            if (lastModulus != moduliQ[0])
                lastModulus = moduliQ[i];
        }
    }

    size_t index = 1 + (sizeQ - numInitialModuli);
    if (index < sizeQ) {
        moduliQ[index] = PreviousPrime<NativeInteger>(lastModulus, 2 * n);
        rootsQ[index]  = RootOfUnity<NativeInteger>(2 * n, moduliQ[index]);
        for (size_t i = index + 1; i < sizeQ; i++) {
            moduliQ[i] = PreviousPrime<NativeInteger>(moduliQ[i - 1], 2 * n);
            rootsQ[i]  = RootOfUnity<NativeInteger>(2 * n, moduliQ[i]);
        }
    }

    auto params = std::make_shared<ILDCRTParams<BigInteger>>(2 * n, moduliQ, rootsQ);

    ChineseRemainderTransformFTT<NativeVector>().PreCompute(rootsQ, 2 * n, moduliQ);

    cryptoParamsBFVRNS->SetElementParams(params);

    const EncodingParams encodingParams = cryptoParamsBFVRNS->GetEncodingParams();
    if (encodingParams->GetBatchSize() > n)
        OPENFHE_THROW(config_error, "The batch size cannot be larger than the ring dimension.");
    // if no batch size was specified, we set batchSize = n by default (for full
    // packing)
    if (encodingParams->GetBatchSize() == 0) {
        uint32_t batchSize = n;
        EncodingParams encodingParamsNew(
            std::make_shared<EncodingParamsImpl>(encodingParams->GetPlaintextModulus(), batchSize));
        cryptoParamsBFVRNS->SetEncodingParams(encodingParamsNew);
    }

    uint32_t numPartQ = ComputeNumLargeDigits(numDigits, sizeQ - 1);

    cryptoParamsBFVRNS->PrecomputeCRTTables(ksTech, scalTech, encTech, multTech, numPartQ, 60, 0);

    return true;
}

}  // namespace lbcrypto

redpajama_set_name: RedPajamaGithub


text:
require 'pact_broker/pacts/repository'

module PactBroker
  module Pacts
    describe Repository do
      let(:td) { TestDataBuilder.new }

      describe "#find_for_verification" do

        def find_by_consumer_version_number(consumer_version_number)
          subject.find{ |pact| pact.consumer_version_number == consumer_version_number }
        end

        before do
          td.create_pact_with_hierarchy("Foo", "bar-latest-prod", "Bar")
            .create_consumer_version_tag("prod")
            .create_consumer_version("not-latest-dev", tag_names: ["dev"])
            .comment("next pact not selected")
            .create_pact
            .create_consumer_version("bar-latest-dev", tag_names: ["dev"])
            .create_pact
            .create_consumer("Baz")
            .create_consumer_version("baz-latest-dev", tag_names: ["dev"])
            .create_pact
        end

        subject { Repository.new.find_for_verification("Bar", consumer_version_selectors) }

        context "when consumer tag names are specified" do
          let(:pact_selector_1) { double('selector', tag: 'dev', latest: true) }
          let(:pact_selector_2) { double('selector', tag: 'prod', latest: true) }
          let(:consumer_version_selectors) do
            [pact_selector_1, pact_selector_2]
          end

          it "returns the latest pact with the specified tags for each consumer" do
            expect(find_by_consumer_version_number("bar-latest-prod")).to_not be nil
            expect(find_by_consumer_version_number("bar-latest-dev")).to_not be nil
            expect(find_by_consumer_version_number("baz-latest-dev")).to_not be nil
            expect(subject.size).to eq 3
          end

          it "sets the latest_consumer_version_tag_names" do
            expect(find_by_consumer_version_number("bar-latest-prod").tag).to eq 'prod'
          end
        end

        context "when no selectors are specified" do
          let(:consumer_version_selectors) { [] }

          it "returns the latest pact for each provider" do
            expect(find_by_consumer_version_number("bar-latest-dev")).to_not be nil
            expect(find_by_consumer_version_number("baz-latest-dev")).to_not be nil
            expect(subject.size).to eq 2
          end

          it "does not set the tag name" do
            expect(find_by_consumer_version_number("bar-latest-dev").tag).to be nil
            expect(find_by_consumer_version_number("bar-latest-dev").overall_latest?).to be true
          end
        end
      end
    end
  end
end


Bounce House Land proudly offers USA made commercial bounce houses for sale and provides unbeatable 3 year warranty. Buy your bounce house with confident knowing you can return it at anytime within 30 days. We closely follow all rules and regulations to provide premium quality, safe and lead free bounce houses, moonwalks, commercial water slides and obstacles.


Canadian Confederation, or the Confederation of Canada, was the process that ultimately brought together a union among the provinces, colonies and territories of British North America to form the Dominion of Canada, a Dominion of the British Empire, which today is the federal nation state called Canada.
The idea of a legislative union of all British colonies in America goes back to at least 1754, when the Albany Congress was held, preceding the Continental Congress of 1774. At least twelve other projects followed.
The idea was revived in 1839 by Lord Durham in his Report on the Affairs of British North America. A federation project was proposed to John A. Roebuck before Durham's mission to Canada.
In 1857, Joseph-Charles Tach� proposed a federation in the Courrier du Canada.
In 1858, Alexander Tilloch Galt, George-�tienne Cartier and John Ross travelled to Great Britain to present the British Parliament with a project for federation of the British colonies. The proposal was received by the London authorities with polite indifference. By 1864, it was clear that continued governance of the Province of Canada under the terms of the 1840 Act of Union had become impracticable. Therefore, a Great Coalition of parties formed in order to reform the political system.
Confederation was accomplished when Queen Victoria gave royal assent to the British North America Act (BNA Act) on March 29, 1867. That act, which united the Province of Canada with the colonies of New Brunswick and Nova Scotia, came into effect on July 1 that year. The act dissolved the Act of Union (1840) which had previously established the union of Upper Canada and Lower Canada. Separate provinces were re-established under their current names of Ontario and Quebec. July 1 is now celebrated as Canada Day.
Prime Minister of United Canada John A. Macdonald and others encouraged Quebec, New Brunswick, Nova Scotia and Prince Edward Island to come to talks on creating self-government in the form of one united Dominion. Some of the political leaders of the maritime colonies worried about being dominated by the population centres of Ontario and Quebec through the electoral system proposed for a central government.
The Fathers of Confederation elected to name the new country the Dominion of Canada, after rejecting kingdom and confederation, among other options. The term Dominion originates from Psalm 72:8 and was suggested by Sir Samuel Leonard Tilley.
The original "confederation" gathering was by delegates of the four Atlantic region colonies at Charlottetown in September 1864. On behalf of Canada, MacDonald asked that delegates from that colony be allowed to attend. During the conference, MacDonald suggested a union of all British colonies in North America.
At a second conference in Quebec City in October, further details were worked out. New Brunswick and Nova Scotia requested completion of a railway, the Intercolonial, to connect them with Quebec. At this point, Prince Edward Island and Newfoundland opted to stay out of the proposed union. A further conference was held in London, England in December 1866. Queen Victoria proclaimed the new dominion on July 1, 1867, although without overseas telegraphy, the news took a few days to arrive in Canada. Dominion elections were held in August and September to elect the first Parliament, and the four new provinces' governments recommended the 72 individuals (24 each for Quebec and Ontario, 12 each for New Brunswick and Nova Scotia) who would sit in the Senate.
While the BNA Act gave Canada more autonomy than it had before, it was far from full independence from the United Kingdom. Foreign policy remained in British hands, the Judicial Committee of the Privy Council remained Canada's highest court of appeal, and the constitution could only be amended in Britain. Gradually, Canada gained more autonomy, and in 1931, obtained almost full autonomy within the British Commonwealth with the Statute of Westminster. Because the provinces of Canada were unable to agree on a constitutional amendment formula for the BNA Act, the document remained in London. In 1982, the BNA Act was patriated when Queen Elizabeth II gave her royal assent to the Canada Act 1982. In Canada, the Canadian constitution is named the Constitution Act, 1982. It includes the BNA Act, which was renamed the Constitution Act, 1867.
The term Confederation is now often used to describe Canada in an abstract way, "The Fathers of Confederation" itself being one such usage. Provinces and territories that became part of Canada after 1867 are also said to have joined Confederation (but not the Confederation). However, the term usually refers more concretely to the political process that united the colonies in the 1860s; it is also used to divide Canadian history into pre-Confederation and post-Confederation (post-Confederation being a living term that includes the present day).
There were several factors that influenced Confederation both causes from internal sources and pressures from external sources.
the creation of a new British colonial policy, Britain no longer wanted to maintain troops in its colonies.
Confederation was first agreed upon at the Charlottetown Conference in Charlottetown, Prince Edward Island in 1864, although Prince Edward Island did not actually join Confederation until 1873. The specifics were then mostly determined at the Quebec Conference in Quebec City later in 1864, and at a final London Conference in 1866. The following lists the participants in the conferences and their attendance at each stage. They are known as the Fathers of Confederation.
There were 36 original Fathers of Confederation. Harry Bernard, who was the Recording Secretary at the Charlottetown conference, is considered by some to be a Father of Confederation. The later "Fathers" who brought the other provinces into Confederation after 1867 (such as Joey Smallwood) are also referred to as "Fathers of Confederation." There is also a modern trend, by no means universally supported, to regard Louis Riel as a Father of Confederation for his role in bringing Manitoba into confederation following the Red River Rebellion of 1869 – 1870, despite his having been executed for treason following the North-West Rebellion of 1885.
Manitoba was established July 15, 1870, by act of Parliament, originally as a very small area not even the width of current day Manitoba. British Columbia joined Canada July 20, 1871, by act of Parliament (and encouraged to join by Sir John A. MacDonald's promise of a railway within 10 years). Prince Edward Island joined July 1, 1873 (and, as part of the terms of union, was guaranteed a ferry link, a term which was deleted upon completion of the Confederation Bridge in 1997). Alberta and Saskatchewan were established September 1, 1905, by acts of Parliament. Newfoundland joined on March 31, 1949, also with a ferry link guaranteed.
Canada acquired Rupert's Land from the Hudson's Bay Company and the British-claimed Northwestern Territory in 1869, and took ownership in May 1870, merging them and naming them the Northwest Territories. In 1880, the British assigned all North American Arctic islands to Canada, right up to Ellesmere Island. From this vast swath of territory were created three provinces (Manitoba, Saskatchewan, Alberta) and two territories (Yukon and Nunavut), and two extensions each to Quebec, Ontario and Manitoba.
Here is a list of the order in which the provinces and territories entered Canada. (Territories are italicized.) At formal events, representatives of the provinces and territories take precedence according to this list (except that provinces always come before territories). For provinces that entered on the same date, the order of precedence is based on the province's population at the time it entered Confederation.
*Manitoba, the Yukon, Alberta, Saskatchewan, and Nunavut were created out of the Northwest Territories; the remaining provinces joined Canada as separate and previously independent colonies.
This page was last modified 10:44, 22 Jun 2005.
This page has been accessed 16447 times.


text:
Rivers throws for 3 TDs as Chargers rally to beat 49ers
CARSON (AP) — Philip Rivers threw for three touchdowns, Melvin Gordon rushed for 104 yards and the Los Angeles Chargers rallied for a 29-27 victory over the San Francisco 49ers on Sunday.
Caleb Sturgis had three field goals, including one from 21 yards with 7:41 left that gave the Chargers (2-2) the lead, but he had an eventful day with two missed extra points.
"It was good to see the resiliency of this team and how they bounced back. We played good, complementary football," Chargers coach Anthony Lynn said.
Rivers was 25 of 39 for 250 yards. Gordon had the sixth 100-yard rushing game of his career and his first since last Oct. 29 against New England.
Gordon and Austin Ekeler each caught touchdowns, the first time the Chargers have had two running backs catch touchdowns since Jessie Hester and Darren Sproles did it on Nov. 22, 2010, against Denver.
Gordon and Ekeler averaged 5.6 yards per carry against a Niners' defense that came into the game 10th against the run and allowing only 97 yards per game.
"He ran outstanding. There are some times when he could have gone out of bounds but he stayed between the yard lines and made plays," Lynn said of Gordon.
C.J. Beathard, who got the start for San Francisco (1-3) after Jimmy Garoppolo's season-ending knee injury, was 23 of 37 for 298 yards with two touchdowns and two interceptions. The last interception came with 2:38 remaining when Isaac Rochell picked off a pass intended for Alfred Morris at the Niners' 19. The Chargers then ran out the clock.
"I thought he played well," Niners coach Kyle Shanahan said. "He played very tough. Made some great plays, especially in some of the situations. With a lot of guys going in and out, he handled a lot of adversity well and a little chaos due to injuries."
The Niners got off to a strong start, taking a 17-6 lead early in the second quarter on an interception return for a touchdown and scores on two of their first three drives.
Antoine Exum put San Francisco on the board 57 seconds into the game when he picked off Rivers' pass intended for Keenan Allen and returned it 38 yards for a touchdown.
After Sturgis missed a 54-yard field goal, the Niners extended their lead to two touchdowns when Beathard threw a 2-yard score to Kendrick Bourne.
Los Angeles answered that touchdown with one of its own as Rivers found a wide-open Antonio Gates for a 5-yard score to make it 14-6 after missing the extra point.
Robbie Gould's 21-yard field goal extended the lead to 17-6 before the Chargers rallied to tie it at halftime. Rivers found Ekeler in single coverage on a go route for a 22-yard touchdown and Sturgis made a field goal from 48 yards that was set up by Desmond King's 55-yard punt return.
The Chargers scored on their first two drives of the second half to take a 26-17 lead. Gordon caught a 6-yard TD pass from Rivers and Sturgis made a 25-yard field goal. With 2:50 remaining in the third quarter, Beathard got back on track by connecting with George Kittle for an 86-yard touchdown. Gould's 33-yard field goal gave the Niners a 27-26 lead with 12:39 remaining.
EXTRA-POINT WOES
The Chargers have missed eight PATs since the start of last season, which is the most in the league. Los Angeles has missed 10 extra points since the kick was moved back in 2015 and is one of eight teams in the league to have missed 10 or more.
Niners: Wide receiver Dante Pettis and left tackle Joe Staley suffered knee injuries. Staley's injury meant San Francisco had to reshuffle its offensive line, moving first-round pick Mike McGlinchey to left tackle and putting Garry Gilliam at right tackle.
Chargers: Wide receiver Travis Benjamin, who missed the past two games due to a foot injury, did not play during the second half. He had a catch for 2 yards. Left tackle Russell Okung did not play in the second half due to a groin injury.
HE'S HEATING UP
As Posey opts out, Giants begin new era under Kapler
Slugging A's counting on fast start to challenge Astros
BUBBA'S REDEMPTION

redpajama_set_name: RedPajamaCommonCrawl


Australia might not be alone in moving to tighten control of cryptocurrency taxes. A recent report found that 0.04% of US cryptocurrency users are paying taxes. Of the 250,000 Americans studied over 57% admitted knowing taxes were applicable to their crypto transactions.


Daughters Baking is a cake business in Birmingham, AL, owned by pastry chef, Mallory Webb. Daughters Baking adds a playful, yet modern spin to the cake making tradition. It highlights exposed edges and various levels of contrasting colors, textures, and flavors. Each cake is filled with rich flavor and diverse components.
I was born and raised in Indianapolis, Indiana, but have called Birmingham, AL my home for the last ten years. I went to Samford University for Sociology and Religion, yet later discovered a deep passion for the culinary arts. My culinary career was born out of a sincere joy for baking and also the desire to create and express myself using this medium. My heart through Daughters Baking is not only to create, but also to connect with others and bring joy to families and friends.


Papadima-Sophocleous, S. (ed.) (2010). The ALCUIN Teacher Guide to Motivating Students to Read Literature. Cyprus: project partners.
Papadima-Sophocleous, S. (ed.) (2009). Education in Limassol" 2nd Symposium of Oral History 2006 Proceedings. Limassol: Limassol Municipal Historic Archives – Museum and Study Centre.
Papadima-Sophocleous, S. (ed.) (2007). Writing the History of Limassol, 1st Symposium of Oral History 2005 Proceedings. Limassol: Limassol Municipal Historic Archives – Museum and Study Centre.
Papadima-Sophocleous, S. (2012). 'New English Placement Test Online (NEPTON): A Blueprint'. Research on EFL in Cyprus, Department of English, University of Cyprus.
Papadima-Sophocleous, S. & Antigoni Parmaxi. (2012). The Use of Wiki in Teaching and Learning Greek as a Second Language for Specific Academic Purposes: Challenges and Future Perspectives. In Burston J., Tsagari, D. & Doa F. Foreign Language Instructional Technology: Theory & Practice. Cyprus: University of Nicosia Press.
Papadima-Sophocleous, S. (2012). 'Test-takers' predispositions, attitudes and feelings towards taking a New English Placement Test Online (NEPTON) in Learning Technologies in the language classroom: a step closer to the future IATEFL Learning Technologies SIG.
Papadima-Sophocleous, S. (2011) 'Electronic Portfolios in a BA CALL Course: Supporting Reflective and Autonomous Learning'. In Levy, M. Blin, F. Siskin, B. & Takeuchi, O. WorldCALL International Perspectives on Computer Assisted Language Learning, Routledge.
Papadima-Sophocleous, S. (January 2008). 'A hybrid CBT and a CAT-based New English Placement Test Online (NEPTON)'. CALICO Journal, Volume 25, Issue No. 2, pages 276-304.
Papadima-Sophocleous, S. (May 2007). 'Apocalypse In second Language Communication'. Babel, Journal of the Australian Federation of Modern Language Teachers Associations INC. (AMLTA) Vol. 42, No. 1, pages 20-28.
Papadima Sophocleous, S., Georgiadou, O & Mallouris, Y. (October 2012). 'iPod Impact on Oral Reading Fluency of University ESAP students.' In GloCALL 2012 Conference 2012 International Symposium on CALL Abstracts and Short Papers.(CD-ROM). Beijing: China.
Papadima-Sophocleous, S. & Yerou, C. (2011). 'The Use of Wikis in an ESAP (English for Specific Academic Purposes) course', EuroCALL 2009 Conference Proceedings, Gandia, Spain.
Papadima-Sophocleous, S. (July 2009). 'CALL E-Portfolios: Developing Reflective and Autonomous Learning'. Proceedings of the WorldCALL 2009 Conference. Japan: The Japan Association for Language Education and Technology (LET), pp. 175-178.
Papadima-Sophocleous, S. & Kakoulli Constantinou, E. (2009). 'Curriculum development: Re-designing an ESAP course for students of the Department of Agricultural Sciences, Biotechnology and Food Science at the Cyprus University of Technology through more comprehensive needs analysis processes. In Katsampoxaki-Hodgetts, K. (Ed.), Options & Practices of LSP Practitioners Conference Proceedings. (218-249). Crete: E-media, University of Crete Publications.
Papadima-Sophocleous, S. (2009). 'Saint Mary's School: A multi-formed offering to education in Limassol, a miniature of what can be developed into a comprehensive record'. In "Education in Limassol" Proceedings of the B' Symposium of Oral History 2006. Limassol: Limassol Municipal Historic Archives – Museum and Study Centre.
Papadima-Sophocleous, S. (2008). 'Computer Assisted language Pedagogy in a Computer Assisted Language Learning Course'. In Charoula Angeli and Nicos Valanides (eds) Proceedings of the 6th Panhellenic Conference with International Participation, Information and Communication Technologies in Education, Vol. 1, pages 186-193. Cyprus: University of Cyprus.
Papadima-Sophocleous, S. (2007). 'Reflective E-Portfolios in a BA CALL course'. In Educational Media and Innovative Practices: Challenges and Visions, International Council for Educational Media 2007, Innovative Learning Environments 2007, CARDET – Intercollege, Nicosia.
Papadima-Sophocleous, S. (2007). 'New English Placement Test Online (NEPTON): combining theories with application realities'. CLESOL 2006 Proceedings Origins and Connections: Linking Theory, Research and Practice, Aotearoa, New Zealand. CD publication. No pages.
Papadima-Sophocleous, S. (editor) (2010). The ALCUIN Teacher Guide to Motivating Students to Read Literature. Cyprus: project partners.
Hadjiconstantinou, S. and Yerou, C. (2012). ). 'Blending IT in ESP Courses: University Students' Responses'. International Conference ICT for Language Learning Conference Proceedings 5th Conference Edition. Florence, Italy, 15-16 November, 2012, Padova: Libreriauniversitaria edizioni (Edited by Pixel), pp. 113-116.
Yerou, C. and Hadjiconstantinou, S. (2010). '"Another brick in the WALL": Wiki Assisted Language Learning in ESP university courses'. International Conference ICT for Language Learning Conference Proceedings. 3rd Conference Edition. Florence, Italy, 1-12 November , 2010, Milan: Silmonelli Editore University Press (Edited by Pixel), pp. 351-357.
Papadima-Sophocleous, S. and Yerou, C. (2009). 'The Use of Wikis in an English for Specific Academic Purposes (ESAP) Course'. New Trends in CALL: Working Together – Proceedings of EuroCALL 2009. Eurocall 2009, Gandia, Spain, 9-12 September 2009, Madrid: Macmillan ELT, pp. 243-247.
Dimitrios Boglou (November 2009). 'Becoming as ESP Expert: Creating and Teaching an ESP Course for Civil Engineers'. SPELTA (Newsletter of the Open World of English: ELT, and CALL), 37 (Autumn).
Hadjiconstantinou, S. and Yerou , C (2012). "Blending IT in ESP courses: University Students' Responses. International Conference ICT for language learning conference Proceedings 5rd Edition. Florence .Italy, 15-16 November, 2012. p.p. Place: Padova .pps 113-116.Libreriauniversitaria edizioni (Edited by Pixel).
Papadima-Sophocleous, S. & Kakoulli Constantinou, E. (February 2009). 'Curriculum development: Re-designing an ESAP course for students of the Department of Agricultural Sciences, Biotechnology and Food Science at the Cyprus University of Technology through more comprehensive needs analysis processes'. In Katsampoxaki- Hodgetts, K. (Ed.), Options & Practices of LSP Practitioners Conference Proceedings. Crete: University of Crete.
Papadima-Sophocleous, S., & Parmaxi, A. (2012). 'The use of wiki in teaching and learning Greek as a second language for Specific Academic Purposes: challenges and future perspectives'. In J. Burston (Ed.), Proceedings of the 1st Conference on Foreign Language Instruction and Technology, Cyprus.
Adamson, J. with Athanasiou, A. 2011, Spring. " Middle management and diversity of evaluation of self-access". Independence, Issue 51, pp. 17-20.
Athanasiou, A. 2010. 'Teaching English Literature in the EFL classroom: an investigation into teachers' and students' attitudes in state schools in Cyprus'. In Research on English as Foreign Language in Cyprus (Ed. Pavlou, P.). Nicosia: University of Nicosia Press.
Interview with Ann Burns 2010. "Developing Learner Autonomy – the role of action research". In Independence (Newsletter of the IATEFL Learner Autonomy Interest Group), 50 (Autumn).
Interview with Irena Subic Jelocnik 2010. "All this freedom can be too much?". In Independence (Newsletter of the IATEFL Learner Autonomy Interest Group), 48 (Spring).
Athanasiou, A. & Barfield, A. 2010. "Autonomy in Language Learning: The Complete Worms". In Independence (Newsletter of the IATEFL Learner Autonomy Interest Group), 48 (Spring).
Athanasiou, A. 2007. 'Developing Learner Autonomy through Collaborative Learning in a Higher Education Context'. In Journal of Business and Society, vol. 20 (1-2).
Charalambous, S., Nicolaou, A., & Nitsiou, C. (2007). 'Cultural Awareness in Public Secondary Schools'. In Maitles, H (ed.), Exploring Cultural Perspectives in Education, Edmonton: ICRN Press, pp. 248-268, ISBN 0-9731036-2-6.
Nicolaou, A., Nitsiou, C. & Charalambous, S. (2007). 'Cypriot High Schools as Cultural Mosaics: Students' Perspectives and Experiences'. In The International Journal of Diversity in Organizations, Communities & Nations, Common Ground Publisher, Vol. 7, No 5, pp. 343-352.
Monville-Burston, M & Kounouni, M. (2011). 'Advanced learners' competence and French relative clauses in oral narratives. In the proceedings of the 20th International Symposium Of Theoretical and Applied Linguistics, Thessaloniki, Greece, 1-3 April 2011.
Monville-Burston, M & Kounouni, M. (2011). 'Introspection et pédagogie : Que disent les apprenants sur la relativisation ?'. In Burston, J., Gabriel, E., Monville-Burston, M. & Pavlou, P. (dir.) Languages for intercultural dialogue/Langues et dialogue interculturel. Nicosia : European Representation in Cyprus.
Monville-Burston, M & Kounouni, M. (2010) 'Deux procédures expérimentales pour tester la relativisation dans l'interlangue d'apprenants chypriotes hellénophones en FLE'. In Psaltou-Jocey, A. and Mattheoudaki, M. (dir.). Advances in Research on Language Acquisition and Teaching : Selected Papers, pp.489-507.
Papadima, A, Ioli Ayiomamitou, I & Kyriacou, S (2011). 'Typographic practices and spelling convention for the written representation of a non-standard dialect: the case of the Greek-Cypriot dialect'. 20th Linguistic Days in Prague, Czech Republic.
Θεμιστοκλέους X. & Κυριάκου Σ. (2010). 'Focus prominence and tonal alignment in Athenian and Cypriot Greek'. Proceedings of EXling 2010. Athens.


text:
Q: How to get the list of csv files in a directory sorted by creation date in Python I need to get the list of ".csv" files in a directory, sorted by creation date.
I use this function:
from os import listdir
from os.path import isfile, join, getctime

def get_sort_files(path, file_extension):
    list_of_files = filter(lambda x: isfile(join(path, x)),listdir(path))
    list_of_files = sorted(list_of_files, key=lambda x: getctime(join(path, x)))
    list_of_files = [file for file in list_of_files if file.endswith(file_extension)] # keep only csv files
    return list_of_files

It works fine when I use it in directories that contain a small number of csv files (e.g. 500), but it's very slow when I use it in directories that contain 50000 csv files: it takes about 50 seconds to return.
How can I modify it? Or can I use a better alternative function?
EDIT1:
The bottleneck is the sorted function, so I must find an alternative to sort the files by creation date without using it
EDIT2:
I only need the oldest file (the first if sorted by creation date), so maybe I don't need to sort all the files. Can I just pick the oldest one?

A: You should start by only examining the creation time on relevant files. You can do this by using glob() to return the files of interest.
Build a list of 2-tuples - i.e., (creation time, file name)
A sort of that list will implicitly be performed on the first item in each tuple (the creation date).
Then you can return a list of files in the required order.
from glob import glob
from os.path import join, getctime

def get_sort_files(path, extension):
    list_of_files = []
    for file in glob(join(path,f'*{extension}')):
        list_of_files.append((getctime(file), file))
    return [file for _, file in sorted(list_of_files)]

print(get_sort_files('some directory', 'csv'))

Edit:
I created a directory with 50,000 dummy CSV files and timed the code shown in this answer. It took 0.24s
Edit 2:
OP only wants oldest file. In which case:
def get_oldest_file(path, extension):
    ctime = float('inf')
    old_file = None
    for file in glob(join(path,f'*{extension}')):
        if (ctime_ := getctime(file)) < ctime:
            ctime = ctime_
            old_file = file
    return old_file

A: You can try this method:
def get_sort_files(path, extention):
    # Relative path generator
    sort_paths = (join(path, i)
                  for i in listdir(path) if i.endswith(extention))
    sort_paths = sorted(sort_paths, key=getctime)

    return sort_paths

# Include the . char to be explicit
>>> get_sort_files("dir", ".csv")
['dir/new.csv', 'dir/test.csv']

However, all file names are in a relative path; folder/file.csv. A slightly less efficient work-around would be to use a lambda key again:
def get_sort_files(path, extention):
    # File name generator
    sort_paths = (i for i in listdir(path) if i.endswith(extention))
    sort_paths = sorted(sort_paths, key=lambda x: getctime(join(path, x)))

    return sort_paths

>>> get_sort_files("dir", ".csv")
['new.csv', 'test.csv']

Edit for avoiding sorted():
Using min():
This is the fastest method of all listed in this answer
def get_sort_files(path, extention):
    # Relative path generator
    sort_paths = (join(path, i) for i in listdir(path) if i.endswith(extention))
    return min(sort_paths, key=getctime)

Manually:
def get_sort_files(path, extention):
    # Relative path generator
    sort_paths = [join(path, i) for i in listdir(path) if i.endswith(extention)]

    oldest = (getctime(sort_paths[0]), sort_paths[0])
    for i in sort_paths[1:]:
        t = getctime(i)
        if t < oldest[0]:
            oldest = (t, i)

    return oldest[1]

A: You could try the following code:
def get_sort_files(path, file_extension):
    list_of_files = [file for file in listdir(path) if isfile(join(path, file)) and file.endswith(file_extension)]
    list_of_files.sort(key=lambda x: getctime(join(path, x)))
    return list_of_files

This version could have better performance especially on big folders. It uses a list comprehension directly at the beginning to ignore irrelevant files right from the beginning. It uses in-place sorting.
This way, this code uses only one list. In your code, you create multiple lists in memory and the data has to be copied each time:

*

*listdir(path) returns the initial list of filenames

*sorted(...) returns a filtered and sorted copy of the initial list

*The list comprehension before the return statement creates another new list

A: You could try using os.scandir:
from os import scandir

def get_sort_files(path, file_extension):
    """Return the oldest file in path with correct file extension"""
    list_of_files = [(d.stat().st_ctime, d.path) for d in scandir(path) if d.is_file() and d.path.endswith(file_extension)]
    return min(list_of_files)

os.scandir seems to used less calls to stat. See this post for details.
I could see much better performance on a sample folder with 5000 csv files.

redpajama_set_name: RedPajamaStackExchange


The Faith Group ("the Group") uses social media as part of its overall approach to communicating with customers through products, brands, services, and other activities.
This Social Media Policy ("this Policy") sets forth the overall stance and standards of conduct that must be maintained in the course of the Group's use of social media.
This Policy applies to all users of social media and services provided officially by the Group ("Users").
The Group defines social media as "media that accomplish communication while facilitating the sending and receiving of information by service users" as part of a service that utilizes technology on the Internet.
・Faith Group officers, employees (including full-time, non-regular, contract, and part-time employees), advisors, temporary employees, and outside contractors ("Faith Group Agents") must exhibit an awareness of the following facts in their use of social media: that social media can be accessed by the general public, including users from a variety of backgrounds and circumstances; that due to the characteristics of the Internet, it is not possible to delete information once it has been published online; and that content can be viewed by the general public.
・Faith Group Agents must be aware that the information they disseminate and the actions that they take on an individual level can have an impact in the world, however small, and they must exercise care so as not to invite misunderstanding on the part of Users.
・In disseminating information on social media, Faith Group Agents must work to comply with all applicable laws and to use social media in an appropriate manner based on the Group's separate Social Media Usage Guidelines.
・Faith Group Agents must listen to information from Users in a spirit of sincerity. They must be aware that strengthening connections with Users through communication serves both to resolve Users' issues and to increase the value and convenience of the Faith Group.
・Faith Group Agents must work to increase the value of the Faith Group in society and to improve its services by sharing what they learn from communicating with Users broadly both inside and outside the company.
・Information posted by Faith Group Agents on social media does not necessarily reflect the official views of the Faith Group. Thank you for your understanding. For official information from the Faith Group, please see websites operated by the Group and press releases issued by the Group.
・Please note that information posted on social media is current as of the time of its posting, and that it is subject to subsequent change.
・The method of communication varies with each type of social media account (including whether it is possible to reply, the methods for doing so, hours of operation, etc.). The Group has provided a set of communication rules in the basic information for each of its social media accounts. Please see the Faith Group's official accounts for more information.


text:
February 2007 ›
Reality Can Be Funnier Than Fiction: A Look at Humor in Documentaries
By Josh Slates
Morgan Spurlock, from his 2004 film Super Size Me. Photo: Julie Soefer
I know what you're thinking--what could possibly be funnier than a gaggle of documentary filmmakers discussing the use of humor in the nonfiction form? So, we set out to interview a variety of figures in the documentary production and exhibition arena about the ways in which filmmakers can use comedy and humor to reinforce their intended message to audiences.
Perhaps we should begin with Mark Lewis, a documentary filmmaker who is particularly skilled at using anthropomorphism to imbue his otherwise incommunicative subjects with expression and emotion, often to hilarious effect. Known for such titles as Rat and The Natural History of the Chicken, Lewis was especially conscious of this question of cold-blooded perspective during the pre-production of his classic 1988 featurette Cane Toads: An Unnatural History.
"Very early on," Lewis recalls, "I wanted to take the perspective of the toad, to tell the story from the toad's point of view. It was hard not to think that many aspects of the story were funny--man being man and creature being creature, both going in different directions and the cane toad thwarting every attempt by man to control it. With that in mind, the comedy came from many different elements, be it counterpoint between creature and character, visual gag or the use of sound effect or music."
At the same time, Lewis is cautious to point out that the effectiveness of some situational comedy is often dependent upon an audience's detached perspective of the situation itself. "It can be funny when you see a large man chase a rat around a room with a baseball bat," Lewis observes, referring to one of his subject's climactic confrontation with the eponymous antagonists of his 1998 film Rat. "Funny for us, but not for that man whose life has been ruined by a plague of rats."
Although foresight and pragmatic consideration during pre-production can help solidify the tone of a documentary, Lewis also explains how simply having a camera rolling tape at the right place at the right time can capture a lasting comic moment. He points to a scene that unfolded during the production of his latest project, a documentary for PBS about "extreme gardeners competing for a world record giant pumpkin."
"We were filming a scene where one of our characters polishes his giant pumpkin with vegetable oil," Lewis recalls. "I looked to the cameraman and all I had to say was, 'Think Patrick Swayze, Demi Moore and a potter's wheel from Ghost.' He got it."
Director Robert Weide, who is currently in his 18th year of production on a forthcoming documentary about Kurt Vonnegut, points to the origins of a memorable moment of levity in his Oscar-nominated 1998 documentary, Lenny Bruce: Swear to Tell the Truth. Sally Marr, the mother of the titular comedian, was scheduled to discuss her son's early aspirations in show business. Whereas other directors might have cued the dreaded "talking head" shot, Weide instead decided to frame the interview in a way that would more properly capture her larger-than-life personality. "I knew that her spirit was just too ebullient to just have her sit still on a couch for an interview," Weide recalls. "We were talking about scheduling the interview, and she said she wanted to have her hair done before she went on camera. Then she added, 'Unless you want to shoot me while I'm getting my hair done.' Well, as soon as those words fell off her lips, there was no turning back.
"At one point early on in the interview," Weide continues, "the stylist was spraying her hair while she was talking, and she chastised him, telling him not to spray her while she was talking. In the editing room, I was figuring out how to cut around that moment, when suddenly it occurred to me to leave it in because it was such a typical Sally moment. People still mention that moment to me all the time."
David Wilson, co-founder of the True/False documentary film festival, argues that nonfiction filmmakers should not feel that their ability to achieve a comedic tone is exclusive to the hilarity of their chosen subject matter. "Just because a subject is serious doesn't mean that film can't find the inherent humor within it," Wilson rationalizes. What's more, filmmakers who can keep it funny may find themselves especially welcome at True/False. "We love comedy," he enthuses. "We love films that take unconventional approaches to their subjects."
Filmmaker Grace Lee found a receptive audience for her documentary feature The Grace Lee Project at True/False in 2005 (and not simply because she happens to be a native of the festival's home in Columbia, Missouri). The movie is a dissection of the cultural prejudices surrounding women named "Grace Lee," a popular adopted Christian name among female "1.5 Generation" Asian-American immigrants.
"I was describing the 'Grace Lee' stereotype to a classmate in film school--'Grace Lees' are all really smart and super nice and over-achievers," Lee recounts. "My friend smiled and laughed and said, 'Yeah, but that's how I see you!'"
During production of The Grace Lee Project, Lee decided to forego polemical hyperbole and strike a more delicate balance of wit, absurdity and oral history in delineating how a peculiar uniformity of the American immigrant experience colors the life stories of her subjects. "Although I did make an identity piece," Lee admits, "I'm not really interested in identity politics--or rather, I get tired of hearing about it, especially when people take on the victim role. I think humor plays a big role in the film. I find my 'identity crisis' filled with contradiction and absurdity, even if there are serious issues at play--ethnic stereotypes, cultural isolation and so forth."
Of course, one of the most striking recent examples of a documentary filmmaker using humor to make a populist connection with an audience is Morgan Spurlock's Oscar-nominated feature Super Size Me, which documented Spurlock solely subsisting on McDonald's menu items for 30 days.
Spurlock explains how the production consciously employed a pervasive sense of humor in order to make a more lasting impression with his audience. "We always wanted to come back to the joke," he recounts. "Always come back to something that's going to make someone laugh."
Spurlock also cites his own personal participation in his projects as one of the reasons that audiences respond so well to the situational comedy on display in his projects. "Self-deprecating humor is something that comedians have used for years," he observes. "If I can put myself out there and be willing to be the butt of a joke, people will be a little more open to the idea of what we're talking about. They won't look at me as being somewhat cynical."
But lastly, Spurlock also feels there is a very simple principle that enables comedic documentaries (especially ones with persuasive leanings) to deliver their messages to viewers with such efficiency and effectiveness. "When you start to laugh, your barriers come down," he explains. "When you let the walls down--the protective obstacles that we keep all around us--without even realizing it, we become receptive to information, or a way of thinking that we haven't had before."
Josh Slates is an independent producer and director. He is also the editor of Travels Through Elsewhere Cinema, a continuing journal of foreign and cult cinema that is distributed by Atomic Books.
'The Cove' Director Louis Psihoyos on His Latest Action Eco-Thriller
2009 IDA Documentary Awards: Feature Documentary Nominees
Coming Out Party: 30 Years On, Landmark Film Remains Timely


text:
– Past Show
"An enjoyable production
with a great cast."
— Russ Bickerstaff / Shepherd Express
[Local Archive]
Sorry, Show's Over!
Written by Yasmina Reza • Translated by Christopher Hampton • Directed by Lindsey Erin
This dark comedy raises questions about art and friendship and concerns and the varying opinions of long-time friends, Serge, Marc, and Yvan. One of the men, indulging his penchant for modern art, buys a large, expensive, completely white painting. The reactions of his friends to his purchase creates tension in their friendship. For one friend, Serge's purchase of the painting is a cruel joke.
Assistant Director: Caitlin Clark
Mark Neufang as Serge
Chris Goode as Yvan
Randall Anderson as Marc
All cast photos © and courtesy Tom Carr.
Making his MEG debut in 'Art', Mark has been involved with several theatrical productions throughout the greater Milwaukee area for over 15 years. Favorite roles include Ned Weeks in The Normal Heart, Charles Condomine in Blithe Spirit, Felix Ungar in The Odd Couple, and Malvolio in Twelfth Night — and he directed productions of Crimes of the Heart and Stop Kiss. This summer, he will be playing the role of Garry Essendine in SummerStage of Delafield's production of Present Laughter. He also bakes for his own business, Neufangled Desserts, when not onstage. Special thanks to his family and friends for their continued support, and always — love to Jake.
Mark Neufang
as Serge
Chris is thrilled and humbled to be performing in one of his favorite plays with two fantastic actors. This is his second performance with Milwaukee Entertainment Group, following 2016's Twas The Night Before Christmas. Thanks to Lindsey, Caitlin and also Amanda, who is always amazing. Even more thanks to family and friends, and all the love in the world to Therese. Enjoy the show!
"The most beautiful things in the world cannot be seen or touched, they are felt with the heart"
— Antoine de Saint-Exupéry, The Little Prince
Chris Goode
as Yvan
'Art' is a welcome return to the Milwaukee Entertainment Group for Randall. Returning audiences may recognize him from his work in 2014's Dial M For Murder (Tony). A founding member of Wisconsin Hybrid Theatre, he has been performing in the midwest for over twenty-five years. Randall's credits in the Milwaukee area include Rope (Rupert), Noises Off (Lloyd), 12 Angry Men (Juror 8), and Hamlet (Claudius). He can sometimes be heard the first Sunday of the month as part of WMSE's Frontier Radio Theatre. Randall can next be seen in an encore of his one man show The Bartender at the Alchemist Theatre.
Randall Anderson
as Marc
Opening Night, Closing Night, Performances:
Doors Open – 7pm | Curtain – 7:30pm
Matinee:
Doors Open – 1:30pm | Curtain – 2pm
Day Date Notes
Friday May 5 Opening Night
Saturday May 6 Performance
Friday May 12 Performance
Saturday May 13 Performance
Sunday May 14 Matinee
Thursday May 18 Performance
Saturday May 20 Closing Night


text:
Бугрино — название населённых пунктов в России:

 Бугрино — деревня в Вологодском районе Вологодской области.
 Бугрино — деревня в Комсомольском районе Ивановской области.
 Бугрино — посёлок в Гурьевском районе Калининградской области.
 Бугрино — посёлок в Ненецком автономном округе.

redpajama_set_name: RedPajamaWikipedia


text:
24 Marylebone High Street
Mayfair W1U 4PQ
(Get directions here)
Last updated January 16th, 2023
BooksClothingGreeting CardsMusic CDsShoes
Cancer Research UK is a charity which raises money for cancer research. The company was formed as a result of the merger between The Cancer Research Campaign and Imperial Cancer Research Fund. Their chain of charity shops sell second hand items such as clothes, books and records to raise money. They will accept any donations provided they are in saleable condition.
Note: Owing to temporary closures the times below may not accurately reflect current opening hours.
Nearby Charity Shops
Me Centre of the Map Cancer Research UK
Oxfam has a variety of charity stores which stock a range of discount products.
Barnardo's is a charity shop that sells a wide range of donated clothes as well as gifts and bric-a-brac items to raise money for children and young people in need.
St. John Ambulance Training Centre
Human Appeal
Pop Up 38
The British Heart Foundation are charity shops selling second hand clothes, books and bric-a-brac items. They warmly accept donations of clothes or other goods which they sell in their shop. All money raised is put towards researching into heart disease. The heart information line can be found on 0845 070 8070.
Scope is a charity shop with several branches that sells a wide range of donated clothes, gifts and bric-a-brac items.


text:
- [Functions that create GMainLoop](#functions-that-create-gmainloop)
- [Length arguments](#length-arguments)
- [Multiple return values](#multiple-return-values)
- [Boolean result](#boolean-result)

### Functions that create GMainLoop

Functions that create a GMainLoop should be wrapped as shown in the snippet below.
The function to quit the created loop must be pushed unto the `loopStack`.
Internally, NodeGTK uses this stack to quit all running loops when an exception occurs.

```javascript
const internal = require('../native.js')

const originalMain = Gtk.main
Gtk.main = function main() {
  const loopStack = internal.GetLoopStack()
  // Use the same instance of `loopStack` to push and pop
  loopStack.push(Gtk.mainQuit)
  originalMain()
  loopStack.pop()
}
```

### Length arguments

Some functions have return values that can be ignored, usually because they're not relevant in a javascript context.
One such example is described [here](https://gitlab.gnome.org/GNOME/gjs/issues/66)
In those cases, we're left with a single relevant return value, which should be the JS return value.

`g_key_file_load_from_data (GKeyFile *key_file, const gchar *data, gsize length, GError *error);`

```javascript
const loadFromData = GLib.KeyFile.loadFromData
GLib.KeyFile.loadFromData = function() {
  const [data, length] = loadFromData.apply(this, arguments)
  return data
}
```

### Multiple return values

Methods that return more than one relevant return value.
In those cases, we need to return an object with properties named accordingly.

E.g. `gtk_widget_get_request_size ( GtkWidget *widget, int *width, int *height );`

### Boolean result

Functions as the following one:

```c
gboolean
g_file_get_contents (const gchar *filename,
                     gchar **contents,
                     gsize *length,
                     GError **error);
```

Those return a boolean to allow the following style in C:

```c
GError error;
if (!g_file_get_contents(..., &error)) {
  // Deal with error
}
```

This is irrelevant in JS because an error would be thrown and the boolean return value is irrelevant.
In those cases, we should just strip the boolean return value, and deal with the rest of the arguments.


text:
Frechmühle ist der Ortsname von

 Frechmühle (Jetzendorf), Ortsteil der Gemeinde Jetzendorf, Landkreis Pfaffenhofen an der Ilm, Bayern
 Frechmühle (Pfaffenhofen an der Ilm), Ortsteil der Stadt Pfaffenhofen an der Ilm, Landkreis Pfaffenhofen an der Ilm, Bayern


May 30th - That ransomware payment is coming out of your allowance There was news this week out of Australia about some iOS owners getting locked out of their devices by ransomware. After making sure I was taking the proper precautions to ensure that my own iPhone wouldn't get hit, I then had to remind my daughters to secure their own phones as well. Back when I was growing up, my parents didn't have to worry about this kind of unexpected electronics-related expense from cropping up. Parenting must've been simpler, and definitely cheaper, back in the 1980s. This slideshow originally appeared on ITworld.com.
May 16th - Mark Zuckerberg reaches a milestone Big day this past Wednesday when Facebook founder and CEO Mark Zuckerberg turned 30! Hard to believe, right? 30, of course, isn't in any way, shape or form, old (says this 44 year-old). But, there can certainly be some signs of aging by then like a receding hairline, a little more weight around the gut and, occasionally, forgetting why you came into a room - or why you called a meeting with your company lawyers. Anyway, happy birthday Zuck!
May 9th - This Mother's Day, give mom peace of mind As you hopefully already know, this Sunday is Mother's Day. If you're stuck for an idea as to what to get your mom or wife for Mother's Day, how about taking a cue from the recent World Password Day and give her the gift of increased online security? Mom's always love stuff their kids make, anyway, whatever it is. It's a no lose!
May 2nd - So that's what happened to Clippy Fun story out of New Mexico this week, where folks from Microsoft Xbox and a film company dug up a cache of unsold E.T. Atari 2600 video game cartridges. The cartridges, along with other unsold Atari merchandise including other game cartridges and gaming hardware, were buried in an Alamorgordo landfill in 1983 after the game turned out to be a huge flop. This whole thing made me wonder what other infamous tech failures may be waiting to be discovered in some forgotten landfill? As interesting as it was to see pictures of people holding those long-buried E.T. games, I can think of at least one other famous tech blunder that should just remain buried.
April 18th - When it comes to Heartbleed, you can't be too careful Well, this was another week in which I seemed to spend too much time reading about Heartbleed and trying to figure out what passwords I needed to change. Just to be extra safe, I've also changed the locks on my house as well as my regular order at Starbucks and am considering other safety precautions. Nothing's off the table. I figure better safe than sorry, right?
March 14th - Happy birthday to the mother of all time-wasters! This past Wednesday was a big day: it was 25 years ago on that day, March 12, 1989, that Tim Berners-Lee shared a document with his colleagues at CERN outlining what would become the World Wide Web. Of course, at the time, he didn't call it that (despite how I drew it in this cartoon; artistic license, and all that). He referred to it as "Mesh," a "global hyperlink system." These days, we just call it the web or, as I call it, a "global hyper-time wasting system." Happy birthday, World Wide Web! I'm sure we'll all be using you to waste our time for way more than another 25 years!
February 21st - What's app?! Mark Zuckerberg gets a bargain The big tech story of the week was Facebook shelling out a whopping $19 billion in cash and stock to buy WhatsApp. Hoo doggy, that seems like a lot of money for a messaging app, but I guess Mark Zuckerberg feels it will give his company enough of a foothold in the mobile market in developing countries to be worthwhile. We'll see. Of course, all I can think of when I hear about WhatsApp are the old Budweiser Wazz Up ads. Also, I figure the WhatsApp founders must sick and tired of hearing people say, "What's app?". Of course, if the guy who just gave them $19 billion for their company says it, they'd better smile and laugh like they never heard it before.
February 7th - Even Kim Jong Un isn't that crazy Sure, the big tech story of the week was Microsoft finally naming their new CEO. But, for my money, the most interesting tech story this week was, hands down, the news that North Korea's newest operating system looks an awful lot like Apple's OS X. Who knows if their Dear Leader Kim Jong Un actually had any say in the matter, but if he did, it would seem to be a surprisingly sane decision. At least, it's a lot more sane than importing Dennis Rodmanto be his best friend.
January 24th - No power? No problem. How to spend money the old fashioned way Last weekend I took my kids out with me to run a few errands. At each stop I did something I feel like I never do anymore: I paid for all of it with cash. I didn't use a credit card or cell phone to pay for any of it. It made me think that my kids are growing up in a world where the only cash transaction they see involves the tooth fairy. We should probably be paying them in Bitcoins when they lose teeth. Or get them Square readers so the tooth fairy can just swipe her credit card. Anyway, make sure your kids know how to use cash! You never know when the power will go out and they'll need that skill.


Are you in love with wild animals? Do you wish you could have one? You may not be able to keep them as pets, but you can carry them with you in your wallet. That's right! Wild animal checks come in a variety of designs, from cute and cuddly baby wildlife to big and majestic endangered species.


text:
Africa, Russia
Russia's mercenaries prop up African dictators
Small bands of mercenaries extend Russia's reach in Africa
Local despots seek unsqueamish hired guns
Source: The Economist
Jan 15th 2022 DAKAR AND MOSCO
As he handed over a large wooden key on December 14th, a French colonel symbolically passed control of a military base in Timbuktu to his Malian counterpart. The tricolore, which had flown over the camp in northern Mali since France sent troops there in 2013 to counter jihadists and separatists, was replaced by a Malian flag. The ceremony marked a milestone in a French plan to cut by almost half its 5,100-strong counter-terrorism force in the region, as it refocuses on training and supporting local troops in their battle against the extremists who have overrun swathes of Mali, Niger and Burkina Faso. Yet soon after the French had left, a contingent of Russians moved in.
They are but one element of a Russian force that is perhaps 450-strong, says a French military official, who adds that most are mercenaries from Wagner Group. This is a company founded by Yevgeny Prigozhin, a crony of President Vladimir Putin. It is reportedly being paid $10m a month in Mali, much of it under a goons-for-gold deal. Mali's government insists it has no hired guns fighting for it and that the Russians are there as trainers officially sent by their government. Yet armed Russians have been seen in several parts of the country. Jihadists may have recently killed one and wounded two more.Mr Putin has no interest in helping Africa become more peaceful or democratic. A key aim is to stick it to the West, says Oleg Ignatov, who is based in Moscow for International Crisis Group, a think-tank. And Mr Putin appears to be doing so with canny opportunism, deploying small numbers of fighters to prop up wobbly authoritarians or governments that are annoyed by the West. The French official reckons that Russia's aim is to drive France and its allies out of Mali, leaving Russia "alone to exploit and deploy their influence". How to respond? That, he says, is a "major question".
Part of the difficulty is that Mali is a perfect target for Russian influence. Colonel Assimi Goïta, who runs the country, toppled Mali's elected president in mid-2020. He then installed himself as president with a second coup last year. His junta, some of whose members were trained in Russia, had promised to hold elections in February. But then it said it would postpone them, perhaps until December 2025.
That was a step too far for Mali's neighbours. On January 9th members of the Economic Community of West African States (ecowas), a regional bloc, closed their borders with Mali and imposed tough financial sanctions on it, supported by France, Britain and America. Russia backed the junta and blocked a un Security Council resolution supporting sanctions.Russia's strategy in Mali draws on the game plan it used in the Central African Republic, a failed state that might have descended into genocide in 2013 had France not sent in peacekeepers.
After handing over to the UN's blue helmets, France brought most of its troops home in 2016.That opened the door to Mr Putin. Having previously blocked efforts by France to arm government forces, Russia changed tack and offered to arm them itself. Mercenaries from Wagner soon showed up and a Wagner-linked company won concessions to mine gold and diamonds. Though the un has accused the Russian mercenaries of murdering, torturing and raping people, that has not dimmed the host regime's ardour. In November it made the Russian language a compulsory subject for students at the university in Bangui, the capital—the first time since the cold war that learning Russian has been obligatory outside the former Soviet Union.Russia, which is already the biggest arms supplier to sub-Saharan Africa, is widening its security ties. Last year it signed military co-operation deals with Ethiopia and Nigeria, Africa's two most populous countries. Ethiopia's government is angered by Western criticism of atrocities in its civil war; Nigeria's leaders are grumpy that America paused an arms sale over human-rights abuses by Nigerian forces. In Sudan, Russia took advantage of political turmoil to strike a deal for a naval base, though it has yet to materialise.Next on Russia's list may well be Burkina Faso, where on January 11th the government said it had thwarted a coup plot. Already a buyer of Russian helicopters and weapons, Burkina Faso has also been bombarded by pro-Russian propaganda on social media. In November a French army convoy was repeatedly blocked by protesters—some waving Russian flags—chanting "down with France".
Yet Russia's mercenaries will probably find it no easier to battle jihadists than do the Western forces they hope to supplant. Their record is certainly uninspiring. In 2019 Wagner sent men to fight jihadists in northern Mozambique. It pulled out after about ten of them were killed, including some who were beheaded. In Libya roughly 1,200 Wagner men fought on the side of a rebel general, Khalifa Haftar, against the un-recognised government. Yet the rebel push to topple the government failed and Wagner's troops were accused of war crimes, including murdering prisoners and civilians.Even if the Russians cannot beat the jihadists, Mr Goïta may still want them to coup-proof his regime. (He narrowly survived a knife attack last July.) Yet in propping him up, or even simply in failing to beat the extremists, Wagner risks having the population turn against it—and Russia. In 2013 François Hollande, then France's president, was mobbed by cheering crowds in Timbuktu after his forces liberated the city. Today its deputy mayor, Bocar Touré, complains that the French failed to improve security. "The Russians can help more than the French did,'' he says. But, perhaps foreshadowing the next wave of anger, he adds: "I would prefer not to have any foreign forces in Timbuktu."
MercenariesRussiaWagner Group
Previous Previous post: Ethiopian Prime Minister Abiy Ahmed's social affairs adviser in public call for genocide
Next Next post: Putin's threat to Ukraine is part of his long term agenda


text:
Shite'n'Onions
Celtic Punk'n'Roll
CD of the Year
Celtic Punk – Best of All Time
Contact & Mailing List
Blood or Whiskey (Beano)
Blood or Whiskey (Barney)
Catgut Mary
Celtus
Greenland Whalefishers
Hudson Falcons
Scott M.X. Turner
Roaring Jack
The Charm City Saints
The Electrics
The Larkin Brigade
The PubCrawlers
The Rumjacks (July 17, 2009)
The Rumjacks (Nov 5, 2009)
The Skels
The Stoutfellows
The Swaggerin' Growlers
The Town Pants
Black 47 @ 21
Joe Strummer (January 2003)
\m/ Celtic Heavy Metal \m/ (December 2010)
Mutiny (May 2005)
Neck (June 2001)
Paddy Punk in Japan (December 2008)
Swingin' Utters (August 2001)
The Dolomites (May 2003)
The Dubliners To the Dropkicks (Sept. 2001)
The Electrics (October 2002)
The Mahones (December 2010)
The Radiators from Space (Jan 2011)
The Tossers (July 2001)
The Tossers (October 2005)
The Undertones (October 2002)
The Undertones / John Peel (January 2011)
The Wolfe Tones (December 2001)
Thin Lizzy (September 2003)
WAGES OF SIN Vs THE RUMJACK (September 2009)
Reviews – 2001
Rake at the Gates of Hell: Shane MacGowan in Context
Posted on May 6, 2011 by Mustard Finnegan
Here is something I saw on the Pogues official facebook page – it's a new bio/study of Shane-o and what makes him tick. The book is only available through createspace.com.
Rake at the Gates of Hell: Shane MacGowan in Context is a mix of Irish history and culture, biography, and music criticism. It explores Shane MacGowan's art by juxtaposing details of his life with those elements of Irish culture and history that inform the themes in his work. The book presents MacGowan's life chronologically, supplementing information on Irish history and culture at those points where it can best illuminate MacGowan's story.
His career with the Nips, the Pogues, and the Popes is covered extensively. The book includes critical assessments of significant live performances and all studio recordings made with each of these three bands. MacGowan's life story is told warts and all.
His hedonistic lifestyle and history of substance abuse is reported in a way that neither sensationalizes nor minimizes the facts. The text is enlivened by extensive quotations, primarily from MacGowan himself, which were either taken from conversations with the author or culled from published interviews.
The book explores several themes prominent in MacGowan's work. Foremost among these are Irish Republicanism, the Irish Republican Army, Irish emigration, and various factors that contribute to Irish emigration. While the discussion of these topics is not exhaustive, it is detailed enough to enhance appreciation of Shane MacGowan's art. Moreover, Rake at the Gates of Hell: Shane MacGowan in Context is the only book yet written that chronicles MacGowan's remarkable comeback with the Pogues, the band that fired him nearly two decades ago.
Authored by Robert Mamrak PhD.
Available only through the below link:
https://www.createspace.com/3552090
Publication Date: Apr 29 2011
ISBN/EAN13:0615445446 / 9780615445441
Page Count:216
Binding Type:US Trade Paper
Trim Size:6″ x 9″
Color:Black and White
Related Categories:Biography & Autobiography / Composers & Musicians
https://www.facebook.com/pages/Pogues/12577662367
This entry was posted in News and tagged Shane MacGowan, The Pogues by Mustard Finnegan. Bookmark the permalink.


text:
Q: Switching between musical app and non-musical app? I am developing the music application . My Problem is that when i play the music from my app other music player songs are pause but when I play other music player songs when my player songs are play that time both player songs are mixed . My music player songs does not pause (It should be pause). I used following code for it .  Please help ....
public void playAudio() {
    OnAudioFocus onAudioFocus=new OnAudioFocus(this);

    AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    audioManager.requestAudioFocus(onAudioFocus, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);

    MusicPlayerActivity.mediaPlayer.start();
}

class OnAudioFocus implements AudioManager.OnAudioFocusChangeListener {

    HomeActivity onAudioFocus;

    public OnAudioFocus(HomeActivity onAudioFocus) {
        this.onAudioFocus = onAudioFocus;
    }

    public void onAudioFocusChange(int focusChange) {

        switch (focusChange) {
        case AudioManager.AUDIOFOCUS_GAIN:
            MusicPlayerActivity.mediaPlayer.start();

            break;

        case AudioManager.AUDIOFOCUS_LOSS:
            if (MusicPlayerActivity.mediaPlayer.isPlaying())
                 onAudioFocus.stopAudio();

                break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
            if (MusicPlayerActivity.mediaPlayer.isPlaying())
                 onAudioFocus.pauseAudio();

                break;
        case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
            if (MusicPlayerActivity.mediaPlayer.isPlaying())
                 MusicPlayerActivity.mediaPlayer.setVolume(0.1f, 0.1f);
                break;

        }
    }
}


text:
Victor (Vic) Herbert HANNA
HANNA, VICTOR HERBERT (VIC) passed away peacefully at Nanaimo Regional General Hospital, Mon. Feb. 12, 2007 after a brief illness.
Vic was predeceased by his dear wife Vera Hanna in 1997, his parents, Murial Hanna (1959) and Frank Hanna (1976), brothers Peter Hanna (1987) and Bill Hanna (1991), sister-in-law Lucy Hanna (1979), grand daughter Susan Hanna (1998) and loving companion Mae McKay (2002).
Survived by his son Frank (Debbie) whom he loved dearly, grandsons Ashley, Travis (Erin) and Lindsay Hanna, sisters-in-law Jean and Maude Hanna, nieces and nephews Tom (Brenda) Hanna, Dave (Coral) Hanna, Rob (Sari) Hanna, Cathy (John) Franklin, Kerry (Bob) Gaultois, Patricia (Mel) Huggins, Louise (Bob) Schultz, Randy (Brenda) Hanna and their families, Keith and Sheila Larson and family and Mr. Gordon McKay.
A proud Nanaimo Native Son, Vic was a 57 year member of Doric Lodge #18 AF and AM, Past Master, Past DDGM, Member of Manoah Lodge #141 Tofino, member of Eastern Star – Crescent Chapter #10 O.E.S. Keystone Chapter, Royal Arch Masons, GRBC Member – Knights Templar of Canada – Bethlehem Preceptory #6, Probus Club member and Life Member B.C. Hydro Power Pioneers.
Starting his career with Nan-Duncan Utilities, then with B.C. Power Commission, which became B.C. Hydro Vic was a 43½ year employee.
He served overseas during WWII with the Canadian Forces from 1941-1946, where he met his wife Vera.
He was a truly special man who will be sadly missed by all who had the pleasure of knowing him.
A memorial service celebrating the life of Vic Hanna will be held Mon., Feb. 19, 2007, 2 p.m. at Nanaimo Golf and Country Club, Highland Blvd.
In lieu of flowers, donations to the Kidney Foundation or a charity of your choice would be appreciated.
InMemoriumLogo Your condolences will be approved within one business day. You will need a valid Facebook account. Please email us if you have any questions.
Go Back To Obituaries


Use the New-ExchangeCertificate cmdlet to create and renew self-signed certificates, and to create certificate requests (also known as certificate signing requests or CSRs) for new certificates and certificate renewals from a certification authority (CA).
Exchange uses certificates for SSL and TLS encryption.
There are many factors to consider when you configure certificates for Transport Layer Security (TLS) and Secure Sockets Layer (SSL) services. You need to understand how these factors might affect your overall configuration. For more information, see Digital certificates and encryption in Exchange 2016.
The Subject value is CN=<ServerName> (for example, CN=Mailbox01).
The Domains (subject alternative names) value is <ServerName>, <ServerFQDN> (for example, Mailbox01,Mailbox01.contoso.com).
The Services value SMTP grants the Network Services local security group read access to the certificate's private key.
The Services value SMTP and the Subject value that contains the server name publishes the certificate to Active Directory so that Exchange direct trust can validate the authenticity of the server for mutual TLS.
If you don't want this certificate to replace the existing self-signed certificate that was created during Exchange setup, be sure to select "No" in the prompt that asks you overwrite the existing default SMTP certificate.
The request is Base64 encoded.
The output is displayed onscreen and is also written to the text file C:\Cert Requests\woodgrovebank.req.
The Domains (subject alternative names) value contains the additional valuesautodiscover.woodgrovebank.com,mail.fabrikam.com, and autodiscover.fabrikam.com.
After you create the certificate request, you send the output to the CA. After you receive the certificate from the CA, you install the certificate by using the Import-ExchangeCertificate cmdlet, and you assign the certificate to Exchange services by using the Enable-ExchangeCertificate cmdlet.
If the CA requires the certificate request in a file that's encoded by DER, use the BinaryEncoding switch.
This example renewsthe existing self-signed certificate that has the thumbprint value c4248cd7065c87cb942d60f7293feb7d533a4afc. You can find the thumbprint value by using the Get-ExchangeCertificate cmdlet. Setting the PrivateKeyExportable parameter to the value $true allows the renewed self-signed certificate to be exported from the server (and imported on other servers).
Get-ExchangeCertificate -Thumbprint 8A141F7F2BBA8041973399723BD2598D2ED2D831 | New-ExchangeCertificate -GenerateRequest -RequestFile "C:\Cert Requests\fabrikam_renewal.req"
The thumbprint value of the existing certificate is 8A141F7F2BBA8041973399723BD2598D2ED2D831. You can find the thumbprint value by using the Get-ExchangeCertificate cmdlet.
The output is displayed onscreen and is also written to the text file C:\Cert Requests\fabrikam_renewal.req.
After you create the certificate renewal request, you send the output to the CA. After you receive the renewed certificate from the CA, you install the certificate by using the Import-ExchangeCertificate cmdlet.
This example shows how to renew a self-signed certificate with a specific thumbprint value. You can obtain the thumbprint value in one of two ways.
Select the certificate in the Exchange Administration Center and then select Edit to view properties of the certificate. The thumbprint value is shown in the Exchange Certificate window.
Run the Get-ExchangeCertificate cmdlet to return a list of all certificates installed on the server with their thumbprint values.
The BinaryEncoded switch specifies whether to encode the new certificate request by using Distinguished Encoding Rules (DER). You don't need to specify a value with this switch.
If you don't use this switch, the request is Base64 encoded.
This switch is available only when you use the GenerateRequest switch.
For Base64 encoded requests, you send the contents of the file to the certificate authority. For requests that are encoded by DER, you send the certificate file itself.
The DomainName parameter specifies one or more FQDNs or server names for theSubject Alternative Namefield (also known as the Subject Alt Name or SAN field) of the certificate request or self-signed certificate.
If the value in the certificate's Subject field doesn't match the destination server name or FQDN, the requestor looks for a match in the Subject Alternative Name field.
Typically, values include server names (for example, Mailbox01) and FQDNs (for example, mail.contoso.com). You can specify multiple values separated by commas. Valuescan contain the characters a through z, 0 through 9, and the hyphen (-). The length of the domain name can't exceed 255 characters.
You don't use this parameter.
You don't use any of these parameters: IncludeAcceptedDomains, IncludeAutoDiscover, IncludeServerFQDN, or IncludeServerNetBIOSName.
By default, when you create a self-signed certificate that's enabled for SMTP (no Services parameter, or the Services parameter contains the value SMTP), you're prompted to replace the existing default SMTP certificate with the new one that you're creating. If you use the Force switch, the new SMTP certificate automatically replaces the existing SMTP certificate without asking.
The FriendlyName parameter specifies a friendly name for the certificate request or self-signed certificate. The value must be less than 64 characters.
The default value is Microsoft Exchange. The friendly name value is descriptive text, and doesn't affect the functionality of the certificate.
The GenerateRequest switch specifies that you're creating a certificate request for a certification authority (CA). You don't need to specify a value with this switch.
This switch, together with the RequestFile parameter, generates a PKCS #10 certificate request that you send to the CA. How you send the information depends on the CA, but typically, for Base64 encoded requests, you paste the contents in an email message or in the request form on the CA's web site.
After you install the certificate from the certification authority by using the Import-ExchangeCertificate cmdlet, you use the Enable-ExchangeCertficate cmdlet to enable the certificate for Exchange services.
If you don't use this switch,thecommand creates a new self-signed certificate on the Exchange server.
The IncludeAcceptedDomains switch specifies that all accepted domains in the Exchange organization are included in the Subject Alternative Name field of the certificate request or self-signed certificate. You don't need to specify a value with this switch.
If you've already included an accepted domain in the DomainName parameter, the value isn't duplicated in the Subject Alternative Name field.
For new self-signed certificates, if you don't use the Services parameter, the certificate is only assigned to SMTP.
The IncludeAutoDiscover switch specifies whether to add a Subject Alternative Namevalue with the prefix autodiscover for each accepted domain in the Exchange organization. You don't need to specify a value with this switch.
If you've already included the value autodiscover.<AcceptedDomain> in the DomainName parameter, the value isn't duplicated in the Subject Alternative Name field.
The IncludeServerFQDN switch specifies that the FQDN of the Exchange server is included in the Subject Alternative Name field of the new certificate request or self-signed certificate. You don't need to specify a value with this switch.
When you use this switch, and you've already included the server's FQDN in the DomainName parameter, the value isn't duplicated in the Subject Alternative Name field.
When you use this switch, and you've already included the server's NetBIOS name in the DomainName parameter, the value isn't duplicated in the Subject Alternative Name field.
$true: The private key is exportable, so you can export the certificate from the server.
$false: The private key isn't exportable, so you can't export the certificate. This is the default value.
This parameter is only meaningful for new self-signed certificates.
The RequestFile parameter specifies the name and path of the certificate request file. The file contains the same information that's displayed on-screen when you generate a Base64 encoded certificate request (you don't use the BinaryEncoded switch).
You can use a local path if the certificate or certificate request is located on the same Exchange server where you're running the command. Otherwise, use a UNC path (\\<Server>\<Share>). If the value contains spaces, enclose the value in quotation marks (").
You can use this parameter only when you use the GenerateRequest switch.
None: You can enable the certificate for Exchange services later by using the Enable-ExchangeCertificate cmdlet.
SMTP: When you enable a certificate for SMTP, you're prompted to replace the default Exchange self-signed certificate that's used to encrypt SMTP traffic between internal Exchange. If you want to replace the default certificate without the confirmation prompt, use the Force switch.
UM: This value requires that the UMStartupMode parameter on the Set-UMService cmdlet is set to TLS or Dual. If the UMStartupMode parameter is set to the default value of TCP, you can't enable the certificate for the UM service.
UMCallRouter: This value requires that the UMStartupMode parameter on the Set-UMCallRouterService cmdlet is set to TLS or Dual. If the UMStartupMode parameter is set to the default value TCP, you can't enable the certificate for the UM Call Router service.
You can specify multiple values separated by commas. The default values are IMAP,POP, and SMTP.
You can't use this parameter with the GenerateRequest switch.
Once you enable a certificate for a service, you can't remove the service from the certificate.
The SubjectKeyIdentifier parameter specifies the unique subject key identifier for a newself-signed certificate. For example, run the command: $ski = [System.Guid]::NewGuid().ToString("N"), and use the value $ski for this parameter.
The SubjectName parameter specifies the Subject field of the certificate request or self-signed certificate.
Every certificate requires a value for the Subject field, and only one value is allowed. The requestor attempts to match the destination server name or FQDN with the common name (CN) value of subject.
This parameter uses the syntax: [C=<CountryOrRegion>,S=<StateOrProvince>,L=LocalityOrCity,O=<Organization>,OU=<Department>],CN=<HostNameOrFQDN>. Although the only required value is CN=<HostNameOrFQDN>, you should always include C=<CountryOrRegion> for certificate requests, but other values might also be required by the certification authority.
If you don't use this parameter, the default value is the name of the Exchange server where you run the command (for example, CN=Mailbox01).
For a subject alternative name (SAN) certificate, you should choose one of the values from the DomainName parameter to use in the SubjectName value. In fact, the CN value that you specify for SubjectName is automatically included in the DomainName values.
For a wildcard certificate, use a SubjectName value that contains the wildcard character (*). For example, C=US,CN=*.contoso.com.


text:
Q: iPhone Mobile App (safari):  which javascript events like onblur, onfocus or onbeforeunload are available? So I just made my web-application "iPhone Friendly".  So you can add it to your home screen and it has an icon, no chroming, etc etc.
The problem is that I want to display a custom splash-screen every time it is opened from the iPhone home screen.  Right now it just shows the last screen viewed while it basically runs a refresh.
I have tried attaching events to window.onfocus, window.onblur, window.onbeforeunload, and NONE of them seem to work right when the app is being run in "mobile-app" mode.
Am I being dumb?  Er.... don't answer that.  Does anyone know what is wrong?

A: Unfortunately, with the restrictions Apple imposes, this is impossible.
My recommendation is to create a App Store application with a full-screen WebView. Then, you can use a default.png file and a ImageView for your splash screen. Also, you get a ton more visibility on the App Store. (Also, if you go this route, check out PhoneGap - http://phonegap.com/).

A: Update!!  In the iPhone 3.0 update, mobile safari now supports the ability to specify an image to be used on startup:

Remember this only works with iPhones that are running 3.0+

A: The loading screen you are talking about is the loading screen for an APPLICATION, not a webpage, i.e its the loading screen for Safari. This has nothing to do with "the restrictions Apple imposes", just with the fact that because your web app still runs in the browser, the browser needs to load first. Like was also said, if you want to get around this you need to build your own app, in which you can specify the splash screen.

A: Are you using this?
<meta name="apple-mobile-web-app-capable" content="yes" />

If yes, it should refresh every time when you exit the web app and enter again. It will NOT show the last screen viewed. Hence you can show your splash-screen every time when it is opened. In another words, you should show a full screen div / image every time when you load the page.


Hello everyone, My name is Anna, I was born in picturesque Crimea and I am professional photographer.
I started my passionate photography journey about 4 years ago from the tropical island Phuket in Thailand. I had an amazing opportunity to work there for different projects such as beauty, personal, models tests, commercial projects and different magazines.
Threw my work I always meet different personalities which truly inspire me and I am very grateful for that.
I used to be the main photographer for the covers and fashion stories of the local magazine "Real life In Phuket ",was shooting campaigns for the following brands such as : "D'Margaret" Australia, "Cobalt and Tawny" Bali, "Kaanda beach Life" Thailand , "BIONDI" London, "Thaikila" Bali, "Smoothie Beauty" New York, "Herb Dee Ka" Thailand.
I am proud that many of my works were published in Thai magazines such as : Real life in Phuket, Exotiq Thailand, Bikinis&Martinis, Insaider Asia.
Today I am open for a new adventure. As I always welcome new opportunities in my life, I am ready to work and travel all around the world!