OneSTL was developed through a 3-year planning process that was funded through a grant received by East-West Gateway and 10 core partners with the goal of fostering economically competitive, opportunity-rich communities that serve as the foundation of a healthy St. Louis region.
Information regarding the process of developing OneSTL is included below.
Committees - There were four committees that involve over 200 members who worked collaboratively to engage in an inclusive and comprehensive regional planning process. The Steering Committee was the primary governing body of the planning process with East-West Gateway chairing the committee and serving as the fiscal agent of the grant. The Technical Planning, Public Engagement and Outcome Management committees each had specific tasks within the HUD-approved work plan.
Partners - The Consortium Partners were the 11 organizations that are committed to the grant through a legally binding agreement with HUD. HUD required that the traditional principal city (City of St. Louis), the county with the largest population (St. Louis County), the Metropolitan Planning Organization (East-West Gateway) and a regional public engagement organization (FOCUS St. Louis) be included in the planning process. The remaining Consortium Partners were selected based on their willingness and capacity to contribute to the RPSD. Each of the Consortium Partners were represented on the Steering Committee and were actively engaged in building a regional plan for St. Louis.
Newsletters - Newsletters were sent out to committee members and other interested people to keep them informed of current activities and upcoming meetings and events. The newsletters distributed during the planning process are archived here.
On October 14, 2010 the U.S. Department of Housing and Urban Development (HUD) announced the award of nearly $100 million in grants to support more livable and sustainable communities across the country. In the news release, HUD announced the St. Louis region would receive $4.7 million in funding "to build economic competitiveness by connecting housing with good jobs, quality schools and transportation".
The grant is part of the federal government's new emphasis on integrated planning, where transportation, housing and environmental issues are linked to create more sustainable and economically vibrant communities. The program is part of a growing recognition that citizens and urban leaders need to understand how rising fuel prices, a struggling economy, an unstable housing market and concern over climate change combine to affect the quality of life in their counties, cities, and neighborhoods.
In January 2011, East-West Gateway began negotiating an award agreement with HUD. After the approval of the award agreement, East-West Gateway negotiated agreements with the ten other Partners who are sub-awardees. Their specific tasks and goals as they relate to the overall project were refined at that time. The official start date of the three-year planning grant was February 15, 2011. Over the three-year period the 11 Consortium Partners will be working together and with other organizations on building a St. Louis Regional Plan for Sustainable Development based on the HUD-approved Work Plan.
The Regional Sustainable Communities Planning Grant offers the St. Louis region an opportunity to launch St. Louis to the next level of sustainable community planning and economic development. Building on initiatives already underway in St. Louis, like Great Rivers Greenway, Trailnet, and East-West Gateway's Renewing the Region initiative, local governments, the private sector and other regional organizations will work together under one collaborative umbrella to make better decisions across sectors, like transportation, housing and the environment.


mobile iron ore impact crusher price in nigeria Mobile Iron Ore Cone . Mobile Iron Ore Impact Crusher For Hire Nigeria Mobile Iron Ore Impact .
used gold ore impact crusher for hire in nigeriacrusher in nigeria for sale - YouTube Feb 13, 2016 . Mining Plant, ZENTIH crusher for sale used in .
used iron ore impact crusher for sale nigeria Mobile Iron Ore Crusher For Hire In Nigeria . Mobile Iron Ore Crusher .. used gold ore i.
crusher for iron ore price list in malaysia / . crusher provider in nigeria used iron ore.mining and quarry machine iron ore impact crusher.
used gold ore impact crusher for hire nigeria Mobile Gold Ore Crusher - colombiacrusher . and lightweight sluices will be needed.Mobile gold ore.
used iron ore impact crusher provider in nigeriaUsed iron ore crusher price..cond hand iron ore mobile crusher for sale second hand iron ore m.
Nigeria crusher used gold ore cone crusher suppliers in iron ore, Nigeria crusher Used gold for gold ore, Nigeria crusher Used.
used cone crusher for coal crushers . mobile iron ore cone crusher for hire nigeria jua.
portable iron ore impact crusher suppliers in nigeria Request for Quotation You can get the price list and a GME representative will contact you within .
2012829- impact crusher in Abuja, Niger, Nigeria beneficiation of iron ore using sodium hydroxide in abuja Impact Crusher Cone Crusher Hammer C.
201717- road Gemstone crushing plant in Nigeria is utilized widely in Nigeria .used iron ore impact crusher Get chat Complete project of chrome .
used gold ore impact crusher for hire in nigeria Crushing Equipment PE Series Jaw Crusher Based on years' experience and technology development, ZM.
mobile gold ore impact crusher for hire in nigeriacopper ore impact crusher for rent - YouTube 29 Jul 2015 . Pulvinizer Crusher Impact Copper Ore .
used iron ore jaw crusher for hire in nigeria mobile gold ore jaw crusher for hire nigeria . mobile iron ore impact crusher for hire nigeria Iron.
portable iron ore impact crusher suppliers in nigeria Home - Product CenterRequest for Quotation You can get the price list and a ZME representative will.
used iron ore impact crusher for sale in nigeriaCrusher Machines With Jaw Crusher, Impact Crusher for Sale.Copper Ore Processing Machines Iron Ore .
Home > used dolomite impact crusher for hire in nigeria Ball Mill Belt Conveyor BWZ Heavy Duty Apron Feeder CS Cone Crusher Flotation Machine Hammer .
IRO ORE IMPACT CRUSHER PROVIDER IN NIGERIA, IRO ORE IMPACT CRUSHER SUPPLIER IN MALAYSIA, IRO ORE JAW CRUSHER SUPPLIER IN NIGERIA, IRON ORE CONE CRUSHER .
mobile gold ore cone crusher suppliers in nigeria. crusher plant what industries used gold ore . Mobile Gold Ore Impact Crusher For Hire Nigeria.
used iron ore impact crusher for hire in nigeria Supplier, .
Find Best used iron ore impact crusher for hire in nigeria Supplier on Alibaba used iron ore impact crusher for hire in nigeria Supplier Directory.
Halite crushing and grinding are the basic processing stage in production line. Choose the suitable crusher grinding machine will help get high grade.
used iron ore impact crusher for hire nigeria Hydraulic-driven Track Mobile Plant mobile plant are mostly use for crushing and screen.
Home Raymond Mill Vertical Roller Mill MTM Trapezium Grinder Ball Mill About Us Contact Us Live Chat used iron ore impact crusher for.
Nigerian manganese ore crusher, Nigeria manganese ore mining .
Problem, free training equipment for the operation of the use of methods, . Mobile Impact Crusher Putting crushing .


text:
Page: OSDB - Dominic Leone - San Francisco Giants
Dominic Leone
Norwich, CT, USA
Dom, Dominator
2021-2021 San Francisco Giants $570,500 $570,500
2020-2020 Cleveland Indians $563,500 $563,500
2019-2019 St. Louis Cardinals $1,260,000 $1,260,000
2018-2018 Toronto Blue Jays $1,085,000 $1,085,000
2017-2017 Toronto Blue Jays $548,200 $548,200
2016-2016 Arizona Diamondbacks $507,500 $507,500
2015-2015 Seattle Mariners $515,800 $515,800
San Francisco Giants AT&T Park 24 Willie Mays Plaza San Francisco, CA 94107 USA
Dominic Leone was born October 26, 1991, in Norwich, Connecticut. He is a pitcher in the MLB.
During spring training in 2015, Leone struggled with his command, and the Mariners assigned him to Triple-A Tacoma. When the Mariners placed Tom Wilhelmsen on the disabled list in early April, they promoted Leone. Leone made 10 appearances with the Mariners in 2015, posting a 6.35 ERA and nine walks in...
During spring training in 2015, Leone struggled with his command, and the Mariners assigned him to Triple-A Tacoma. When the Mariners placed Tom Wilhelms...
Born: 1991-10-26 (Age: 30) Norwich, CT, USA
College: Clemson
High School: Norwich Free Academy (CT)
MLB Debut: April 6, 2014
During spring training in 2015, Leone struggled with his command, and the Mariners assigned him to Triple-A Tacoma. When the Mariners placed Tom Wilhelmsen on the disabled list in early April, they promoted Leone. Leone made 10 appearances with the Mariners in 2015, posting a 6.35 ERA and nine walks in 111⁄3 innings. In the minors, he put up a 1–1 record, 7.71 ERA, and eight strikeouts in 91⁄3.
Jays to the minor league camp late in spring training, Leone was recalled on April 2 to start the 2017 season with the major league club, taking the roster spot of the injured closer Roberto Osuna. He was optioned to the Triple-A Buffalo Bisons on May 30 but was recalled again on June 6. Leone was placed on the bereavement list for undisclosed reasons on August 13, and activated on August 16. On September 11, Leone earned his first major league saves when he pitched a scoreless 9th inning in a 4–3 victory against the Baltimore Orioles. Leone would finish his first season as a Blue Jay appearing in 65 games, posting a 2.56 ERA, and striking out 81 batters over 701⁄3 innings.
On December 8, 2020, Leone signed a minor league contract with the San Francisco Giants organization. On June 1, 2021, he was selected to the active roster. In the 2021 regular season, Leone was 4-5 with 2 saves and a career-best 1.51 ERA. He pitched in 57 games (4 starts), covering 53.2 innings in which he allowed 6.2 hits/9 innings.

redpajama_set_name: RedPajamaCommonCrawl


The U.S. Citizenship and Immigration Services (USCIS) wants to help international start-up founders stay in the United States, at least on a temporary basis. The USCIS has proposed the International Entrepreneurship Rule to fill a gap in the legal options offered to foreign, non-immigrant entrepreneurs who want to start a business in the U.S.
"There are quite a lot of startups that would be interested in this program," acknowledges Peter F. Asaad of Quarles & Brady in Washington, D.C. In fact, he knows of a number of start-ups that won't make it if the rule isn't finalized and their founders have to leave. "It happens all the time," says Asaad.


Abunda Trade has been revived to help Americans and other Earth conscious denizens about reCommerce. In the past, Abunda Trade has repaired and re-circulated over 300 tons of CDs and DVDs. Today, we hope to use this platform to educate DVD and electronics consumers on how to limit their plastic footprint. We'll provide reviews and news on what you can do to preserve America and the world's future as an educated electronics consumer.
The key to a financially strong non-for-profit organization can lie, primarily, in its ability to not only achieve goals and missions but to remain at the forefront of social networks and promote and facilitate fundraising opportunities. These key writers are important for outreach and charitable work.


Abstract: We study a loss network carrying multicast traffic. The multicast traffic is separated from the rest of the network, resulting in a multicast loss system, where a single server node is connected with a collection of user nodes by a network having a tree topology. A predefined set of dynamic multicast (i.e. point-to-multipoint) connections, called channels, use this network, with the server located at the root of the tree for all these channels and the users located at the leaf nodes. Earlier analytical results concerning the calculation of blocking probabilities in this kind of multicast setting have, because of their exponential complexity, been applicable only for networks with few multicast channels. Our contribution is twofold; first, we define a problem setting where the state description for the system can be simplified. This situation arises when channels can be divided into groups of statistically indistinguishable channels. Second, we present a new algorithm, making the exact calculation of the end-to-end blocking probability feasible for networks with a large number of multicast channels. The algorithm uses a new construct, called combinatorial convolution, to achieve this goal. In the best cases, our algorithm has a polynomial complexity with respect to the number of channels.


text:
Q: about eval statement constructs and delete If I run the following code in google chrome console I get the following results
var x = 1;

alert(delete x); // false

eval('var y = 2');

alert(delete y); // true

Why in the first example the variable is not deleted and in the second example it is deleted?

A: From the Mozilla JS Docs for delete:

delete is only effective on an object's properties. It has no effect
  on variable or function names.

The example provided is similar to yours.
x = 42;         // creates the property x on the global object
var y = 43;     // declares a new variable, y

delete x;       // returns true  (x is a property of the global object and can be deleted)
delete y;       // returns false (delete doesn't affect variable names)

So, why does alert(delete y); work? I couldn't nail down the exact answer, but basically you cannot rely on the scope of eval.
I think eval('var y = 2'); does not get declared as a variable and is treated as a property, but I haven't found evidence for that yet other than the results of our tests. I'm going to continue researching to see if I find the exact reason.
Other articles on eval weirdness:

*

*http://wingolog.org/archives/2012/01/12/javascript-eval-considered-crazy

*http://brownplt.github.com/2012/10/21/js-eval.html

*http://blog.rakeshpai.me/2008/10/understanding-eval-scope-spoiler-its.html

EDIT 0
Based on @Xavier Holt's comment, I looked up hoisting and scope in regards to eval. This scope cheatsheet from Mozilla Dev docs had the following:

eval may capture assignments, but not var declarations
eval'd vars hoist normally, so evals may capture assignments similar
  to with:
function f() {   {
    let x = "inner";
    eval("var x = 'outer'");
    print(x); // "outer"   }
}

If I'm reading this correctly, then my earlier assumption was right. eval() does not evaluate var declarations by declaring  a variable. It must create a property or be treated as a property in order for delete to work.

redpajama_set_name: RedPajamaStackExchange


text:
BRIGG FAIL TO MAKE AN IMPACT ON GRASSHOPPERS
Grasshopper NC made a bright start to their game against Brigg Impacts, defending solidly and turning over a couple of their centre passes. Sarah Barbour (GK) in particular intercepted many passes into the Brigg shooters. Grasshoppers led 16-8 at the end of the first quarter.
In the second quarter, Grasshoppers continued to build on their lead through some more solid defensive work from Sarah Barbour and Megs Palmer (GD), coupled with consistent shooting from Stacie Racz (GA). By half time, the score was 27-15.
At half time, coach Anne Melling made a couple of changes: Stacie Racz moved to GS and Katie Long came on as GA. This paid dividends as the goals kept popping in and Grasshoppers demonstrated good confidence all over the court. By the end of the third quarter, Grasshoppers led 46-23.
Brigg made some changes of their own for the final quarter, which meant things were a little tougher for Grasshoppers. However, the Leicestershire team still maintained their lead, and won every quarter. The final score was 61-37. A great game from all concerned and congratulations to Players of the Match from either end: Sarah Barbour (GK) and Stacie Racz (GA/GS).
2012/2013


text:
import logging
import re
from operator import attrgetter, itemgetter
import torch
import numpy as np
import torch.distributed as dist
import torch.nn as nn

from .modules import PQConv2d, PQEmbedding, PQLinear
from .pq import PQ

def quantize_model_(
    model,
    size_tracker,
    layers_to_quantize,
    block_sizes_config,
    n_centroids_config,
    step=0,
    n_iter=15,
    eps=1e-6,
    max_tentatives=100,
    remove_weights=False,
    verbose=True,
    state_dict=None,
):
    """
    Quantize a model in-place by stages. All the targeted
    layers are replaced by their quantized counterpart,
    and the model is ready for the finetuning of the
    centroids in a standard training loop (no modifications
    required). Note that we do not quantize biases.

    Args:
        - model: a nn.Module
        - size_tracker: useful for tracking quatization statistics
        - layers_to_quantize: a list containing regexps for
          filtering the layers to quantize at each stage according
          to their name (as in model.named_parameters())
        - block_sizes_config: dict like
          {
              'Conv2d': ('kernel_size', {'(3, 3)': 9, '(1, 1)': 4}),
              'Linear': ('in_features', {'*': 8})
          }
          For instance, all conv2d layers with kernel size 3x3 have
          a block size of 9 and all Linear layers are quantized with
          a block size of 8, irrespective of their size.
        - n_centroids_config: dict like
          {
              'Conv2d': ('kernel_size', {'*': 256}),
              'Linear': ('in_features', {'*': 256})
          }
          For instance, all conv2d layers are quantized with 256 centroids
        - step: the layers to quantize inplace corresponding
          to layers_to_quantize[step]
    """

    quantized_layers = get_layers(
        model, layers_to_quantize[step], remove_weights=remove_weights
    )

    for layer in quantized_layers:

        # book-keeping
        is_master_process = (not dist.is_initialized()) or (
            dist.is_initialized() and dist.get_rank() == 0
        )
        verbose = verbose and is_master_process

        # get block size and centroids
        module = attrgetter(layer)(model)
        block_size = get_param(module, layer, block_sizes_config)
        n_centroids = get_param(module, layer, n_centroids_config)
        if verbose:
            logging.info(
                f"Quantizing layer {layer} with block size {block_size} and {n_centroids} centroids"
            )

        # quantize layer
        weight = module.weight.data.clone()
        is_bias = "bias" in [x[0] for x in module.named_parameters()]
        bias = module.bias.data.clone() if is_bias else None
        quantizer = PQ(
            weight,
            block_size,
            n_centroids=n_centroids,
            n_iter=n_iter,
            eps=eps,
            max_tentatives=max_tentatives,
            verbose=verbose,
        )

        # quantization performed on all GPUs with same seed
        quantizer.encode()
        centroids = quantizer.centroids.contiguous()
        assignments = quantizer.assignments.contiguous()

        # If n_iter = 0 and state_dict is provided, then
        # we initialize random assignments and centroids to
        # random values of the appropriate dimensions
        # because the quantized model parameters will
        # overwritten by the state_dict later on.
        if n_iter == 0 and state_dict:
            # Initialize random centroids of the correct size
            centroids = torch.rand(centroids.size())
            centroids.cuda()
            # Get counts and assignment keys from layer in loaded checkpoint.
            counts_key = layer + "." + "counts"
            assignment_key = layer + "." + "assignments"
            # Get number of different bins to include.
            counts = list(state_dict[counts_key].shape)[0]
            print(layer)
            print(state_dict[counts_key])
            print(counts)
            # Initialize random assignments of the correct size
            # with an appropriate number of bins.
            num_assignments = list(state_dict[assignment_key].shape)[0]
            num_extra = num_assignments - counts
            print(num_assignments)
            print(num_extra)
            assignments_bins = torch.arange(counts)
            assignments_rand = torch.randint(0, counts - 1, (num_extra,))
            assignments = torch.cat((assignments_bins, assignments_rand), 0)
            # assignments = assignments.type(torch.IntTensor)
            assignments.cuda()
            print("assignments")
            print(assignments)

        # broadcast results to make sure weights are up-to-date
        if dist.is_initialized():
            dist.broadcast(centroids, 0)
            dist.broadcast(assignments, 0)

        # instantiate the quantized counterpart
        if isinstance(module, nn.Linear):
            out_features, in_features = map(
                lambda k: module.__dict__[k], ["out_features", "in_features"]
            )
            quantized_module = PQLinear(
                centroids, assignments, bias, in_features, out_features
            )
        elif isinstance(module, nn.Embedding):
            num_embeddings, embedding_dim = map(
                lambda k: module.__dict__[k], ["num_embeddings", "embedding_dim"]
            )
            quantized_module = PQEmbedding(
                centroids, assignments, num_embeddings, embedding_dim
            )
        elif isinstance(module, nn.Conv2d):
            out_channels, in_channels, kernel_size = map(
                lambda k: module.__dict__[k],
                ["out_channels", "in_channels", "kernel_size"],
            )
            stride, padding, dilation, groups, padding_mode = map(
                lambda k: module.__dict__[k],
                ["stride", "padding", "dilation", "groups", "padding_mode"],
            )

            quantized_module = PQConv2d(
                centroids,
                assignments,
                bias,
                in_channels,
                out_channels,
                kernel_size,
                stride=stride,
                padding=padding,
                dilation=dilation,
                groups=groups,
                padding_mode=padding_mode,
            )
        else:
            raise ValueError(f"Module {module} not yet supported for quantization")

        # replace layer by its quantized counterpart
        attrsetter(layer)(model, quantized_module)

        # update statistics
        size_tracker.update(weight, block_size, n_centroids)

    # return name of quantized layers
    return quantized_layers

def get_layers(model, filter_regexp, remove_weights=False):
    """
    Filters out the layers according to a regexp. Note that
    we omit biases.

    Args:
        - model: a nn.Module
        - filter_regexp: a regexp to filter the layers to keep
          according to their name in model.named_parameters().
          For instance, the regexp:

             down_layers\\.[123456]\\.(conv[12]|identity\\.conv))

          is keeping blocks down_layers from 1 to 6, and inside
          each block is keeping conv1, conv2 and identity.conv.

    Remarks:
        - We add (module\\.)? at the beginning of the regexp to
          account for the possible use of nn.parallel.DataParallel
    """

    # get all parameter names
    all_layers = map(itemgetter(0), model.named_parameters())

    # remove biases
    all_layers = filter(lambda x: "bias" not in x, all_layers)

    # remove .weight in all other names (or .weight_orig is spectral norm)
    all_layers = map(lambda x: x.replace(".weight_orig", ""), all_layers)
    # remove weights indicates whether the weights extension should be removed, in addition to
    # weight_orig and weight extension on names
    if remove_weights:
        all_layers = map(lambda x: x.replace(".weights", ""), all_layers)
    all_layers = map(lambda x: x.replace(".weight", ""), all_layers)

    # return filtered layers
    filter_regexp = "(module\\.)?" + "(" + filter_regexp + ")"
    r = re.compile(filter_regexp)

    return list(filter(r.match, all_layers))

def get_param(module, layer_name, param_config):
    """
    Given a quantization configuration, get the right parameter
    for the module to be quantized.

    Args:
        - module: a nn.Module
        - layer_name: the name of the layer
        - param_config: a dict like
          {
              'Conv2d': ('kernel_size', {'(3, 3)': 9, '(1, 1)': 4}),
              'Linear': ('in_features', {'*': 8})
          }
          For instance, all conv2d layers with kernel size 3x3 have
          a block size of 9 and all Linear layers are quantized with
          a block size of 8, irrespective of their size.

    Remarks:
        - if 'fuzzy_name' is passed as a parameter, layers whose layer_name
          include 'fuzzy_name' will be assigned the given parameter.
          In the following example, conv.expand layers will have a block
          size of 9 while conv.reduce will have a block size of 4 and all
          other layers will have a block size of 2.
          {
              'Conv2d': ('fuzzy_name', {'expand': 9, 'reduce': 4, '*': 2}),
              'Linear': ('fuzzy_name', {'classifier': 8, 'projection': 4})
          }

    """

    layer_type = module.__class__.__name__

    if layer_type not in param_config:
        raise KeyError(f"Layer type {layer_type} not in config for layer {module}")

    feature, params = param_config[module.__class__.__name__]

    if feature != "fuzzy_name":
        feature_value = str(getattr(module, feature))
        if feature_value not in params:
            if "*" in params:
                feature_value = "*"
            else:
                raise KeyError(
                    f"{feature}={feature_value} not in config for layer {module}"
                )
    else:
        feature_values = [name for name in params if name in layer_name]
        if len(feature_values) == 0:
            if "*" in params:
                feature_value = "*"
            else:
                raise KeyError(f"name={layer_name} not in config for {module}")
        else:
            feature_value = feature_values[0]

    return params[feature_value]

class SizeTracker(object):
    """
    Class to keep track of the compressed network size with iPQ.

    Args:
        - model: a nn.Module

    Remarks:
        - The compressed size is the sum of three components
          for each layer in the network:
              (1) Storing the centroids given by iPQ in fp16
              (2) Storing the assignments of the blocks in int8
              (3) Storing all non-compressed elements such as biases
        - This cost in only valid if we use 256 centroids (then
          indexing can indeed by done with int8).
    """

    def __init__(self, model):
        self.model = model
        self.size_non_compressed_model = self.compute_size()
        self.size_non_quantized = self.size_non_compressed_model
        self.size_index = 0
        self.size_centroids = 0
        self.n_quantized_layers = 0

    def compute_size(self):
        """
        Computes the size of the model (in MB).
        """

        res = 0
        for _, p in self.model.named_parameters():
            res += p.numel()
        return res * 4 / 1024 / 1024

    def update(self, W, block_size, n_centroids):
        """
        Updates the running statistics when quantizing a new layer.
        """

        # bits per weights
        bits_per_weight = np.log2(n_centroids) / block_size
        self.n_quantized_layers += 1

        # size of indexing the subvectors of size block_size (in MB)
        size_index_layer = bits_per_weight * W.numel() / 8 / 1024 / 1024
        self.size_index += size_index_layer

        # size of the centroids stored in float16 (in MB)
        size_centroids_layer = n_centroids * block_size * 2 / 1024 / 1024
        self.size_centroids += size_centroids_layer

        # size of non-compressed layers, e.g. LayerNorms or biases (in MB)
        size_uncompressed_layer = W.numel() * 4 / 1024 / 1024
        self.size_non_quantized -= size_uncompressed_layer

    def __repr__(self):
        size_compressed = (
            self.size_index + self.size_centroids + self.size_non_quantized
        )
        compression_ratio = self.size_non_compressed_model / size_compressed  # NOQA
        return (
            f"Non-compressed model size: {self.size_non_compressed_model:.2f} MB. "
            f"After quantizing {self.n_quantized_layers} layers, size "
            f"(indexing + centroids + other): {self.size_index:.2f} MB + "
            f"{self.size_centroids:.2f} MB + {self.size_non_quantized:.2f} MB = "
            f"{size_compressed:.2f} MB, compression ratio: {compression_ratio:.2f}x"
        )

def attrsetter(*items):
    def resolve_attr(obj, attr):
        attrs = attr.split(".")
        head = attrs[:-1]
        tail = attrs[-1]

        for name in head:
            obj = getattr(obj, name)
        return obj, tail

    def g(obj, val):
        for attr in items:
            resolved_obj, resolved_attr = resolve_attr(obj, attr)
            setattr(resolved_obj, resolved_attr, val)

    return g

redpajama_set_name: RedPajamaGithub


text:
La slavistique (en russe , ) est l'étude linguistique concernant les langues slaves. Elle couvre les domaines de la linguistique, de la littérature, de l'histoire et de la culture slave, couvrant une aire culturelle variée et vivante qui s'étend de l'Europe centrale à l'Asie orientale.

Historique
L'étude comparée des langues slaves remonte en France à Jean-Baptiste Colbert qui créa la première école d'enseignement des langues en 1669 à Istanbul dans le quartier de Beyoğlu. En 1700, l'école fut transférée à Paris et celle-ci prit le nom d'École spéciale des langues orientales vivantes en 1795 par décret de la Convention. On y formait des interprètes et des administrateurs.

La slavistique s'est étendue dans le monde avec le développement de l'intérêt porté sur le plan international aux peuples slaves et au mouvement nationaliste du panslavisme. Le philologue et historien tchèque Josef Dobrovský fut un des premiers à utiliser le terme slavistique.

De nos jours, la slavistique française a vu son développement dans de nombreuses universités, tout en constatant l'érosion de ses effectifs. La suppression complète de l'enseignement du russe dans de nombreux établissements et la diminution en parallèle du nombre de postes aux concours de l'agrégation et du CAPES, ont appauvri le vivier de futurs slavisants.

Publications
La Revue des études slaves demeure le support de la slavistique française et francophone. Elle publie notamment les communications de la délégation de slavistique française au  (Prague, 1929). Elle est aussi une revue internationale à laquelle collaborent de manière significative des slavistes du monde entier. Tout en maintenant sa vocation originelle, la philologie et la linguistique, l'histoire, la critique et l'histoire littéraires des pays slaves, elle s'est élargie à l'anthropologie historique, l'ethnologie, l'histoire des idées, des littératures, des arts, des cultures et des religions.

Aire géographique

Biélorussie ;
Bosnie-Herzégovine ;
Bulgarie ;
Croatie ;
Macédoine du Nord ;
Monténégro ;
Pologne ;
Russie ;
Serbie ;
Slovaquie ;
Slovénie ;
Tchéquie ;
Ukraine ;
Autres langues: le haut sorabe, le bas sorabe, le cachoube, le polabe, le ruthène et le vieux-slave.

Personnalités slavistes francophones

Autres personnalités slavistes

Notes et références

Voir aussi

Bibliographie

Articles connexes
 Langues slaves
 Langues balto-slaves

Liens externes
Définition du CNRS
Centre d'études slaves de l'université de Paris-Sorbonne
Département slavistique de l'université de Toulouse Le Mirail
Université de Fribourg, faculté des Lettres
Université Jean Moulin de Lyon
 slavistik-portal.de

Philologie

redpajama_set_name: RedPajamaWikipedia


"Stuck" is a poem. I'm tempted to make that sentence this whole blog posting because that really says it all. The rhyme scheme is deliberate and strict, surprising for a song that ebbs and flows with a wild ride of images and phrases. Or as Sean Wilentz says, "words meander through random combinations and disconnected fragments . . ." The rhymes certainly are not random; the pattern goes abcbdefe, from beginning to the end, with the bridge at the end of each verse (9 total), ghg.
And the poem (yes, poem) ends with a question of how one can get out of going through things twice. Well, we must go through listening to that refrain 9 times–no getting out of it, and no getting out of the rhyme pattern either. Yet, who would want to? This is a song that seems to go on forever but the feeling is that forever is not long enough. I want Bob stuck inside of Mobile with those Memphis Blues as long as he keeps singing away and forcing some of those great wrenched rhymes like "block" and "talk," "talked" with locked." Can't you just hear that voice making those words sound alike?


text:
Aiden Grimshaw releases free download
Get The Way We Are completely free now.
Aiden Grimshaw has released a free download as he makes his return to music.
Following the release of his debut album Misty Eye last year, all has been quiet on the Aiden front. Whilst he may not have been in the spotlight, he has been busy working on new music and is releasing a new 5-track EP this autumn produced alongside Dimitri Tikovoi.
The first taster is new track The Way We Are which continues Aiden's exploration of music that's a little left-of-centre and far away from the mainstream roots of his time on The X Factor.
Download the track below for free:
In this article:Aiden Grimshaw


text:
/*!

Speech Balloon jQuery plugin
Version: 0.7 (2013-02-05 13:30)
Package: Konsepto Web Frontend Framework
Author: Mikko Paltamaa / Konsepto
Website: http://konsepto.fi
License: All rights reserved

Description:

This plugin can be used to create speech balloons either from existing
DOM elements, element attributes, or custom HTML code. Apply it to the
target elements that the speech balloon are related to.

Usage:

$(...).createPlugin('speechBalloon', [object settings], [object effects], [boolean debug]);

Returns: object jQuery

Examples:

// Create the plugins using the default settings and effects
$('.speech-balloon-target').createPlugin('speechBalloon');

// Get the plugins
var plugins = $('.speech-balloon-target').speechBalloon();

// Go through the plugins
for (var i = 0; i < plugins.length; i++) {

	// Show the speech balloon
	plugins[i].show();

}

...

*/

// TODO: Toteuta asetus etäisyydestä target-elementistä
// TODO: Lisää asetus ja koodit, jotka kohdistavat puhekuplan kursoriin
// TODO: Lisää koodi, joka hakee URL-sisällön tarvittaessa

// Add a protective wrapper
;(function ($, window, document, undefined) {

	// The default settings for the plugin
	var defaultSettings = {

		// Element selectors (selector string, DOM object or jQuery element)
		selectors: {
			'balloon': '.speech-balloon-balloon',
			'content': '.speech-balloon-content'
		},

		// Context where the elements should be searched (selector string, DOM object or jQuery element; if empty, the default context is used)
		contexts: {
			'balloon': 'body',
			'content': 'body'
		},

		// The balloon is visible on startup
		startVisible: false,

		// Content source type (none, element, attribute, html or url)
		sourceType: 'none',

		// Content sources
		sources: {
			// Element source
			element: {
				// Element selector (selector string, DOM object or jQuery element)
				selector: '.speech-balloon-source',
				// Context where the elements should be searched (selector string, DOM object or jQuery element; if empty, the default context is used)
				context: 'body',
				// If the content element should be cloned insted of detached from its current location
				clone: false
			},
			// Attribute source
			attribute: {
				// Source element (element key)
				element: 'target',
				// Source attribute (attribute name)
				name: 'title',
				// If the source attribute should be removed
				remove: true
			},
			// HTML source (HTML string)
			html: '',
			// URL source (URL string)
			url: ''
		},

		// Balloon anchor (none or target)
		anchor: 'target',

		// Alignments (syntax: 'horizontal vertical')
		alignment: {
			// Target (left, center or right; top, center or bottom)
			'target': 'center top',
			// Balloon (left, center or right; top, center or bottom)
			'balloon': 'center bottom'
		},

		// Balloon stays inside the document
		stayInDocument: true,

		// Balloon's distance from the document borders (in px)
		documentDistance: 20,

		/*
		// TODO: Poista nämä turhina
		// Balloon stays inside the browser's viewport
		stayInViewport: false,

		// Balloon's distance from the viewport borders (in px)
		viewportDistance: 20,
		*/

		// Delays before executing actions (ms)
		delays: {
			'show': 667,
			'hide': 667
		},

		// Effects used in actions (one of the default effect names or a custom function)
		effects: {
			'show': 'fade',
			'hide': 'fade'
		},

		// Durations for actions (ms)
		durations: {
			'show': 333,
			'hide': 333
		},

		// Animation method (either jQuery's 'animate' or a custom animation method name, like jQuery Transit's 'transition')
		animationMethod: ($.transit && $.support.transition ? 'transition' : 'animate'), // If available, use jQuery Transit plugin's method

		// Class names that will be added to the plugin elements
		classNames: {
			// Target element class name
			'target': 'speech-balloon-target',
			// Balloon class name
			'balloon': 'speech-balloon-balloon',
			// Balloon content class name
			'content': 'speech-balloon-content'
		},

		// Element CSS styles (css style objects)
		styles: {
			'target': {},
			'balloon': {
				'display': 'block',
				'position': 'absolute',
				'z-index': '10'
			},
			'content': {}
		},

		// Binded events (event names; optionally with namespaces)
		bindEvents: {
			'relocate': {
				'window': 'resize layoutupdate.responsiveLayout',
				'target': 'resize',
				'balloon': 'resize',
				'content': ''
			},
			'show': {
				'window': '',
				'target': 'mouseenter focusin',
				'balloon': 'mouseenter focusin',
				'content': ''
			},
			'hide': {
				'window': '',
				'target': 'mouseleave focusout',
				'balloon': 'mouseleave focusout',
				'content': ''
			},
			'toggle': {
				'window': '',
				'target': '',
				'balloon': '',
				'content': ''
			}
		},

		// Binded code
		bindCode: {
			'relocate': function (event) {
				// Print debugging information
				this._log('The binded relocate action triggered');
				// If the balloon is visible
				if (this.isVisible()) {
					// Relocate the balloon
					this.relocate();
				}
				// Cancel the default action and stop bubbling
				return false;
			},
			'show': function (event) {
				// Print debugging information
				this._log('The binded show action triggered');
				// Show the balloon
				this.show();
				// Cancel the default action and stop bubbling
				return false;
			},
			'hide': function (event) {
				// Print debugging information
				this._log('The binded hide action triggered');
				// Hide the balloon
				this.hide();
				// Cancel the default action and stop bubbling
				return false;
			},
			'toggle': function (event) {
				// Print debugging information
				this._log('The binded toggle action triggered');
				// Toggle the balloon
				this.toggle();
				// Cancel the default action and stop bubbling
				return false;
			}
		},

		// Triggered events (event names; optionally with namespaces)
		triggers: {
			'showStart': {
				'window': '',
				'target': '',
				'balloon': 'showstart.speechBalloon',
				'content': ''
			},
			'showEnd': {
				'window': '',
				'target': '',
				'balloon': 'showend.speechBalloon',
				'content': ''
			},
			'hideStart': {
				'window': '',
				'target': '',
				'balloon': 'hidestart.speechBalloon',
				'content': ''
			},
			'hideEnd': {
				'window': '',
				'target': '',
				'balloon': 'hideend.speechBalloon',
				'content': ''
			}
		},

		// Callback functions (custom functions)
		callbacks: {
			'show': function () {},
			'hide': function () {}
		}

	};

	// The default effects for the plugin actions
	var defaultEffects = {

		// Effects for the 'show' action
		'show': {
			'instant': function (phase, $elements, method, duration) {
				// Print debugging information
				this._log('Executing the default instant effect');
				switch (phase) {
					case 'start':
						//$elements['balloon'].removeClass('hidden').addClass('visible');
						$elements['balloon'].css({'visibility': 'visible', 'opacity': '1'});
						return $elements['balloon'].promise();
					break;
					case 'end':
						return $elements['balloon'].promise();
					break;
				}
			},
			'fade': function (phase, $elements, method, duration) {
				// Print debugging information
				this._log('Executing the default fade effect');
				switch (phase) {
					case 'start':
						//$elements['balloon'].removeClass('hidden').addClass('visible');
						$elements['balloon'].css({'visibility': 'visible', 'opacity': '0'});
						$elements['balloon'][method]({'opacity': '1'}, duration, (method == 'transition' ? 'ease-in-out' : 'swing'));
						return $elements['balloon'].promise();
					break;
					case 'end':
						return $elements['balloon'].promise();
					break;
				}
			}
		},

		// Effects for the 'hide' action
		'hide': {
			'instant': function (phase, $elements, method, duration) {
				// Print debugging information
				this._log('Executing the default instant effect');
				switch (phase) {
					case 'start':
						$elements['balloon'].removeClass('visible').addClass('hidden');
						$elements['balloon'].css({'visibility': 'hidden', 'opacity': '0'});
						return $elements['balloon'].promise();
					break;
					case 'end':
						return $elements['balloon'].promise();
					break;
				}
			},
			'fade': function (phase, $elements, method, duration) {
				// Print debugging information
				this._log('Executing the default fade effect');
				switch (phase) {
					case 'start':
						$elements['balloon'].removeClass('visible').addClass('hidden');
						$elements['balloon'].css({'visibility': 'visible', 'opacity': '1'});
						$elements['balloon'][method]({'opacity': '0'}, duration, (method == 'transition' ? 'ease-in-out' : 'swing'));
						return $elements['balloon'].promise();
					break;
					case 'end':
						$elements['balloon'].css({'visibility': 'hidden'});
						return $elements['balloon'].promise();
					break;
				}
			}
		}

	};

	// Define the plugin
	var Plugin = {

		// Debug mode (prints debug information to the console if true)
		debug: false,

		// Settings
		settings: {},

		// Effects
		effects: {},

		// Status
		status: {
			// Visible
			visible: false,
			// Enabled
			enabled: false
		},

		// Elements (jQuery objects)
		$elements: {},

		// Target element
		_targetElement: null,

		// Current action
		_action: '',

		// Timeout for actions
		_actionTimeout: null,

		// Queue for actions
		_actionQueue: [],

		// Bind code
		_bindCode: {}

	};

	// Define the plugin prototype
	var PluginPrototype = {

		// Plugin's name
		name: 'WFF Speech Balloon',

		// Plugin's jQuery function name
		functionName: 'speechBalloon',

		// Standalone (instances are not tied to a certain element)
		standalone: false,

		// Singleton (only single instance allowed per element, or globally if a standalone plugin)
		singleton: false,

		// Default settings
		defaultSettings: defaultSettings,

		// Default effects
		defaultEffects: defaultEffects,

		// Returns the object's visible status
		isVisible: function () {
			// Return the visible status
			return this.status.visible;
		},

		// Shows the balloon (optional integer delay (ms), optional boolean enqueue, optional string effect)
		show: function (delay, enqueue, effect) {
			// Print debugging information
			this._log('Show action called');
			// Delay the action
			this._delay('show', delay, enqueue, effect);
		},

		// Hides the balloon (optional integer delay (ms), optional boolean enqueue, optional string effect)
		hide: function (delay, enqueue, effect) {
			// Print debugging information
			this._log('Hide action called');
			// Delay the action
			this._delay('hide', delay, enqueue, effect);
		},

		// Toggles the balloon (optional integer delay (ms), optional boolean enqueue, optional string effect)
		toggle: function (delay, enqueue, effect) {
			// Print debugging information
			this._log('Toggle action called');
			// If the balloon is visible
			if (this.status.visible) {
				// Hide after a delay
				this.hide(delay, enqueue, effect);
			}
			// Else the balloon is hidden
			else {
				// Show after a delay
				this.show(delay, enqueue, effect);
			}
		},

		// Relocates the balloon
		relocate: function () {
			// Print debugging information
			this._log('Relocating the balloon');
			// Set shortcuts
			var $elements = this.$elements;
			var settings = this.settings;
			var anchor = settings.anchor;
			var alignment = settings.alignment;
			// If the anchor is 'target'
			if (anchor == 'target') {
				// Set utility variables
				var coords;
				var parts;
				// Set the balloon's left and top styles
				$elements['balloon'].css({'left': '0px', 'top': '0px'});
				// Get the container's coordinates (default 0, 0)
				coords = $elements['balloon'].offsetParent().offset() || {left: 0, top: 0};
				// Set the container's coordinates
				var containerLeft = coords.left;
				var containerTop = coords.top;
				// Set the anchor's coordinates
				var anchorX;
				var anchorY;
				// If the anchor was 'target'
				if (anchor == 'target') {
					// Set utility variables
					var targetWidth, targetHeight;
					// Fetch the target element's coordinates (default 0, 0)
					coords = $elements['target'].offset() || {left: 0, top: 0};
					// Set the the achor into target element's coordinates
					anchorX = coords.left;
					anchorY = coords.top;
					// Fetch the target element's size
					targetWidth = $elements['target'].outerWidth();
					targetHeight = $elements['target'].outerHeight();
					// Split the target's alignment string
					parts = alignment['target'].split(' ');
					// If the first part was 'center'
					if (parts[0] == 'center') {
						// Calculate the anchor point's x coordinates
						anchorX += targetWidth / 2;
					}
					// Else if the first part was 'right'
					else if (parts[0] == 'right') {
						// Calculate the anchor point's x coordinates
						anchorX += targetWidth;
					}
					// If the second part was 'center'
					if (parts[1] == 'center') {
						// Calculate the anchor point's y coordinates
						anchorY += targetHeight / 2;
					}
					// If the second part was 'bottom'
					else if (parts[1] == 'bottom') {
						// Calculate the anchor point's y coordinates
						anchorY += targetHeight;
					}
				}
				// Fetch the balloon's size
				var balloonWidth = $elements['balloon'].outerWidth();
				var balloonHeight = $elements['balloon'].outerHeight();
				// Fetch the balloon margins
				var marginRight = parseInt($elements['balloon'].css('margin-right').replace('px', ''));
				var marginTop = parseInt($elements['balloon'].css('margin-top').replace('px', ''));
				var marginBottom = parseInt($elements['balloon'].css('margin-bottom').replace('px', ''));
				var marginLeft = parseInt($elements['balloon'].css('margin-left').replace('px', ''));
				// Set the balloon's offset
				var offsetX = marginLeft;
				var offsetY = marginTop;
				// Split the balloon's alignment string
				parts = alignment['balloon'].split(' ');
				// If the first part was 'center'
				if (parts[0] == 'center') {
					// Calculate the balloon's x offset
					offsetX = -(balloonWidth / 2);
				}
				// If the first part was 'right'
				else if (parts[0] == 'right') {
					// Calculate the balloon's x offset
					offsetX = -balloonWidth - marginRight;
				}
				// If the second part was 'center'
				if (parts[1] == 'center') {
					// Calculate the balloon's y offset
					offsetY = -(balloonHeight / 2);
				}
				// If the second part was 'right'
				else if (parts[1] == 'bottom') {
					// Calculate the balloon's y offset
					offsetY = -balloonHeight - marginBottom;
				}
				// Calculate the balloon's coordinates
				var balloonLeft = anchorX + offsetX;
				var balloonTop = anchorY + offsetY;
				// If the balloon shoud stay inside the document
				if (settings.stayInDocument) {
					// Set shortcuts
					var $document = $(document);
					var documentDistance = settings.documentDistance;
					// Set document's coordinates
					var documentLeft = 0;
					var documentRight = $document.width();
					var documentTop = 0;
					var documentBottom = $document.height();
					// If the balloon is over the distance to the right border
					if (balloonLeft + marginLeft + balloonWidth > documentRight - documentDistance) {
						// Move into the document
						balloonLeft = documentRight - marginLeft - balloonWidth - documentDistance;
					}
					// If the balloon is over the distance to the left border
					if (balloonLeft < documentLeft + documentDistance) {
						// Move into the document
						balloonLeft = documentLeft + documentDistance;
					}
					// If the balloon is over the distance to the bottom border
					if (balloonTop + marginTop + balloonHeight > documentBottom - documentDistance) {
						// Move into the document
						balloonTop = documentBottom - marginTop - balloonHeight - documentDistance;
					}
					// If the balloon is over the distance to the top border
					if (balloonTop < documentTop + documentDistance) {
						// Move into the document
						balloonTop = documentTop + documentDistance;
					}
				}
				/*
				// TODO: Poista nämä turhina
				// If the balloon shoud stay inside the viewport
				if (settings.stayInViewport) {
					// Set shortcuts
					var $window = $(window);
					var viewportDistance = settings.viewportDistance;
					// Set viewport's coordinates
					var viewportLeft = $window.scrollLeft();
					var viewportRight = viewportLeft + $window.width();
					var viewportTop = $window.scrollTop();
					var viewportBottom = viewportTop + $window.height();
					// If the balloon is over the distance to the right border
					if (balloonLeft + marginLeft + balloonWidth > viewportRight - viewportDistance) {
						// Move into the viewport
						balloonLeft = viewportRight - marginLeft - balloonWidth - viewportDistance;
					}
					// If the balloon is over the distance to the left border
					if (balloonLeft < viewportLeft + viewportDistance) {
						// Move into the viewport
						balloonLeft = viewportLeft + viewportDistance;
					}
					// If the balloon is over the distance to the bottom border
					if (balloonTop + marginTop + balloonHeight > viewportBottom - viewportDistance) {
						// Move into the viewport
						balloonTop = viewportBottom - marginTop - balloonHeight - viewportDistance;
					}
					// If the balloon is over the distance to the top border
					if (balloonTop < viewportTop + viewportDistance) {
						// Move into the viewport
						balloonTop = viewportTop + viewportDistance;
					}
				}
				*/
				// Calculate the balloon's location
				var left = balloonLeft - containerLeft - marginLeft;
				var top = balloonTop - containerTop - marginTop;
				// Set the balloon's left and top styles
				$elements['balloon'].css({'left': left, 'top': top});
			}
		},

		// Creates the plugin, called by the factory code (object settings, object effects, boolean debug)
		_create: function (settings, effects, debug) {
			// Set the debug mode
			this.debug = (debug ? true : this.debug);
			// Print debugging information
			this._log('Creating the object');
			// Merge default settings and given settings
			$.extend(true, this.settings, this.defaultSettings, settings);
			// Merge default effects and given effects
			$.extend(true, this.effects, this.defaultEffects, effects);
			// Set shortcuts
			var status = this.status;
			var $elements = this.$elements;
			var settings = this.settings;
			var classNames = settings.classNames;
			var styles = settings.styles;
			var alignment = settings.alignment;
			// Print debugging information
			this._log('The target element is:', this._targetElement);
			this._log('The settings are:', settings);
			this._log('The effects are:', effects);
			// Set the target jQuery element
			$elements['target'] = $(this._targetElement);
			// Set the window jQuery element
			$elements['window'] = $(window);
			// Set the visible status
			status.visible = settings.startVisible;
			// Fetch the elements
			this._fetchElements();
			// Fetch the content
			this._fetchContent();
			// Go through the class name settings
			for (var key in classNames) {
				// Add the class names to the element
				$elements[key].addClass(classNames[key]);
			}
			// Go through the style settings
			for (var key in styles) {
				// Apply the styles to the element
				$elements[key].css(styles[key]);
			}
			// Go through the alignment settings
			for (var key in alignment) {
				// Split the alignment string
				var parts = alignment[key].split(' ');
				// Combine and add the alignment class name to the element
				$elements[key].addClass('align-' + parts[0] + '-' + parts[1]);
			}
			// Set the object's binds
			this.bind();
			// Enable the object
			this.enable();
		},

		// Destroys the plugin
		_destroy: function () {
			// Print debugging information
			this._log('Destroying the object');
			// Unset the object's binds
			this.unbind();
			// Disable the object
			this.disable();
		},

		// Fetches the elements
		_fetchElements: function () {
			// Print debugging information
			this._log('Fetching the elements');
			// Set shortcuts
			var settings = this.settings;
			var selectors = settings.selectors;
			var contexts = settings.contexts;
			var $elements = this.$elements;
			// Go through the selectors
			for (key in selectors) {
				// Set the selector
				var selector = selectors[key];
				// If no selector was given
				if (!selector) {
					// Set the jQuery element (to a new jQuery element)
					$elements[key] = $('<div>');
				}
				// Else the selector was given
				else {
					// Set the context
					var context = contexts[key];
					// If no context was given
					if (!context) {
						// Set context to default context
						context = $elements[(key == 'balloon' ? 'target' : 'balloon')];
					}
					// Set the balloon jQuery element (search from the context)
					$elements[key] = $(selector, $(context));
				}
			}
			// Check if the elements are attached into DOM
			var balloonAttached = !!$elements['balloon'].closest('html').length;
			var contentAttached = !!$elements['content'].closest('html').length;
			// If both are not attached
			if (!balloonAttached && !contentAttached) {
				// Attach the element into DOM
				$('body').append($elements['balloon']);
			}
			// Else if the balloon is not attached
			else if (!balloonAttached) {
				$elements['content'].after($elements['balloon']);
			}
			// Else if the content is not attached
			else if (!contentAttached) {
				$elements['balloon'].wrapInner($elements['content']);
			}
			// Check if the content is inside the balloon
			var contentInsideBalloon = !!$elements['content'].closest($elements['balloon']).length;
			// If not inside
			if (!contentInsideBalloon) {
				// Detach the content
				$elements['content'].detach();
				// Put the content inside the balloon
				$elements['balloon'].wrapInner($elements['content']);
			}
		},

		// Fetches the balloon content
		_fetchContent: function () {
			// Print debugging information
			this._log('Fetching the content');
			// Set shortcuts
			var settings = this.settings;
			var sources = settings.sources;
			var $elements = this.$elements;
			var content;
			// Switch for values element, attribute, html, url
			switch (settings.sourceType) {
				// Case element source type
				case 'element':
					// Set shortcuts
					var selector = sources.element.selector;
					var context = sources.element.context;
					// If a selector is given
					if (selector) {
						// If no context is given, use the default context
						context = context ? context : $elements['target'];
						// Set content (search from the context)
						content = $(selector, $(context));
					}
					// If the element should be cloned
					if (sources.element.clone) {
						// Clone the element
						content = content.clone(true);
					}
					// Else the element should be detached
					else {
						// Detach the element
						content = content.detach();
					}
				break;
				// Case attribute source type
				case 'attribute':
					// Set the source element
					var $source = $elements[sources.attribute.element];
					// Fetch the attribute value by element key and attribute name
					content = $source.attr(sources.attribute.name);
					// If set to remove the attribute, remove it
					sources.attribute.remove && $source.removeAttr(sources.attribute.name);
				break;
				// Case HTML source type
				case 'html':
					// Set the html content
					content = sources.html;
				break;
				case 'url':
					// TODO: Implement the url content fetching code
					content = sources.url;
				break;
			}
			// If there is content
			if (content) {
				// Put the content into the content element
				$elements['content'].append(content);
			}
		},

		// Executes the show action (optional string phase)
		_show: function (phase) {
			// Switch for phase
			switch (phase) {
				// Phase is 'validate'
				case 'validate':
					// If the balloon is already visible
					if (this.status.visible) {
						// Cancel the action
						return false;
					}
				break;
				// Phase is 'start'
				case 'start':
					// Set the visible status to visible
					this.status.visible = true;
					// Relocate the balloon
					this.relocate();
				break;
				// Phase is 'middle'
				case 'middle':
				break;
				// Phase is 'end'
				case 'end':
				break;
			}
			return true;
		},

		// Executes the hide action (optional string phase)
		_hide: function (phase) {
			// Switch for phase
			switch (phase) {
				// Phase is 'validate'
				case 'validate':
					// If the balloon is already hidden
					if (!this.status.visible) {
						// Cancel the action
						return false;
					}
				break;
				// Phase is 'start'
				case 'start':
				break;
				// Phase is 'middle'
				case 'middle':
				break;
				// Phase is 'end'
				case 'end':
					// Set the visible status to hidden
					this.status.visible = false;
				break;
			}
			return true;
		}

	};

	// Define the plugin's constructor
	var PluginConstructor = function (targetElement) {
		// Merge this and the plugin object
		$.extend(true, this, Plugin);
		// Set the target element
		this._targetElement = targetElement;
	};

	// Set the plugin's prototype
	PluginConstructor.prototype = $.extend(true, {}, $.wffComponentPrototype, PluginPrototype);

	// Register the plugin
	$.wffRegisterPlugin(PluginConstructor);

// Execute the protective wrapper
})(jQuery, window, document);


text:
For Business Associate
Modern Cubes
Roses - All Colors
Zen Flowers & Plants
By Price Less than $35.00 $35.00 - $45.00 $45.00 - $55.00 $55.00 - $75.00 $75.00 - $100.00 $100.00 - $150.00 More than $150.00
Or Call Toll Free
Teleflora's Mod Blooms Bouquet - by Teleflora's Flower Club
Unique in every way, this striking bouquet of peach roses and white lilies is artfully presented in a mid-mod ceramic planter with sculptural wood base.
Peach roses, white asiatic lilies, green button spray chrysanthemums and white button spray chrysanthemums are arranged with grevillea, variegated pittosporum, lemon leaf and seeded eucalyptus. Delivered in Teleflora's Mid-Century planter.
Item # T22F115A
Enter recipient zip/postal code
lookup zip/postal code
Mon, Jan 30, 2023 Tue, Jan 31, 2023 Wed, Feb 01, 2023 Thu, Feb 02, 2023 Fri, Feb 03, 2023 Sat, Feb 04, 2023 Mon, Feb 06, 2023 Tue, Feb 07, 2023 Wed, Feb 08, 2023 Thu, Feb 09, 2023 Fri, Feb 10, 2023 Sat, Feb 11, 2023 Mon, Feb 13, 2023 Tue, Feb 14, 2023 Wed, Feb 15, 2023 Thu, Feb 16, 2023 Fri, Feb 17, 2023 Sat, Feb 18, 2023 Mon, Feb 20, 2023 Tue, Feb 21, 2023 Wed, Feb 22, 2023 Thu, Feb 23, 2023 Fri, Feb 24, 2023 Sat, Feb 25, 2023 Mon, Feb 27, 2023 Tue, Feb 28, 2023 Wed, Mar 01, 2023 Thu, Mar 02, 2023 Fri, Mar 03, 2023 Sat, Mar 04, 2023 Mon, Mar 06, 2023 Tue, Mar 07, 2023 Wed, Mar 08, 2023 Thu, Mar 09, 2023 Fri, Mar 10, 2023 Sat, Mar 11, 2023 Mon, Mar 13, 2023 Tue, Mar 14, 2023 Wed, Mar 15, 2023 Thu, Mar 16, 2023 Fri, Mar 17, 2023 Sat, Mar 18, 2023 Mon, Mar 20, 2023 Tue, Mar 21, 2023 Wed, Mar 22, 2023 Thu, Mar 23, 2023 Fri, Mar 24, 2023 Sat, Mar 25, 2023 Mon, Mar 27, 2023 Tue, Mar 28, 2023 Wed, Mar 29, 2023 Thu, Mar 30, 2023 Fri, Mar 31, 2023 Sat, Apr 01, 2023 Mon, Apr 03, 2023 Tue, Apr 04, 2023 Wed, Apr 05, 2023 Thu, Apr 06, 2023 Fri, Apr 07, 2023 Sat, Apr 08, 2023 Mon, Apr 10, 2023 Tue, Apr 11, 2023 Wed, Apr 12, 2023 Thu, Apr 13, 2023 Fri, Apr 14, 2023 Sat, Apr 15, 2023 Mon, Apr 17, 2023 Tue, Apr 18, 2023 Wed, Apr 19, 2023 Thu, Apr 20, 2023 Fri, Apr 21, 2023 Sat, Apr 22, 2023 Mon, Apr 24, 2023 Tue, Apr 25, 2023 Wed, Apr 26, 2023 Thu, Apr 27, 2023 Fri, Apr 28, 2023 Sat, Apr 29, 2023 Mon, Jan 30, 2023 Tue, Jan 31, 2023 Wed, Feb 01, 2023 Thu, Feb 02, 2023 Fri, Feb 03, 2023 Sat, Feb 04, 2023 Mon, Feb 06, 2023 Tue, Feb 07, 2023 Wed, Feb 08, 2023 Thu, Feb 09, 2023 Fri, Feb 10, 2023 Sat, Feb 11, 2023 Mon, Feb 13, 2023 Tue, Feb 14, 2023 Wed, Feb 15, 2023 Thu, Feb 16, 2023 Fri, Feb 17, 2023 Sat, Feb 18, 2023 Mon, Feb 20, 2023 Tue, Feb 21, 2023 Wed, Feb 22, 2023 Thu, Feb 23, 2023 Fri, Feb 24, 2023 Sat, Feb 25, 2023 Mon, Feb 27, 2023 Tue, Feb 28, 2023 Wed, Mar 01, 2023 Thu, Mar 02, 2023 Fri, Mar 03, 2023 Sat, Mar 04, 2023 Mon, Mar 06, 2023 Tue, Mar 07, 2023 Wed, Mar 08, 2023 Thu, Mar 09, 2023 Fri, Mar 10, 2023 Sat, Mar 11, 2023 Mon, Mar 13, 2023 Tue, Mar 14, 2023 Wed, Mar 15, 2023 Thu, Mar 16, 2023 Fri, Mar 17, 2023 Sat, Mar 18, 2023 Mon, Mar 20, 2023 Tue, Mar 21, 2023 Wed, Mar 22, 2023 Thu, Mar 23, 2023 Fri, Mar 24, 2023 Sat, Mar 25, 2023 Mon, Mar 27, 2023 Tue, Mar 28, 2023 Wed, Mar 29, 2023 Thu, Mar 30, 2023 Fri, Mar 31, 2023 Sat, Apr 01, 2023 Mon, Apr 03, 2023 Tue, Apr 04, 2023 Wed, Apr 05, 2023 Thu, Apr 06, 2023 Fri, Apr 07, 2023 Sat, Apr 08, 2023 Mon, Apr 10, 2023 Tue, Apr 11, 2023 Wed, Apr 12, 2023 Thu, Apr 13, 2023 Fri, Apr 14, 2023 Sat, Apr 15, 2023 Mon, Apr 17, 2023 Tue, Apr 18, 2023 Wed, Apr 19, 2023 Thu, Apr 20, 2023 Fri, Apr 21, 2023 Sat, Apr 22, 2023 Mon, Apr 24, 2023 Tue, Apr 25, 2023 Wed, Apr 26, 2023 Thu, Apr 27, 2023 Fri, Apr 28, 2023 Sat, Apr 29, 2023 Mon, Jan 30, 2023 Tue, Jan 31, 2023 Wed, Feb 01, 2023 Thu, Feb 02, 2023 Fri, Feb 03, 2023 Sat, Feb 04, 2023 Mon, Feb 06, 2023 Tue, Feb 07, 2023 Wed, Feb 08, 2023 Thu, Feb 09, 2023 Fri, Feb 10, 2023 Sat, Feb 11, 2023 Mon, Feb 13, 2023 Tue, Feb 14, 2023 Wed, Feb 15, 2023 Thu, Feb 16, 2023 Fri, Feb 17, 2023 Sat, Feb 18, 2023 Mon, Feb 20, 2023 Tue, Feb 21, 2023 Wed, Feb 22, 2023 Thu, Feb 23, 2023 Fri, Feb 24, 2023 Sat, Feb 25, 2023 Mon, Feb 27, 2023 Tue, Feb 28, 2023 Wed, Mar 01, 2023 Thu, Mar 02, 2023 Fri, Mar 03, 2023 Sat, Mar 04, 2023 Mon, Mar 06, 2023 Tue, Mar 07, 2023 Wed, Mar 08, 2023 Thu, Mar 09, 2023 Fri, Mar 10, 2023 Sat, Mar 11, 2023 Mon, Mar 13, 2023 Tue, Mar 14, 2023 Wed, Mar 15, 2023 Thu, Mar 16, 2023 Fri, Mar 17, 2023 Sat, Mar 18, 2023 Mon, Mar 20, 2023 Tue, Mar 21, 2023 Wed, Mar 22, 2023 Thu, Mar 23, 2023 Fri, Mar 24, 2023 Sat, Mar 25, 2023 Mon, Mar 27, 2023 Tue, Mar 28, 2023 Wed, Mar 29, 2023 Thu, Mar 30, 2023 Fri, Mar 31, 2023 Sat, Apr 01, 2023 Mon, Apr 03, 2023 Tue, Apr 04, 2023 Wed, Apr 05, 2023 Thu, Apr 06, 2023 Fri, Apr 07, 2023 Sat, Apr 08, 2023 Mon, Apr 10, 2023 Tue, Apr 11, 2023 Wed, Apr 12, 2023 Thu, Apr 13, 2023 Fri, Apr 14, 2023 Sat, Apr 15, 2023 Mon, Apr 17, 2023 Tue, Apr 18, 2023 Wed, Apr 19, 2023 Thu, Apr 20, 2023 Fri, Apr 21, 2023 Sat, Apr 22, 2023 Mon, Apr 24, 2023 Tue, Apr 25, 2023 Wed, Apr 26, 2023 Thu, Apr 27, 2023 Fri, Apr 28, 2023 Sat, Apr 29, 2023
Safe Shopping Policy
Sign up for email specials. Enter your email address:
Los Angeles Flowers
The Federal Recreation Association and Military MWR Group is not responsible for the goods or services of Teleflora, LLC.
Home|Site Map|Safe Shopping|Privacy|Delivery|Substitutions


To celebrate the return of our Mahogany boxes we have decided to offer one line of engraving FREE for all orders from the Wheatley in Wood pages. To get this add Wheatley in Wood in the discount box on the checkout page.
Please remember that engraving takes between 7 and 10 days.


text:
Q: Using OOP in PHP with retrieving data from query I have a page that retrieves user data and displays that data on the page. My code works perfectly fine, but I am having trouble understanding when to use OOP for web development. My current page is very simple, and my understanding is that OOP consumes a lot of processing power for creating objects. Should a simple page like this require the use of OOP?
<?php
    session_start();
    require $_SERVER['DOCUMENT_ROOT'] . "/connection.php";
    if ($_SESSION["id"] != ""){
        $result = $db->query("
            SELECT `Username`, `Image`, `FirstName`, `LastName`, `Type`
            FROM Users WHERE `id` = '{$_SESSION['id']}'
        ");
        if ($result->num_rows == 0){
            $switch = false;
        } else {
            $resultSet = $result->fetch_array();
            $avatar = $resultSet["Image"];
            $account_type = $resultSet["Type"];
            $username = $resultSet["Username"];
            $fName = $resultSet["FirstName"];
            $lName = $resultSet["LastName"];
            $id = $_SESSION["id"];
            $switch = true;
        }
    }
?>

Afterwards, the information is displayed in the HTML. For example, when I want to display the name I just echo it out. Like so echo "<p>$fName</p>"; should this approach be changed in to an objected oriented approach instead? Or is my design suitable as it is?

A: perhaps person preference, but I would not use any resource to duplicate variables.
I would use the response $resultSet. To use the variable I would:
echo $resultSet["LastName"];

If it was imperative to use variables then perhaps use an associative array, and use a loop:
foreach ($resultSet AS $k => $v {
    ${$k} = $v;
}

Depending on the name of the column in the database would then become the variable name.

A: I guess you could say OOP becomes more desirable once your code becomes larger, but starting with OOP is always a good option for scaleability and easy to understand code.
What you have there is basically a file with a function inside it, and if you wanted to retrieve something else which relates to users, you'd probably create another file with another function in it, calling similar things. What you could have is something like this:
class User {
    private $id;
    private $username;
    private $firstName;
    private $lastName;
    private $type;
    private $image;

    function __construct($id) {
        // TODO SQL stuff

        $this->id = $id;
        $this->username = // blahblah
    }
}

And it could have all sorts of functions (known as methods in a class), and it'll all be tucked away in a separate User class. When you or someone else is writing bits of code to the project, they don't need to know the inner code of User, they just need to know that your method returns X when Y is put into it, and their bit of code can just be:
$user = new User($id);
return $user->doSomeMethod();

If you wanted to get the full name of the user later on, you wouldn't need to make a separate file that does the same SQL stuff, you'd just add this inside your User class (and add some comments to it):
/**
*   Returns the proper case of the user's first and last names
*   @return String - full name of user
*/
public function getFullName() {
    return ucwords($this->firstName . " " . $this->lastName);
}

Then you can just call getFullName() on your User object in the rest of your code. You don't want to have bits of code relating to the same subject (users) spread out in different areas, it makes it harder to work with.
As for processing power I'm not too sure, but if it helps to keep your code DRY (don't repeat yourself) and easy to understand, it's a good idea to use OOP.


text:
Council Info
Policies, Procedures and Notices
Community Grants and Underwriting Events
Annual Return: 2019 2020
Budgets and Precepts
Land and building assets
Agendas: 2020 2021
Minutes: 2020 2021
Previous Years Minutes
Joint Meetings
Parish Plan 2015 – 2020
Fairfield Neighbourhood Plan
The Fairfield Neighbourhood Plan is now law. A referendum held on Thursday, September 14, 2017 saw 97.3 per cent of voters (574) say "Yes" to agreeing to the plan with just 16 against. The poll turnout was 31 per cent, just higher than the norm for a local bi-election. The plan was then 'named' by […]
Design Statement
The overwhelming view following the Parish and Neighbourhood Plan questionnaires was that the unique look of Fairfield should be maintained. The Design statement re-affirms the main principles of the Fairfield Masterplan that set out in detail the look and feel of Fairfield. A low resolution copy of the document can be downloaded here in Pdf […]
Green Infrastructure Plan
The overwhelming view following the Parish and Neighbourhood Plan questionnaires was that the green spaces at Fairfield should be maintained. The Green Infrastructure re-affirms this and sets out the arguments for the proposal and details the philosophies used. The document can be downloaded here in Pdf format that can be read on computers or in […]
Orchards Restoration
Apple day 2018
Story of Fairfield
The Big Dig 2002
Black Squirrels
Parish Council Meeting 8th January 2021
Gritting Run Today (December 28) 28th December 2020
New additon to Community Police Team 17th November 2020
Remembrance Sunday 2020 9th November 2020
Covid-19 Snake on the move! 26th October 2020
Ultra Fast Fibre Broadband for Fairfield 22nd September 2020
Chairman's Report 2016-17
Annual Report: 2016-17 16th June 201719th June 2020 Barrie Dack
Welcome to the Annual Parish Meeting of Fairfield Parish Council. I am Chris Bidwell a Fairfield Parish Councillor and Chairperson of the parish council. I shall be speaking about some of the important issues the parish council has dealt with, and what they are hoping to deliver in the coming years. Some of these issues have been the subject of great concern, and councillors have put a great deal of their time into finding effective solutions to them. As with all councils, we meet with agreement and disagreement from residents, on how the council resolves the issues it has had to consider.
As we are having a general election, and Parliament has now been dissolved. I am pleased to announce that Alistair Burt has kindly come tonight to speak on matters which he has taken a very keen interest in and answer questions. Alistair has spent many hours working on behalf of residents bringing his influence to bear at higher level than normal with Anglian Water and The Royal Mail, without his input these important issues would not have been resolve as quickly.
Unfortunately, our Central Bedfordshire Council Ward Councillor Steve Dixon is unable to be at the meeting due to illness so our other Ward Councillor, Brian Saunders will be speaking about their role in CBC, and how they work with the parish council. Steve and Brian have been instrumental in ensuring the new developments along Hitchin Road meet the needs of residents. Also with Councillor Dixon's assistance, CBC officers have been able to monitor the odour problem Fairfield faced last summer.
We also have representatives from Anglian Water. Mr Chris Hayton, Anglian Water Public Affairs Manager and Mr Tim Blackmore, Anglian Water Regional Treatment Manager. They will be providing information on the actions being taken at the Letchworth Sewage works. Officers from CBC Environmental Services are also present if required to answer questions.
In order to allow each speaker to provide you with information, please can you wait until they have finished their presentation before asking questions?
Before I hand over to our guest speakers, I would like to take a few minutes of your time. Following recent comments from residents. I would like to explain that:
All our parish councillors are unpaid and devote their time for the improvement of Fairfield.
Fairfield Parish Councillors are elected to represent all residents of Fairfield regardless of where they live within the parish.
We act independently of all the management companies and any organisation which report on the parish council.
All councillors have to follow regulations and act lawfully.
Fairfield Parish Council has a policy of transparency and accountability.
It has a policy to deal with complaints that complainants can use to prove whether a Councillor or the Council has acted improperly.
I hope that statement has cleared up any doubts held about this council.
Last year the parish council faced some very important issues which required a considerable amount of time and effort from Councillors to find a solution to each of them. At least one of these issues has impacted on family life in one way or another.
One area which affects us all is money. This year saw a rise in the Central Bedfordshire Council tax. Again, I am pleased to say that, as in previous years, our precept charge has not increased.
As a fairly new council we have to build up a reserve to fund future projects. The parish council continues to allocate funds for grants and to community projects and groups. Some of these funds are being held for road safety, and other improvements around Fairfield. The council is also considering several other larger projects and are looking at ways to provide for the teenagers. These new areas will allow the youth to engage in sports and provide them with interests and a place to go and meet in safety. Other proposals include, allotments for residents, a garden of remembrance and CCTV coverage of certain areas of Fairfield. We are not looking to monitor the whole of Fairfield. A survey will be carried out later this year to identify areas where cameras could be installed to provide the necessary information for the police.
The land for allotments we hope to obtain is adjacent to Fairfield, this is an ongoing process and requires land transfer and agreements with CBC and the current land owners. Once we have the land a system of management and control then needs to be setup. The remembrance garden we hope will be part of the existing cemetery. The council is in discussions with CBC on how we can provide this.
These projects have a high initial setup cost and then continuing running costs which FPC will have to fund.
The council is also looking at road safety improvements. These include an additional parking area off of Dickens Boulevard, and in the old road off Hardy Way. This is the disused road located behind the school, which we hope could be used by school staff and by the community hall users to reduce parking in residential roads. To safely use this road and footpaths, each will require, clearing, lighting and new surfaces.
We are also looking to improve a pedestrian crossing point in Dickens Boulevard, in order to provide a better view of the traffic for pedestrians crossing the road.
We have also been successful in asking Central Bedfordshire Council to provide a school road crossing patrol. The parish council are funding the first year and hope to find commercial sponsors thereafter. This control crossing is to improve pedestrian control during school attendance and going home time. Should anyone be interested in doing this, it is now being advertised by Central Bedfordshire Council and applications should be sent direct to them.
Another area we are considering is to try and reduce parking on some road junctions. This may involve road markings. Again, we hope cars will stop parking on these junctions and allow clear views for pedestrians crossing and to drivers. This has support from the police who will take the necessary action against drivers who obstruct junctions.
In addition to all this we are also promoting several other safety schemes. These require volunteers to commit to and help implement and deliver. These are to reduce crime and vandalism which seems to have become a problem in some areas. I like to say here it appears most of these problems are not always from the young people that live on Fairfield. They are youths from the surrounding areas who find it necessary to come here and destroy our environment. Work is in progress to help reduce this sort of behaviour, one way is for volunteers to become involved in the following:-
Street Watch
Speed Watch
All these are part of Bedfordshire Police Initiatives, and training will be provided by the police. We have been asked before to start these schemes up without success. This time we hope we will have residents support and involvement, otherwise it is impossible. The council, will where necessary, provide support to those volunteers involved with these schemes. Councillor Steve Foster is the contact for these if you wish to find out more information.
Bedfordshire Community Policing Team will be in Fairfield on Wednesday the 24th May they will be giving advice on crime prevention, and safeguarding, they will also patrol and targeting parking issues.
Our Neighbourhood Plan, has been completed and sent to Central Bedfordshire Council for wider consultation. It is now before a government planning inspector. The final stage will be a referendum involving all Fairfield electors. The parish council has been very effective in producing the plan much earlier than the expected five years we were told it would take. This is thanks to Phil Mitchinson, who has worked hard to bring representative groups from Fairfield together. Phil stood down from the parish council in January this year, but has agreed to continue working on the plan. I would like to publicly thank Phil for the work he has done, and for continuing to oversee the plan and its progress.
We have a Green Infrastructure Plan as part of the Neighbourhood Plan. This has identified areas of open green space in and around Fairfield and protects sites from future development. A good example of this, is the cricket club ground, which has been incorporated into the plan and therefore is protected from developers trying to build within the centre of Fairfield. Another protected area is the open space between Kingsley Avenue and Eliot Way along the Hitchin Road. Also included are the orchards. More protection to the orchards will be added when agreement has been reached on the transfer of land from Fairfield Hall Management Company to the parish council. The parish council has now taken ownership of a section of the West orchard which runs parallel to Hard Way. This was agreed with PJ Livesey the former developer and land owner.
The hard work of volunteers can be seen to have taken effect within the orchards. Those volunteers having given up time to come out during the winter months to help clear dead wood and create areas for wildlife in all the orchards on Fairfield, the effects can now be seen with more trees showing signs of growth. That hard work was worth their effort. The orchards are looking better and surrounding areas also looking tidier.
Along with the volunteers, the parish council employed two tree specialists with the approval of Central Bedfordshire Conservation Officers and other interested groups. These two specialists guided and trained the volunteers with the much-needed skills to improve the trees and encourage new growth. These skills will be used in the future management of the orchards.
The volunteers have also planted 18 new fruit trees in the West Orchard, and all look as though they have been successful and are showing signs of new growth. To all the volunteers, "Thank you for volunteering and the hard work in all weathers, which you have done for the community of Fairfield". If you have not been involved and would like to, information is on the parish web page, or ask Councillor Daffarn.
The 'Apple Day', has been a great success and again I would like to thank those in involved in the organisation and preparations for a great day which brings the community of Fairfield together. Thanks also to those involved in organising our cider making which is improving each year. I believe there are some cups of cider on the tables at the rear of the hall so please try some before leaving tonight.
The parish council has in recent weeks held discussions with Fairfield Hall Management Company, where they exchanged views on the areas of land under consideration of transfer from the halls management responsibility to the parish council. These also involved talks between the land owners Hotbed Investments during last December.
The three parties involved meet to find satisfactory boundaries and to allow FHMC control over trees which provide screening to hall residents. Transferring the remaining sections of land transfers the financial responsibility from the hall residents to the parish council.
We hope our proposals which were sent recently to the Hall Directors, provide the hall residents with control on areas where they think screening is required and also a satisfactory way to have the remaining areas of land transferred from their responsibility to the parish council.
These discussions are still ongoing and hopefully agreement can be reached locally. The aim of the council is to improve the appearance of the whole of Fairfield, and allow areas of land to be used by all residents that are not currently available to them. No time scale has been agreed for this but I hope we can agree the transfer before the summer holidays start.
Should any resident have concerns or wish to make comment regarding these areas, they can do so via the web page or the Hall directors.
The full minutes of the meeting can be downloaded from this link.
The Rt Hon Alistair Burt Report 2017
Update from Anglian Water
Barrie Dack
Coronavirus Information Websites
Advice from the NHS
If you are living with Cancer
If you have Type 2 Diabetes
CBC Advice on Mental Wellbeing
The Council issues regular email newsletters with the aim of residents informed. If you wish to subscribe please click this link .
PLANNING AN EXTENSION?
If you are planning an extension or a conservatory and need advice on planning procedures, please check this CBC link first. If it does not answer your question then email CBC using this link.
Fairfield Hall Management Company
Fairfield Park Residents Association
Fairfield Community Hall
Fairfield Community Church
Fairfield Park Lower School
Etonbury Academy
Henlow Academy
Pix Brook Academy
Samuel Whitbread Academy
Fairfield (Letchworth) Cricket Club
Fairfield Bowls Club
Bannatyne Gym and Spa
Luton Airport Guide
Copyright © 2021 by Fairfield Parish Council.	Theme: DW Focus by DesignWall.


text:
package org.apache.tajo.engine.planner;

import com.google.gson.annotations.Expose;
import org.apache.hadoop.fs.Path;
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.catalog.TableDesc;
import org.apache.tajo.engine.planner.logical.LogicalNode;
import org.apache.tajo.engine.planner.logical.LogicalNodeVisitor;
import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.engine.planner.logical.StoreTableNode;
import org.apache.tajo.util.TUtil;

public class InsertNode extends StoreTableNode implements Cloneable {
  @Expose private boolean overwrite;
  @Expose private Schema tableSchema;

  /** a target schema of a target table */
  @Expose private Schema targetSchema;
  /** a output schema of select clause */
  @Expose private Schema projectedSchema;
  @Expose private Path path;

  public InsertNode(int pid) {
    super(pid, NodeType.INSERT);
  }

  public void setTargetTable(TableDesc desc) {
    setTableName(desc.getName());
    if (desc.hasPartition()) {
      tableSchema = desc.getLogicalSchema();
    } else {
      tableSchema = desc.getSchema();
    }
    setPath(desc.getPath());
    setOptions(desc.getMeta().getOptions());
    setStorageType(desc.getMeta().getStoreType());

    if (desc.hasPartition()) {
      this.setPartitionMethod(desc.getPartitionMethod());
    }
  }

  public void setTargetLocation(Path path) {
    this.path = path;
  }

  public void setSubQuery(LogicalNode subQuery) {
    this.setChild(subQuery);
    this.setInSchema(subQuery.getOutSchema());
    this.setOutSchema(subQuery.getOutSchema());
  }

  public boolean isOverwrite() {
    return overwrite;
  }

  public void setOverwrite(boolean overwrite) {
    this.overwrite = overwrite;
  }

  public Schema getTableSchema() {
    return tableSchema;
  }

  public void setTableSchema(Schema tableSchema) {
    this.tableSchema = tableSchema;
  }

  public boolean hasTargetSchema() {
    return this.targetSchema != null;
  }

  public Schema getTargetSchema() {
    return this.targetSchema;
  }

  public void setTargetSchema(Schema schema) {
    this.targetSchema = schema;
  }

  public Schema getProjectedSchema() {
    return this.projectedSchema;
  }

  public void setProjectedSchema(Schema projected) {
    this.projectedSchema = projected;
  }

  public boolean hasPath() {
    return this.path != null;
  }

  public void setPath(Path path) {
    this.path = path;
  }

  public Path getPath() {
    return this.path;
  }

  public boolean hasStorageType() {
    return this.storageType != null;
  }

  @Override
  public boolean equals(Object obj) {
    if (obj instanceof InsertNode) {
      InsertNode other = (InsertNode) obj;
      return super.equals(other)
          && this.overwrite == other.overwrite
          && TUtil.checkEquals(this.tableSchema, other.tableSchema)
          && TUtil.checkEquals(this.targetSchema, other.targetSchema)
          && TUtil.checkEquals(path, other.path);
    } else {
      return false;
    }
  }

  @Override
  public Object clone() throws CloneNotSupportedException {
    InsertNode insertNode = (InsertNode) super.clone();
    insertNode.overwrite = overwrite;
    insertNode.tableSchema = new Schema(tableSchema);
    insertNode.targetSchema = targetSchema != null ? new Schema(targetSchema) : null;
    insertNode.path = path != null ? new Path(path.toString()) : null;
    return insertNode;
  }

  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("INSERT ");
    if (overwrite) {
      sb.append("OVERWRITE ");
    }
    sb.append("INTO ");

    if (hasTargetTable()) {
      sb.append("  ").append(tableName);
    }

    if (hasTargetSchema()) {
      sb.append("\n  ").append(targetSchema);
    }

    if (hasPath()) {
      sb.append("\n  LOCATION ");
      sb.append(path);
    }

    sb.append("\n").append(getChild());

    return sb.toString();
  }

  @Override
  public void preOrder(LogicalNodeVisitor visitor) {
    getChild().preOrder(visitor);
    visitor.visit(this);
  }

  @Override
  public void postOrder(LogicalNodeVisitor visitor) {
    visitor.visit(this);
    getChild().postOrder(visitor);
  }

  @Override
  public PlanString getPlanString() {
    PlanString planString = new PlanString(this);
    planString.appendTitle(" INTO ");
    if (hasTargetTable()) {
      planString.appendTitle(getTableName());
      if (hasTargetSchema()) {
        planString.addExplan(getTargetSchema().toString());
      }
    } else {
      planString.addExplan("LOCATION " + path);
    }
    return planString;
  }
}


text:
Home » interview » Martin Newell interview, part 3
Posted in interview By Bill Kopp On May 12, 2011
Martin Newell interview, part 3
Continued from part two…
Bill Kopp: The Cleaners From Venus enjoyed – or endured — a brush with the big time in the UK around the release of 'Ilya Kuryakin Looked at Me,' didn't they?
Martin Newell: Yes. But I didn't always like the show biz stuff. And I didn't like some of the people who were around it. And I didn't like the way people suddenly appeared; people you've never met before who seemed to know all about you. They'd be very schmoozy, and I didn't trust them.
In fact there's a huge chunk of show biz in me. But in the eighties I got a sort of reputation as being like a Syd Barrett. I had broke up the band, and people were saying, "He's gone 'Brian Wilson.' He doesn't want to go out on tour." The thing is, I'll do gigging. But touring isn't, I don't think, a very healthy environment. And the other thing is drugs. You see, I did loads of drugs between the ages of seventeen and twenty. And then I stopped! And apart from a couple of temporary aberrations, I never went back to it. And the result of that is that I'm enthusiastic, healthy, and very interested in what I'm doing most of the time.
I'm fond of a drink. And I'm also fond of wearing tight black trousers, so that rules out drinking too much beer these days. But I want to hold onto my marbles; I think I still have most of them. I've gotten tweedier; I've gotten interested in books, history, things like that. And I think that's as it should be. It would be really sad if I were prancing around in leather trousers with my foot up on the monitor.
BK: I know what you mean. I've recently started listening to jazz.
Martin: I love jazz. Stan Getz, bits and pieces of Miles Davis, things like that. I don't like jazz when it sounds like people torturing small animals and banging sticks together. Oddly enough, the kind of jazz I like is almost lift [elevator] music. I've got a huge soft spot for "loungecore." And I could put up with some Carpenters in my collection now; Carpenters were fucking great.
At the height of Deep Purple's fame, Ritchie Blackmore was asked, "What do you listen to after a Deep Purple gig, Ritchie?" And he said, "The Carpenters."
BK: You know what he's up to these days, don't you?
Martin: Well, according to someone he was in a band with before Deep Purple — a guy called Chas Hodges – Ritchie spends a lot of his time in Central Park walking around in a tall hat being medieval or something…
BK: He plays renaissance fair-type music with his Missus. But with the odd bit of Stratocaster. Of course that comes as a bit of a shock if you've just been listening to "Highway Star."
Martin: When I was working on Chas's story [for BBC's Inside Out series — ed], and trying to research very early English bands, I interviewed people who I regarded as salient in the birth of British rock'n'roll. And of all of them, Blackmore was the one who was most difficult to interview. I had to go through a number of record companies; it was almost like, "Oh, you want an interview with the king, do you?" Finally someone in America put me in touch with him in New York, and he eventually answered a few of my questions by email! I mean, he could've just made a phone call and told me what I wanted. I didn't want to know about Deep Purple or any of that rock-god shit; I wanted to know about the birth of English rock'n'roll in a period which I call "somewhere between half-past-Elvis and quarter-to-the-Beatles." 1961-62; he was there.
BK: He was a session guy; he was on all kinds of stuff.
Martin: He was a very good one.
BK: There's a proud tradition of British session guys. John Paul Jones…
Martin: He played on Lulu records, Donovan records…and Jimmy Page as well. I hold Jimmy Page in particularly high regard. I've never met him or anything. With that generation of rock musicians, unless you got really, really famous, you didn't meet them. The people who are the pioneers of the sixties, I mostly haven't met them. But during the Cleaners From Venus I had Dick Taylor from The Pretty Things ask me to write some songs for them, But then Phil May came back from wherever he was, and he said, "No, no, he's not writing any songs for this band."
The songwriters that I adore — everyone from Irving Berlin to Carole King – if they write a good song, they're up there with the gods.
Bill, you've got quite an impressive CV; I've looked you up. You've gotten some very difficult interviews.
BK: Besides the Chas Hodges feature, you've done some music journalism work yourself.
Martin: I don't often interview people myself, but a very very good music mag here asked me if I would interview Rod Stewart. I said, "I can't." They said, "But you write for The Independent." I said, "And you're Record Collector. I can't tell him I'm doing an interview for them when you've asked me to do it. It would be very difficult." But they gave me a number and said, "Well, just try."
So I rang up this number, and the guy who answered said "He's only in the country a short time, and he's not doing any interviews." So I said, "But I have a really new angle." He said, "What's that?" I said, "Well, you know how everybody talks to him about his cars and his wives and his money and football and all the rest of it? Well, I would like to just interview him about his music." And the guy said, "You're right; that is a good angle."
A week later the phone rings. And I've just got in from the early evening drinking. The guy on the phone says, "It's Rod." Rod who? "Rod Stewart." And I'm thinking, "Fucking hell!" I asked him everything I ever wanted to ask him, and typed up the whole interview in a day and a half. It was three thousand words; I cut it down to two thousand. And after that they thought I walked on fucking water.
I interviewed Mick Fleetwood too, but he wasn't nearly as interesting. Because he couldn't remember as much stuff. Rod Stewart has the memory of an elephant. And he's a nice man as well.
BK: So are the Cleaners back to stay, was this a one-off (two-off, really) or haven't you decided yet?
Martin: I'm recording at the moment. I'm making the follow-up to English Electric. It sounds like English Electric, only a bit different because I'm writing different songs. But it's like boys' day out in the shed: you don't know what's going to happen. It's like you don't know how your kids are going to turn out. You can make all your plans, but they turn out the way that they turn out. And my songs are like that.
BK: So, any idea when the next Cleaners album will be out?
Martin: Well, Dave who works with me, teaches Tai Chi. I call him Tai Chi Dave. He helps me record, and I like one of his songs so much it's actually going on an album. I play in a three-piece band with him [Hurricane — ed.] that mostly does very old Bob Dylan stuff. And I used to hate Dylan. But I've really got to like it very much now. So I play bass for them and just do some backing vocals. And we play country pubs where nobody throws anything.
Anyway, we've already got four tracks. Once we get about sixteen or twenty, we'll just pick the best of those, print it off and say, "That's an album." We're not sure about a title for it yet. My significant other came up with a title last night. There's an area in England called the Lake District; when she was a kid – about six or so — she called it the "Late District." So I think that would be a really good title for an album. But it doesn't matter what it's called; I just want to carry on doing more of the same. So working whenever Dave can record me, we'll finish another album. We'll finish about June – or maybe earlier – and then we'll put it online, see if Ray [Gianchetti of Kool Kat Muzik] is interested in it, and just see what happens.
BK: Any plans to tour?
Martin: I haven't ruled out going to America, but I'd probably have to sail there. I don't want to go to an airport, standing there at four in the morning with your shoes in one hand and your belt in the other while someone x-rays your aftershave. It's so stupid; if they're gonna kill you, they're gonna kill you. Why not just get on the plane?
[Coming tomorrow, a bonus: Martin Newell discusses Captain Sensible's The Universe of Geoffrey Brown album. — ed.]
English Electric and The Stopping Train are available from Kool Kat Muzik. Keep up with Newell at www.martinnewell.co.uk
Follow "the_musoscribe" on Twitter and get notified
when new features, reviews and essays are published.
Tags:martin newell