text:
:label:`sec_multi_gpu`

So far we discussed how to train models efficiently on CPUs and GPUs. We even showed how deep learning frameworks allow one to parallelize computation and communication automatically between them in :numref:`sec_auto_para`. We also showed in :numref:`sec_use_gpu` how to list all the available GPUs on a computer using the `nvidia-smi` command.
What we did *not* discuss is how to actually parallelize deep learning training.
Instead, we implied in passing that one would somehow split the data across multiple devices and make it work. The present section fills in the details and shows how to train a network in parallel when starting from scratch. Details on how to take advantage of functionality in high-level APIs is relegated to :numref:`sec_multi_gpu_concise`.
We assume that you are familiar with minibatch stochastic gradient descent algorithms such as the ones described in :numref:`sec_minibatch_sgd`.

## Splitting the Problem

Let us start with a simple computer vision problem and a slightly archaic network, e.g., with multiple layers of convolutions, pooling, and possibly a few fully-connected layers in the end.
That is, let us start with a network that looks quite similar to LeNet :cite:`LeCun.Bottou.Bengio.ea.1998` or AlexNet :cite:`Krizhevsky.Sutskever.Hinton.2012`.
Given multiple GPUs (2 if it is a desktop server, 4 on an AWS g4dn.12xlarge instance, 8 on a p3.16xlarge, or 16 on a p2.16xlarge), we want to partition training in a manner as to achieve good speedup while simultaneously benefitting from simple and reproducible design choices. Multiple GPUs, after all, increase both *memory* and *computation* ability. In a nutshell, we have the following choices, given a minibatch of training data that we want to classify.

First, we could partition the network across multiple GPUs. That is, each GPU takes as input the data flowing into a particular layer, processes data across a number of subsequent layers and then sends the data to the next GPU.
This allows us to process data with larger networks when compared with what a single GPU could handle.
Besides,
memory footprint per GPU can be well controlled (it is a fraction of the total network footprint).

However, the interface between layers (and thus GPUs) requires tight synchronization. This can be tricky, in particular if the computational workloads are not properly matched between layers. The problem is exacerbated for large numbers of GPUs.
The interface between layers also
requires large amounts of data transfer,
such as activations and gradients.
This may overwhelm the bandwidth of the GPU buses.
Moreover, compute-intensive, yet sequential operations are nontrivial to partition. See e.g., :cite:`Mirhoseini.Pham.Le.ea.2017` for a best effort in this regard. It remains a difficult problem and it is unclear whether it is possible to achieve good (linear) scaling on nontrivial problems. We do not recommend it unless there is excellent framework or operating system support for chaining together multiple GPUs.

Second, we could split the work layer-wise. For instance, rather than computing 64 channels on a single GPU we could split up the problem across 4 GPUs, each of which generates data for 16 channels.
Likewise, for a fully-connected layer we could split the number of output units.
:numref:`fig_alexnet_original` (taken from :cite:`Krizhevsky.Sutskever.Hinton.2012`)
illustrates this design, where this strategy was used to deal with GPUs that had a very small memory footprint (2 GB at the time).
This allows for good scaling in terms of computation, provided that the number of channels (or units) is not too small.
Besides,
multiple GPUs can process increasingly larger networks since the available memory scales linearly.

![Model parallelism in the original AlexNet design due to limited GPU memory.](../img/alexnet-original.svg)
:label:`fig_alexnet_original`

However,
we need a *very large* number of synchronization or barrier operations since each layer depends on the results from all the other layers.
Moreover, the amount of data that needs to be transferred is potentially even larger than when distributing layers across GPUs. Thus, we do not recommend this approach due to its bandwidth cost and complexity.

Last, we could partition data across multiple GPUs. This way all GPUs perform the same type of work, albeit on different observations. Gradients are aggregated across GPUs after each minibatch of training data.
This is the simplest approach and it can be applied in any situation.
We only need to synchronize after each minibatch. That said, it is highly desirable to start exchanging gradients parameters already while others are still being computed.
Moreover, larger numbers of GPUs lead to larger minibatch sizes, thus increasing training efficiency.
However, adding more GPUs does not allow us to train larger models.

![Parallelization on multiple GPUs. From left to right: original problem, network partitioning, layer-wise partitioning, data parallelism.](../img/splitting.svg)
:label:`fig_splitting`

A comparison of different ways of parallelization on multiple GPUs is depicted in :numref:`fig_splitting`.
By and large, data parallelism is the most convenient way to proceed, provided that we have access to GPUs with sufficiently large memory. See also :cite:`Li.Andersen.Park.ea.2014` for a detailed description of partitioning for distributed training. GPU memory used to be a problem in the early days of deep learning. By now this issue has been resolved for all but the most unusual cases. We focus on data parallelism in what follows.

## Data Parallelism

Assume that there are $k$ GPUs on a machine. Given the model to be trained, each GPU will maintain a complete set of model parameters independently though parameter values across the GPUs are identical and synchronized.
As an example,
:numref:`fig_data_parallel` illustrates
training with
data parallelism when $k=2$.

![Calculation of minibatch stochastic gradient descent using data parallelism on two GPUs.](../img/data-parallel.svg)
:label:`fig_data_parallel`

In general, the training proceeds as follows:

* In any iteration of training, given a random minibatch, we split the examples in the batch into $k$ portions and distribute them evenly across the GPUs.
* Each GPU calculates loss and gradient of the model parameters based on the minibatch subset it was assigned.
* The local gradients of each of the $k$ GPUs are aggregated to obtain the current minibatch stochastic gradient.
* The aggregate gradient is re-distributed to each GPU.
* Each GPU uses this minibatch stochastic gradient to update the complete set of model parameters that it maintains.

Note that in practice we *increase* the minibatch size $k$-fold when training on $k$ GPUs such that each GPU has the same amount of work to do as if we were training on a single GPU only. On a 16-GPU server this can increase the minibatch size considerably and we may have to increase the learning rate accordingly.
Also note that batch normalization in :numref:`sec_batch_norm` needs to be adjusted, e.g., by keeping a separate batch normalization coefficient per GPU.
In what follows we will use a toy network to illustrate multi-GPU training.

```{.python .input}
%matplotlib inline
from d2l import mxnet as d2l
from mxnet import autograd, gluon, np, npx
npx.set_np()
```

```{.python .input}
#@tab pytorch
%matplotlib inline
from d2l import torch as d2l
import torch
from torch import nn
from torch.nn import functional as F
```

## A Toy Network

We use LeNet as introduced in :numref:`sec_lenet` (with slight modifications). We define it from scratch to illustrate parameter exchange and synchronization in detail.

```{.python .input}
# Initialize model parameters
scale = 0.01
W1 = np.random.normal(scale=scale, size=(20, 1, 3, 3))
b1 = np.zeros(20)
W2 = np.random.normal(scale=scale, size=(50, 20, 5, 5))
b2 = np.zeros(50)
W3 = np.random.normal(scale=scale, size=(800, 128))
b3 = np.zeros(128)
W4 = np.random.normal(scale=scale, size=(128, 10))
b4 = np.zeros(10)
params = [W1, b1, W2, b2, W3, b3, W4, b4]

# Define the model
def lenet(X, params):
    h1_conv = npx.convolution(data=X, weight=params[0], bias=params[1],
                              kernel=(3, 3), num_filter=20)
    h1_activation = npx.relu(h1_conv)
    h1 = npx.pooling(data=h1_activation, pool_type='avg', kernel=(2, 2),
                     stride=(2, 2))
    h2_conv = npx.convolution(data=h1, weight=params[2], bias=params[3],
                              kernel=(5, 5), num_filter=50)
    h2_activation = npx.relu(h2_conv)
    h2 = npx.pooling(data=h2_activation, pool_type='avg', kernel=(2, 2),
                     stride=(2, 2))
    h2 = h2.reshape(h2.shape[0], -1)
    h3_linear = np.dot(h2, params[4]) + params[5]
    h3 = npx.relu(h3_linear)
    y_hat = np.dot(h3, params[6]) + params[7]
    return y_hat

# Cross-entropy loss function
loss = gluon.loss.SoftmaxCrossEntropyLoss()
```

```{.python .input}
#@tab pytorch
# Initialize model parameters
scale = 0.01
W1 = torch.randn(size=(20, 1, 3, 3)) * scale
b1 = torch.zeros(20)
W2 = torch.randn(size=(50, 20, 5, 5)) * scale
b2 = torch.zeros(50)
W3 = torch.randn(size=(800, 128)) * scale
b3 = torch.zeros(128)
W4 = torch.randn(size=(128, 10)) * scale
b4 = torch.zeros(10)
params = [W1, b1, W2, b2, W3, b3, W4, b4]

# Define the model
def lenet(X, params):
    h1_conv = F.conv2d(input=X, weight=params[0], bias=params[1])
    h1_activation = F.relu(h1_conv)
    h1 = F.avg_pool2d(input=h1_activation, kernel_size=(2, 2), stride=(2, 2))
    h2_conv = F.conv2d(input=h1, weight=params[2], bias=params[3])
    h2_activation = F.relu(h2_conv)
    h2 = F.avg_pool2d(input=h2_activation, kernel_size=(2, 2), stride=(2, 2))
    h2 = h2.reshape(h2.shape[0], -1)
    h3_linear = torch.mm(h2, params[4]) + params[5]
    h3 = F.relu(h3_linear)
    y_hat = torch.mm(h3, params[6]) + params[7]
    return y_hat

# Cross-entropy loss function
loss = nn.CrossEntropyLoss(reduction='none')
```

## Data Synchronization

For efficient multi-GPU training we need two basic operations.
First we need to have the ability to distribute a list of parameters to multiple devices and to attach gradients (`get_params`). Without parameters it is impossible to evaluate the network on a GPU.
Second, we need the ability to sum parameters across multiple devices, i.e., we need an `allreduce` function.

```{.python .input}
def get_params(params, device):
    new_params = [p.copyto(device) for p in params]
    for p in new_params:
        p.attach_grad()
    return new_params
```

```{.python .input}
#@tab pytorch
def get_params(params, device):
    new_params = [p.clone().to(device) for p in params]
    for p in new_params:
        p.requires_grad_()
    return new_params
```

Let us try it out by copying the model parameters to one GPU.

```{.python .input}
#@tab all
new_params = get_params(params, d2l.try_gpu(0))
print('b1 weight:', new_params[1])
print('b1 grad:', new_params[1].grad)
```

Since we did not perform any computation yet, the gradient with regard to the bias parameter is still zero.
Now let us assume that we have a vector distributed across multiple GPUs. The following `allreduce` function adds up all vectors and broadcasts the result back to all GPUs. Note that for this to work we need to copy the data to the device accumulating the results.

```{.python .input}
def allreduce(data):
    for i in range(1, len(data)):
        data[0][:] += data[i].copyto(data[0].ctx)
    for i in range(1, len(data)):
        data[0].copyto(data[i])
```

```{.python .input}
#@tab pytorch
def allreduce(data):
    for i in range(1, len(data)):
        data[0][:] += data[i].to(data[0].device)
    for i in range(1, len(data)):
        data[i][:] = data[0].to(data[i].device)
```

Let us test this by creating vectors with different values on different devices and aggregate them.

```{.python .input}
data = [np.ones((1, 2), ctx=d2l.try_gpu(i)) * (i + 1) for i in range(2)]
print('before allreduce:\n', data[0], '\n', data[1])
allreduce(data)
print('after allreduce:\n', data[0], '\n', data[1])
```

```{.python .input}
#@tab pytorch
data = [torch.ones((1, 2), device=d2l.try_gpu(i)) * (i + 1) for i in range(2)]
print('before allreduce:\n', data[0], '\n', data[1])
allreduce(data)
print('after allreduce:\n', data[0], '\n', data[1])
```

## Distributing Data

We need a simple utility function to distribute a minibatch evenly across multiple GPUs. For instance, on two GPUs we would like to have half of the data to be copied to either of the GPUs.
Since it is more convenient and more concise, we use the built-in function from the deep learning framework to try it out on a $4 \times 5$ matrix.

```{.python .input}
data = np.arange(20).reshape(4, 5)
devices = [npx.gpu(0), npx.gpu(1)]
split = gluon.utils.split_and_load(data, devices)
print('input :', data)
print('load into', devices)
print('output:', split)
```

```{.python .input}
#@tab pytorch
data = torch.arange(20).reshape(4, 5)
devices = [torch.device('cuda:0'), torch.device('cuda:1')]
split = nn.parallel.scatter(data, devices)
print('input :', data)
print('load into', devices)
print('output:', split)
```

For later reuse we define a `split_batch` function that splits both data and labels.

```{.python .input}
#@save
def split_batch(X, y, devices):
    """Split `X` and `y` into multiple devices."""
    assert X.shape[0] == y.shape[0]
    return (gluon.utils.split_and_load(X, devices),
            gluon.utils.split_and_load(y, devices))
```

```{.python .input}
#@tab pytorch
#@save
def split_batch(X, y, devices):
    """Split `X` and `y` into multiple devices."""
    assert X.shape[0] == y.shape[0]
    return (nn.parallel.scatter(X, devices),
            nn.parallel.scatter(y, devices))
```

## Training

Now we can implement multi-GPU training on a single minibatch. Its implementation is primarily based on the data parallelism approach described in this section. We will use the auxiliary functions we just discussed, `allreduce` and `split_and_load`, to synchronize the data among multiple GPUs. Note that we do not need to write any specific code to achieve parallelism. Since the computational graph does not have any dependencies across devices within a minibatch, it is executed in parallel *automatically*.

```{.python .input}
def train_batch(X, y, device_params, devices, lr):
    X_shards, y_shards = split_batch(X, y, devices)
    with autograd.record():  # Loss is calculated separately on each GPU
        ls = [loss(lenet(X_shard, device_W), y_shard)
              for X_shard, y_shard, device_W in zip(
                  X_shards, y_shards, device_params)]
    for l in ls:  # Backpropagation is performed separately on each GPU
        l.backward()
    # Sum all gradients from each GPU and broadcast them to all GPUs
    for i in range(len(device_params[0])):
        allreduce([device_params[c][i].grad for c in range(len(devices))])
    # The model parameters are updated separately on each GPU
    for param in device_params:
        d2l.sgd(param, lr, X.shape[0])  # Here, we use a full-size batch
```

```{.python .input}
#@tab pytorch
def train_batch(X, y, device_params, devices, lr):
    X_shards, y_shards = split_batch(X, y, devices)
    # Loss is calculated separately on each GPU
    ls = [loss(lenet(X_shard, device_W), y_shard).sum()
          for X_shard, y_shard, device_W in zip(
              X_shards, y_shards, device_params)]
    for l in ls:  # Backpropagation is performed separately on each GPU
        l.backward()
    # Sum all gradients from each GPU and broadcast them to all GPUs
    with torch.no_grad():
        for i in range(len(device_params[0])):
            allreduce([device_params[c][i].grad for c in range(len(devices))])
    # The model parameters are updated separately on each GPU
    for param in device_params:
        d2l.sgd(param, lr, X.shape[0]) # Here, we use a full-size batch
```

Now, we can define the training function. It is slightly different from the ones used in the previous chapters: we need to allocate the GPUs and copy all the model parameters to all the devices.
Obviously each batch is processed using the `train_batch` function to deal with multiple GPUs. For convenience (and conciseness of code) we compute the accuracy on a single GPU, though this is *inefficient* since the other GPUs are idle.

```{.python .input}
def train(num_gpus, batch_size, lr):
    train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
    devices = [d2l.try_gpu(i) for i in range(num_gpus)]
    # Copy model parameters to `num_gpus` GPUs
    device_params = [get_params(params, d) for d in devices]
    num_epochs = 10
    animator = d2l.Animator('epoch', 'test acc', xlim=[1, num_epochs])
    timer = d2l.Timer()
    for epoch in range(num_epochs):
        timer.start()
        for X, y in train_iter:
            # Perform multi-GPU training for a single minibatch
            train_batch(X, y, device_params, devices, lr)
            npx.waitall()
        timer.stop()
        # Evaluate the model on GPU 0
        animator.add(epoch + 1, (d2l.evaluate_accuracy_gpu(
            lambda x: lenet(x, device_params[0]), test_iter, devices[0]),))
    print(f'test acc: {animator.Y[0][-1]:.2f}, {timer.avg():.1f} sec/epoch '
          f'on {str(devices)}')
```

```{.python .input}
#@tab pytorch
def train(num_gpus, batch_size, lr):
    train_iter, test_iter = d2l.load_data_fashion_mnist(batch_size)
    devices = [d2l.try_gpu(i) for i in range(num_gpus)]
    # Copy model parameters to `num_gpus` GPUs
    device_params = [get_params(params, d) for d in devices]
    num_epochs = 10
    animator = d2l.Animator('epoch', 'test acc', xlim=[1, num_epochs])
    timer = d2l.Timer()
    for epoch in range(num_epochs):
        timer.start()
        for X, y in train_iter:
            # Perform multi-GPU training for a single minibatch
            train_batch(X, y, device_params, devices, lr)
            torch.cuda.synchronize()
        timer.stop()
        # Evaluate the model on GPU 0
        animator.add(epoch + 1, (d2l.evaluate_accuracy_gpu(
            lambda x: lenet(x, device_params[0]), test_iter, devices[0]),))
    print(f'test acc: {animator.Y[0][-1]:.2f}, {timer.avg():.1f} sec/epoch '
          f'on {str(devices)}')
```

Let us see how well this works on a single GPU.
We first use a batch size of 256 and a learning rate of 0.2.

```{.python .input}
#@tab all
train(num_gpus=1, batch_size=256, lr=0.2)
```

By keeping the batch size and learning rate unchanged and increasing the number of GPUs to 2, we can see that the test accuracy roughly stays the same compared with
the previous experiment.
In terms of the optimization algorithms, they are identical. Unfortunately there is no meaningful speedup to be gained here: the model is simply too small; moreover we only have a small dataset, where our slightly unsophisticated approach to implementing multi-GPU training suffered from significant Python overhead. We will encounter more complex models and more sophisticated ways of parallelization going forward.
Let us see what happens nonetheless for Fashion-MNIST.

```{.python .input}
#@tab all
train(num_gpus=2, batch_size=256, lr=0.2)
```

## Summary

* There are multiple ways to split deep network training over multiple GPUs. We could split them between layers, across layers, or across data. The former two require tightly choreographed data transfers. Data parallelism is the simplest strategy.
* Data parallel training is straightforward. However, it increases the effective minibatch size to be efficient.
* In data parallelism, data are split across multiple GPUs, where each GPU executes its own forward and backward operation and subsequently gradients are aggregated and results are broadcast back to the GPUs.
* We may use slightly increased learning rates for larger minibatches.

## Exercises

1. When training on $k$ GPUs, change the minibatch size from $b$ to $k \cdot b$, i.e., scale it up by the number of GPUs.
1. Compare accuracy for different learning rates. How does it scale with the number of GPUs?
1. Implement a more efficient `allreduce` function that aggregates different parameters on different GPUs? Why is it more efficient?
1. Implement multi-GPU test accuracy computation.

:begin_tab:`mxnet`
[Discussions](https://discuss.d2l.ai/t/364)
:end_tab:

:begin_tab:`pytorch`
[Discussions](https://discuss.d2l.ai/t/1669)
:end_tab:


text:
People Magazine Has Named the 'Best Hot Dog in North Dakota'
UIG via Getty Images
Not only does People Magazine annually pick the 'Sexiest Man Alive,' but apparently, they also pick the 'Best Hot Dog in North Dakota.'
You may have to make a bit of a drive from Bismarck to find the 'Best Hot Dog in North Dakota,' but People Magazine says that Dogmahaul DogHaus in Grand Forks takes the title for having the best hot dog in the state.
They make their hot dogs Chicago-style as quarter-pound beef franks and they seem to have quite the variety. People Magazine had this to say about the establishment:
Hot dogs meet vinyl and comics at this eclectic mash-up where you can browse vintage records before or after you bite into a Green Party Dog with guacamole, green chili and salsa verde.
Based on the pics of several different hot dogs on their Facebook page, it seems this is just a fraction of what they have to offer. If you're ever up that way, they're on 305 N Washington St. They seem to hold their own on Yelp! as well.
Filed Under: Hot dog, North Dakota
Categories: Local News, Newsletter

redpajama_set_name: RedPajamaCommonCrawl


text:
Q: Obtener los datos de un array que es un subObjecto dentro de un objecto de una colección en mongoDB Dado este array que es una colección en Mongo, como puedo hacer una consulta para obtener únicamente los datos del atributo 'respuestas'?.
Estos son los datos de la colección
[
{
    "_id" : ObjectId("5c65b5b6b02ea75c7c255d01"),
    "pregunta" : "¿Hola esto es una pregunta de prueba?",
    "categoriaId" : "",
    "informacionAdicional" : "esto es una prueba",
    "userId" : "erika_elena9@hotmail.com",
    "fecha" : ISODate("2019-02-14T18:38:46.565Z"),
    "cantidadVisitas" : 0,
    "respuestas" : [],
    "fechaCreacion" : ISODate("2019-02-14T18:38:46.565Z"),
    "usuarioCreacion" : "admin",
    "fechaModificacion" : Date(-62135596800000),
    "usuarioModificacion" : ""
},
{
    "_id" : ObjectId("5c6af0edb02ea75fb848dc61"),
    "pregunta" : "¿Hola esto es una pregunta de prueba?",
    "categoriaId" : "",
    "informacionAdicional" : "bla bla bla",
    "usuarioId" : "lesolano@bancolombia.com.co",
    "genero" : "hombre",
    "edad" : 28,
    "fecha" : ISODate("2019-02-18T17:52:45.362Z"),
    "visitas" : 0,
    "respuestas" : [
        {
            "_id" : ObjectId("5c6afdc5b02ea75fb848dc63"),
            "respuesta" : "Esta es una respuesta de prueba",
            "usuarioId" : "5c474fb4b02ea70694ad189e",
            "fecha" : ISODate("2019-02-18T18:47:33.907Z"),
            "likes" : 1,
            "dislikes" : 0,
            "fechaCreacion" : ISODate("2019-02-18T18:47:33.907Z"),
            "usuarioCreacion" : "5c474fb4b02ea70694ad189e",
            "fechaModificacion" : Date(-62135596800000),
            "usuarioModificacion" : ""
        },
        {
            "_id" : ObjectId("5c6aff26b02ea75fb848dc65"),
            "respuesta" : "ddd",
            "usuarioId" : "5c474fb4b02ea70694ad189e",
            "fecha" : ISODate("2019-02-18T18:53:26.808Z"),
            "likes" : 2,
            "dislikes" : 0,
            "fechaCreacion" : ISODate("2019-02-18T18:53:26.808Z"),
            "usuarioCreacion" : "5c474fb4b02ea70694ad189e",
            "fechaModificacion" : Date(-62135596800000),
            "usuarioModificacion" : ""
        }
    ],
    "fechaCreacion" : ISODate("2019-02-18T17:52:45.362Z"),
    "usuarioCreacion" : "admin",
    "fechaModificacion" : Date(-62135596800000),
    "usuarioModificacion" : ""
}

]
Y esto es lo que quiero obtener
[
        {
            "_id" : ObjectId("5c6afdc5b02ea75fb848dc63"),
            "respuesta" : "Esta es una respuesta de prueba",
            "usuarioId" : "5c474fb4b02ea70694ad189e",
            "fecha" : ISODate("2019-02-18T18:47:33.907Z"),
            "likes" : 1,
            "dislikes" : 0,
            "fechaCreacion" : ISODate("2019-02-18T18:47:33.907Z"),
            "usuarioCreacion" : "5c474fb4b02ea70694ad189e",
            "fechaModificacion" : Date(-62135596800000),
            "usuarioModificacion" : ""
        },
        {
            "_id" : ObjectId("5c6aff26b02ea75fb848dc65"),
            "respuesta" : "ddd",
            "usuarioId" : "5c474fb4b02ea70694ad189e",
            "fecha" : ISODate("2019-02-18T18:53:26.808Z"),
            "likes" : 2,
            "dislikes" : 0,
            "fechaCreacion" : ISODate("2019-02-18T18:53:26.808Z"),
            "usuarioCreacion" : "5c474fb4b02ea70694ad189e",
            "fechaModificacion" : Date(-62135596800000),
            "usuarioModificacion" : ""
        }
    ]

Si observamos solo quiero obtener los datos que están dentro del objecto respuestas filtrando por el _id 5c6af0edb02ea75fb848dc61 del objeto padre.
Buscando en google encontré esta forma pero me devuelve el atributo respuestas y yo solo quiero lo que esta dentro del objecto respuestas. Como lo haría?. Gracias
db.getCollection('preguntas').find({"_id" : ObjectId("5c6af0edb02ea75fb848dc61")}, {"respuestas": 1})

A: Para obtener los datos del campo respuestas de tu documento y mostrarlos en un array, puedes usar el método distinct().
Según la documentación, el método distinct() encuentra los valores distintos para un campo específico dentro de una colección o vista y devuelve el resultado en un array.
El método distinct() recibe 3 parámetros:

*

*field: El campo sobre el cual se realizará la búsqueda de valores distintos.

*query: Es un documento que especifica los documentos de los cuales se desea obtener los valores distintos.

*options: Es un documento opcional para configurar las opciones de la consulta.

Así para construir la consulta, el campo sobre el cual realizar la búsqueda será respuestas y el documento del que deseamos extraer la información será el que tenga _id igual a 5c6af0edb02ea75fb848dc61.
Entonces, podrías realizar tu consulta de la siguiente manera: (asumiendo que tu colección se llama preguntas)
> db.preguntas.distinct("respuestas",{"_id" : ObjectId("5c6af0edb02ea75fb848dc61")});

Una captura de pantalla usando los datos que has provisto en la pregunta:

Supongamos que deseas almacenar el resultado en una variable en Mongo, lo puedes hacer asignando a una variable el comando, de la siguiente manera:
> let resultado = db.preguntas.distinct("respuestas",{"_id" : ObjectId("5c6af0edb02ea75fb848dc61")});

Una captura de pantalla del resultado anterior:

Espero que esto aclare tu duda.

A: verifica bien si has cargado correctamente los documentos en la colección, al hacer una prueba en una consola de mongodb funciona correctamente

redpajama_set_name: RedPajamaStackExchange


text:
TGPTruth
AmericanGulag
Get Ad Free
EU Freedom
Free Iran
Free Venezuela
Report Issues with Website
Email Comment Support
Send Tips to The Gateway Pundit
Watch J6 Political Prisoner's Latest Movie here
Share on Facebook Tweet Share to GabGab ShareGab Telegram GettrShare Share ShareShareShare Email
Obamacare For Illegal Aliens Could Cost Taxpayers $23 Billion A Year, Study Shows
By Joseph Curl
Published October 10, 2019 at 10:14am
The federal government is running a nearly trillion-dollar deficit this fiscal year. The reason (and this isn't complex): It spends more than it brings in.
When households go into the red, couples usually take a simple step — stop spending so much.
But not our government.
Case in point: A new study shows that taxpayers could have to pay out as much as $23 billion a year to give "Obamacare" health coverage to illegal aliens.
TRENDING: BREAKING: HORRIBLE - Arizona Regime Is Investigating Kari Lake And Trying To JAIL Her On Felony Charges For Exercising First Amendment And Exposing Election Fraud
The Center for Immigration Studies (CIS) calculates that there are nearly 5 million illegals who would qualify for subsidies through the health care system created under the Affordable Care Act (ACA) by former president Barack Obama. The average cost would be about $4,500, so if all of them took the subsidies, it'd cost $22.5 billion.
Even if less than half enroll, it would still cost $10 billion.
"Many of the Democratic candidates for president have endorsed providing health insurance to illegal immigrants. This analysis estimates the cost of providing illegal immigrants access to the existing system of government health benefits for low-income people," CIS writes.
"?We estimate that there are 4.9 million uninsured illegal immigrants with incomes low enough to qualify for Medicaid or Advanced Premium Tax Credits (APTC), which are the subsidies provided by the Affordable Care Act (ACA). Assuming a realistic enrollment rate, the cost of providing ACA subsidies to illegal immigrants would be about $10 billion per year, with costs rising to as much as $23 billion per year if all eligible illegal immigrants enrolled. Costs would be similar under a hybrid approach that provides Medicaid for the lowest-income illegal immigrants and ACA subsidies for those with higher incomes."
CIS said continuing to allow foreigners to flow in illegally will create "a significant burden for taxpayers."
"Numbers aside, the fact that presidential candidates are advocating spending billions of dollars on people who are in the country illegally is significant in its own right. It suggests that allowing in large numbers of less-educated workers will inevitably generate significant political pressure to provide them access to social programs. If there is significant political pressure to provide coverage to people in the country illegally, it seems almost certain that over time pressure will grow to provide healthcare to low-wage guestworkers and other 'temporary' immigrants as well.
"The high cost of providing healthcare to less-educated workers who earn modest wages is a reminder that tolerating illegal immigration or allowing such workers into the country legally is likely to create a significant burden for taxpayers," CIS writes.
Cities are also being crushed by illegal aliens. Los Angeles County paid nearly $1.3 billion in welfare money during 2015 and 2016 to families of illegal aliens. That number amounts to one-quarter of the total spent on the county's entire needy population, according to Fox News.
In 2015, more than 58,000 families received $602 million in benefits. The next year, some 64,000 families received $675 million.
Meanwhile, new data from the U.S. Census Bureau shows that more than 22 million non-citizens now live in the United States.
The Bureau on Thursday released details from its annual American Community Survey. According to estimates extrapolated from data collected, 22.1 million are "not a U.S. citizen," the data showed.
Submit Additional Information
CURL: Democrats Are The Real Hypocrites In Latest Supreme Court Saga
CURL: America's Pandemic: Why The Cure Has Become Worse Than The Virus
CURL: Do As I Say, Not As I Do: Hypocritical Democrats Show Their True Colors
Virginia -- Birthplace Of Presidents -- Goes Over To The Dark Side Under Democrats' Control
CURL: Why DO Blacks Vote In Droves For Democrats Every Election?
The Gateway Pundit is moving back to Disqus! All of your account information and comment history has been saved and will be uploaded as quickly as possible to Disqus. If you do not already have a Disqus account, you will need to create one. Please use the same email address that you used for Insticator for your comment history to be carried over. We greatly appreciate your patience and continued support!
January 6 Political Prisoner Jake Lang Releases Second Documentary from Prison Cell: "Freedom Isn't Free – The First Battle of the Second American Revolution" – WATCH IT BELOW
"This Is Scary!" - Dr. Naomi Wolf Warns that Pfizer Is Performing Gain of Function Viral Research and Admitted It in Their Latest Statement (VIDEO)
Nikki Haley Poised To Launch Presidential Campaign Against Trump As Soon As Next Month
Jill Biden Attends Eagles-49ers Game - Football Fans React
Join The Gateway Pundit Newsletter
Sign up for our free email newsletter, and we'll make sure to keep you in the loop.
Visit AmericanGulag.org to learn how to help the prisoners of the protest on January 6th.
Please Visit... TGP FactCheck
Major Youtuber gets basic Vietnam War facts Wrong, Repeats Left-Wing Lies
Please Help The Gateway Pundit
2022 Midterm Action List – SEVEN STEPS You Can Take to SAVE OUR ELECTIONS From Fraud. If we all get involved in the 2022 midterms, WE can stop a majority of the election fraud. IT'S TIME TO ACT!
Where Hope Finally Made a Comeback.
© 2023 The Gateway Pundit – All Rights Reserved.


text:
package org.sosy_lab.cpachecker.util.predicates.pathformula;

import org.sosy_lab.cpachecker.util.predicates.interfaces.BooleanFormula;
import org.sosy_lab.cpachecker.util.predicates.interfaces.view.BooleanFormulaManagerView;

/**
 * This class tracks conditions under which a memory-related error would occur in the program.
 */
public class ErrorConditions {

  private final BooleanFormulaManagerView bfmgr;

  private BooleanFormula invalidDeref;
  private BooleanFormula invalidFree;

  public ErrorConditions(BooleanFormulaManagerView pBfmgr) {
    bfmgr = pBfmgr;
    invalidDeref = bfmgr.makeBoolean(false);
    invalidFree = bfmgr.makeBoolean(false);
  }

  public void addInvalidDerefCondition(BooleanFormula pCo) {
    invalidDeref = bfmgr.or(invalidDeref, pCo);
  }

  public void addInvalidFreeCondition(BooleanFormula pCo) {
    invalidFree = bfmgr.or(invalidFree, pCo);
  }

  public BooleanFormula getInvalidDerefCondition() {
    return invalidDeref;
  }

  public BooleanFormula getInvalidFreeCondition() {
    return invalidFree;
  }
}

redpajama_set_name: RedPajamaGithub


Our Halo Triton Review covers every single aspect of the electronic cigarette. From colors, batteries and tanks, we offer the most comprehensive details.
Featuring the latest Halo G6 Coupon and Promo Codes. Save on the Halo G6 Starter Kit, Batteries, Accessories, Cartomizers and E Liquids today!
Our iStockPhoto coupon directory is updated daily with the latest coupon codes, promo codes and discounts from the iStock website. Save up to 25% this May.
We have the latest StableHost coupon codes. Our coupon code directory is updated daily with working discounts and promotions for stablehost.com.
Grab the latest coupon codes from FragranceX and save 10% or more at FragranceX.com. Our coupon code is updated directly to save you the most money possible.
Featuring the latest Onnit Coupon code, Onnit Discount Code and Onnit Promo Code available on the web today. Our Onnit Coupon Code is guaranteed to work 100% of the time.
Save 25% or more on HostGator Dedicated, VPS, Shared and Reseller hosting services with our tested and working coupon codes, promo codes and discounts.
Get the best value in hosting for even less with our great Hosting24 coupon codes. Tested and working to save you as much as possible on hosting this year.
Find the latest Halo E Liquid Coupon Codes, Halo E Liquid Promo Codes and Halo E Liquid Discounts. Our coupon codes update daily to save you the most money possible.
We scour the web daily in search of the latest Match Coupon and write online dating tips. Whether your new to online dating or not, we are here to help.
Use our HostNine coupon codes and promotional codes and save up to 50% when you sign up with HostNine. Daily verified Hostnine discount codes available only our websites.


text:
Zuckerberg: Facebook will crack down on fake news
The Facebook CEO uses a post to defend the social network's role in last week's US election.
Katie Collins
Nov. 14, 2016 5:04 a.m. PT
Facebook's role in the 2016 election has been controversial.
In case you missed it the first time, Mark Zuckerberg is once again defending the role Facebook played in the presidential election.
The social network's chief executive responded Sunday to accusations that Facebook promoted news bias that hurt Hillary Clinton and helped Donald Trump in the presidential election campaign. Examples include a fake story about an FBI agent associated with Clinton's email leaks being found dead in a murder suicide and another fake story about the Pope endorsing Trump.
Zuckerberg expanded on points he made at a tech conference last week in a Facebook post Sunday about a "historic election" that has been "very painful for many people." It wasn't just the election that was historic, though. The role that social media played was unprecedented.
Trump, who won an unexpected victory last week against Clinton, has hailed the influence of social media in the election because it enabled him to speak directly to millions of people. Trump estimated in a "60 Minutes" interview, which aired Sunday, that he has about 28 million followers across all the social media platforms. "I find it tremendous. It's a modern form of communication. There should be nothing we should be ashamed of," he said.
Zuckerberg acknowledged that Facebook has work to do when it comes to identifying fake news. "We have made progress, and we will continue to work on this to improve further," he said.
More than 99 percent of content on Facebook is authentic, Zuckerberg said in his post, and the 1 percent is rarely political or biased in a particular way. Facebook already enables users to flag stories that aren't true and is looking for more ways that it can harness the community to prevent false news from spreading.
The social network must be careful though to ensure it isn't overstepping its boundaries when it comes to freedom of speech, though, Zuckerberg said.
"I am confident we can find ways for our community to tell us what content is most meaningful," he said, "but I believe we must be extremely cautious about becoming arbiters of truth ourselves."
Internet Services Mark Zuckerberg
Discuss: Zuckerberg: Facebook will crack down on fake news


New updated AdWords Editor 11.5 supports Mobile App Engagement Ads. You can now create and edit mobile app engagement ads.
Allows Import, Export and post changes for Multiple accounts at the same time. You can now import CSV file to multiple accounts and can also export more than one account in single CSV file.
AdWords Editor new update allows you to create and edit structured snippet ads. Search improvements made for better search experience within AdWords Editor 11.5. While downloading campaigns, you are now able to "filter by type" of campaigns. AdWords Editor 11.5 now allow you to sort multiple columns. You can also uploaded optional landscape image while making app install campaigns.


As I explained elsewhere on these pages, the problem of practical I/O between a VM and the resources of the outside world, is one of the most critical problems. UI is one part of the story (thus, my work on Eclipse SWT, the template editor, JSR-287, Squeak Cheese, and other UI work). But no less important is access to data.
This is why, in 1998, I joined The Object People -- the team who created TOPLink. TOPLink is the world's first industrial-grade object-relational mapping tool: our large clients used it for accessing relational data from Smalltalk before the advent of Java.


text:
Related articles in Companion to United States History on Oxford Reference

Printed from American National Biography. Under the terms of the licence agreement, an individual user may print out a single article for personal use (for details see Privacy Policy and Legal Notice).

date: 16 July 2019

Astor, John Jacob
(17 July 1763–29 March 1848)
Kenneth H. Williams
https://doi.org/10.1093/anb/9780198606697.article.1000054
Astor, John Jacob (17 July 1763–29 March 1848), fur trader and financier, was born in Waldorf, duchy of Baden, Germany, the son of Jacob Astor, a butcher, and Maria Magdalena Vorfelder, who died when John was about three. His family was of the artisan class, and few records survive from his youth. Due in large part to a fine town schoolmaster, Astor's education seems to have been better than average. It ended at age thirteen with his confirmation in the Lutheran church. At an age when many contemporaries became apprentices, Astor spent two years as an assistant in his father's butcher shop but had little interest in learning the business....


text:
Township of Moorestown, NJ
Ch 6 Administration of Government
Ch 9 Code of Ethics
Ch 11 Drug-Free Zones
Ch 15 Emergency Medical Services Agreement
Ch 30 Personnel Policies
Ch 45A Alarms
Ch 50 Cable Television
Ch 53 Certificates of Continuing Occupancy
Ch 60 Curfew
Ch 65 Dogs and Other Animals
Ch 66 Penalties for Code Violations
Ch 70 Encroachments
Ch 72 Farm, Right to
Ch 74 Field Sponsorship Program
Ch 75 Firearms
Ch 77 Fire Lanes
Ch 78 Fire Hydrants
Ch 79 Fire Prevention and Protection
Ch 87 Games, Automatic and Commercial
Ch 88 Games of Chance
Ch 90 Garage/Yard Sales
Ch 92 Garbage and Rubbish
Ch 95 Gasoline and Service Stations: Hours
Ch 97 Housing, Affordable, Controls and Procedures
Ch 98 Housing Standards
Ch 101 Licensing
Ch 108 Motor-Driven Vehicles
Ch 118 Parades
Ch 121 Parking, Off-Street
Ch 125 Parks and Recreational Facilities
Ch 132 Peddling, Soliciting, Transient Vendors and Community Event Vendors
Ch 137 Printed Matter Distribution
Ch 140 Recycling
Ch 145 Skateboards; Skateboard Ramps
Ch 147 Snow and Ice Removal
Ch 148 Maintenance Standards
Ch 150 Soil Removal
Ch 160 Preservation and Restoration of Existing Vegetation
Ch 161 Swimming and Wading Pools
Ch 169 Vehicles, Inoperable
Part III: Board of Health Legislation
Ch 185 General Provisions, Board of Health
Ch 185 Art I Adoption of Code by Board of Health
§ 185-1 Adoption of Code.
§ 185-2 Code supersedes prior ordinances.
§ 185-3 When effective.
§ 185-4 Copy of Code on file.
§ 185-5 Amendments to Code.
§ 185-6 Publication; filing.
§ 185-7 Code book to be kept up-to-date.
§ 185-8 (Reserved)
§ 185-9 Severability of Code provisions.
§ 185-10 Severability of ordinance provisions.
§ 185-11 Repeal of ordinances.
§ 185-12 Ordinances saved from repeal.
§ 185-13 Changes in previously adopted ordinances.
Ch 186 Food Handling
Ch 202 Nuisances, Public Health
Ch 203 Stormwater Quality
Ch 208 Sewage Disposal
Ch 210 Sewer Connections
Ch 214 Swimming Pools, Public
Ch A220 Cable Television Franchise
Ch A221 Telephone Franchise
New Laws (19) Index Notes (10)
Township of Moorestown, NJ / Part III: Board of Health Legislation
Chapter 185 General Provisions, Board of Health
[HISTORY: Adopted by the Township Council of the Township of Moorestown as indicated in article histories. Amendments noted where applicable.]
Adoption of Code by Township Council — See Ch. 1, Art. I.
Penalties for Code violations — See Ch. 66.
Article I Adoption of Code by Board of Health
[Adopted 3-13-1989 by Ord. No. 1464-89]
Pursuant to N.J.S.A. 40:49-4, the health ordinances of the Township of Moorestown of a general and permanent nature, as revised, codified and consolidated into chapters and sections by General Code Publishers Corp. and consisting of Chapters 185 through 219, are hereby approved, adopted, ordained and enacted as Part III of the "Code of the Township of Moorestown," hereinafter known and referred to as the "Code."
This ordinance and the Code shall supersede all other general and permanent ordinances of the Board of Health enacted prior to the enactment of this Code, except such ordinances as are expressly saved from repeal or continued in force and effect hereinafter.
All provisions of this ordinance and the Code shall take effect 30 days after the date of the first publication.
A copy of the Code in loose-leaf form has been filed in the office of the Township Clerk and shall remain there for use and examination by the public until final action is taken on this ordinance; and if this ordinance shall be adopted, such copy shall be certified as provided by law, and such certified copy shall remain on file in the office of the Township Clerk, to be made available to persons desiring to examine the same during all times while the said Code is in effect.
Any and all additions, amendments or supplements to the Code, when passed and adopted in such form as to indicate the intent of the Township Council to make them a part thereof, shall be deemed to be incorporated into such Code so that reference to the "Code of the Township of Moorestown" shall be understood and intended to include such additions and amendments. Whenever such additions, amendments or supplements to the Code shall be adopted, they shall thereafter be printed and, as provided hereunder, inserted in the loose-leaf book containing the said Code, as amendments and supplements thereto.
The Township Clerk, pursuant to law, shall cause to be published, in the manner required, a copy of this adopting ordinance in a newspaper of general circulation in the Township. Sufficient copies of the Code shall be maintained in the office of the Township Clerk for inspection by the public at all times during regular office hours. The enactment and publication of this adopting ordinance, coupled with availability of copies of the Code for inspection by the public, shall be deemed, held and considered to be due and legal publication of all provisions of the Code for all purposes.
It shall be the duty of the Township Clerk, or someone authorized and directed by the Clerk, to keep up-to-date the certified copy of the book containing the Code required to be filed in the Clerk's office for the use of the public. All changes in said Code and all ordinances adopted subsequent to the effective date of this codification, which shall be adopted specifically as part of the Code, shall, when finally adopted, be included therein by reference until such changes or new ordinances are printed as supplements to said Code book, at which time such supplements shall be inserted therein.
§ 185-8 (Reserved) [1]
Editor's Note: Former § 185-8, Altering or tampering with Code; penalties for violation, was repealed 3-20-2006 by Ord. No. 5-2006. See now Ch. 66, Penalties for Code Violations.
Each section of the Code and every part of each section is an independent section or part of a section, and the holding of any section or a part thereof to be unconstitutional, void or ineffective for any cause shall not be deemed to affect the validity or constitutionality of any other section or parts thereof.
Each section of this ordinance is an independent section, and the holding of any section or part thereof to be unconstitutional, void or ineffective for any cause shall not be deemed to affect the validity or constitutionality of any other section or parts thereof.
All ordinances of a general and permanent nature adopted by the Board of Health and in force on the date of the adoption of this ordinance and not contained in the Code are hereby repealed as of the effective date of this adopting ordinance, except as hereinafter provided.
The adoption of this Code and the repeal of ordinances provided for in § 185-11 of this ordinance shall not affect the following ordinances, rights and obligations, which are hereby expressly saved from repeal:
Any health ordinance adopted subsequent to December 31, 1966.
Any right or liability established, accrued or incurred under any legislative provision prior to the effective date of this ordinance, or any action or proceeding brought for the enforcement of such right or liability.
Any offense or act committed or done before the effective date of this ordinance in violation of any legislative provision, or any penalty, punishment or forfeiture which may result therefrom.
Any prosecution, indictment, action, suit or other proceeding pending, or any judgment rendered, prior to the effective date of this ordinance, brought pursuant to any legislative provision.
Any franchise, license, right, easement or privilege heretofore granted or conferred.
Ordinances authorizing the purchase, sale, lease or transfer of property, or any lawful contract or obligation.
Any provisions of any ordinance or resolution of the former Board of Health creating employments, positions or offices and fixing salaries and duties therefor which are not provided in the Code hereby adopted and which are not in conflict or inconsistent therewith, or any ordinance pertaining to the salaries and compensation of officers and employees.
In compiling and preparing the ordinances for adoption and revision as part of the Code pursuant to N.J.S.A. 40:49-4, certain grammatical changes and other minor changes were made in one or more of said ordinances. It is the intention of the Township Council that all such changes be adopted as part of the Code as if the ordinances so changed had been previously formally amended to read as such.
In addition, the following changes, amendments or revisions are made herewith, to become effective upon the effective date of this ordinance. (Chapter and section number references are to the ordinances as they have been renumbered and appear in the Code.)[1]
Editor's Note: In accordance with § 185-13B, the following sections were amended or added: §§ 196-5, 202-2, 202-3, 208-3, 208-4, 208-5, 208-6, 208-7. 208-8, 208-10A, 210-1, 210-3, 210-4, 214-3, 214-7, 217-2 and 217-3. A complete description of each change may be found in Ord. No. 1464-89, on file in the Township Clerk's office.


text:
What they say...
"Another brilliant example of Mark Perry's ability to weave a great story that has humor, social commentary, commercial observations and the perils of the failure to find balance. It's the little added observations in Perry's songs that make his contributions so important and significant. "
~ Bruce Swan, WPKN / WRFR Review
"New Jersey has Springsteen, New York has Billy Joel, northern B.C. has Mark Perry. These are the storytellers of their times and places."
~ Frank Peebles / Prince George Citizen
"Mark Perry had our audience captivated through the entire show. His heart shines through in his voice and his songs. Mark Perry's performance is a 'must-see' and a 'must-see again'." ~ Bruce Champion, Terrace Concert Society
"The soundtrack for my life is taken from Mark Perry's music. His song-writing, musical expression and stage presence emanates the very best, most magical qualities of life in a northern town. Perry's music invites me in to sit by his fire and feel like a cherished neighbour for a while."
~ Carolina DeRyk, Host, CBC Radio
"It was an entirely entertaining evening that was over too soon."
~ Tom Best, Interior News
"Mark's storytelling was truly heartfelt, honest and filled with humour and humility."
~ Joe Taylor, Blast! Toronto
"This singer/songwriter from Smithers is one of our finest, a guy whose songs are full of the telling little joys, frustrations and messy minutiae of real life. In a world of so much artifice, he's one of the real things." ~ J.P.M., The Province, Vancouver, BC
"Geography may have shaped Perry's character, but it hasn't compromised his music's universal appeal." ~ The Georgia Straight, Vancouver, BC
"Offers a real slice of life, sans saccharin. I recommend it." ~ Rogue Folk Reviews
A Mark Perry concert is like a Canadian roadtrip...
Mark Perry is one of Canada's great bard's, known and loved for his socially-narrative, good-humoured and thought-provoking songs. He sweeps you up in animated tales of Canadian characters and events, often paying homage to the creative resilience of rural townsfolk — the stuff that shows up when mills, mines and fisheries are shutting down, rivers are rising, and when buying the family car means trading "two cords of wood and 24 beer". This popular songwriter released his 13th album, 'Northwest', in late Fall of 2021. He is a storyteller of time & place, connecting us from coast to coast.
"New Jersey has Springsteen, New York has Billy Joel, northern BC has Mark Perry." ~ Frank Peebles
Listen...
Maybe Tonight
https://markperry.ca/wp-content/uploads/2019/01/Mark-Perry-Recollections-Maybe-Tonight.mp3
https://markperry.ca/wp-content/uploads/2017/12/Bicycle-highest.mp3
Backroad Wave
https://markperry.ca/wp-content/uploads/2018/08/04-Backroad-Wave.mp3
https://markperry.ca/wp-content/uploads/2018/04/Black-Ice-hi.mp3
River Will Rise
https://markperry.ca/wp-content/uploads/2018/01/riverwillrise-highest.mp3
Northern Skies
https://markperry.ca/wp-content/uploads/2018/04/02-Northern-Skies-hi.mp3
https://markperry.ca/wp-content/uploads/2019/10/03-Blue.mp3
https://markperry.ca/wp-content/uploads/2018/07/05-West.mp3
https://markperry.ca/wp-content/uploads/2019/01/Mark-Perry-Recollections-QueenoftheNorth.mp3
https://markperry.ca/wp-content/uploads/2017/12/Ode-highest.mp3
Big Bel Air
https://markperry.ca/wp-content/uploads/2019/01/Mark-Perry-Recollections-Big-BelAir.mp3
David and Louie
https://markperry.ca/wp-content/uploads/2018/04/11-David-And-Louie-hi.mp3
12 Albums... and new single releases in 2021. Stay tuned!
Cold Road
RR#7
In Every Town
View from the Highroad
Aldermere
Northern Waters
Vera's Cafe
Still Around
Dreams of the Highway
Smithers, BC • Annual Songwriters Night, Driftwood Schoolhouse
Prince George, BC • TBA
Fort St John, BC • North Peace Cultural Centre
Quesnel, BC • Quesnel Live Arts
view all shows »
for more information, interviews or bookings: contact Sandra Smith at Plaid People Music | sandra@plaidpeoplemusic.com 250.643.6221
Want to you know about new releases and upcoming show dates, maybe even some FREE ticket and music giveaways? Please subscribe for a very occasional email from Mark Perry and Plaid People Music. We promise not to inundate or make you yawn 🙂
Email Address * ….
First Name ………….
Last Name …………..
Northern Sky Records gratefully acknowledges support from…


text:
Hacks, Mods & Bots
A Clash of Kings Hack is any modification, tool, app, software, script, method or other means for players of the game to cheat and gain unfair advantages, get more free Gold (germs), resources, VIP levels, gear items and other goodies. – While there a huge variety of working cheating methods available for CoK on Android and iOS with no root and no jailbrake required, generators and hacks for unlimited free Gold // Gems, Money, VIP Levels and Resources do not exist and are always fake.
Modding is the primary and most popular game hacking technique applied in Clash of Kings by far, because it is the easiest way for normal people without programming experience and technical know-how to access CoK cheats. – While the installation process is not quite as simple as just downloading a file and playing the game, requiring both Android and iOS users to follow some simple steps in order to install the modded APK / iOS modded app correctly, it is still far simpler than manually modding or manually hacking the game yourself. – Mods are modified version of the Clash of Kings game app that have been reverse-engineered and manipulated to include game hack features directly in the game itself.
Mod Menus are the premium versions of mods, generally being made by the best modders in the game cheating industry, offering more and better features, more powerful game hacks, faster updates and an in-game menu for toggling individual cheats on and off and customizing features easily. – Often free /trial versions are available with limited features to be downloaded for free.
Game Hacking Tools
Are you looking for a method of cheating in Clash of Kings that does not require you to update your modded app with every single update, hotfix and patch that the CoK game client receives? – Well if you are willing to learn or have some experience with game hacking already, then the use of game hacking tools and memory editors, such as GameGuardian for Android and Game Gem for iOS, might just be right for you. – While this way of enabling cheating features is far more challenging and certainly nothing for newbie cheaters, requiring you to follow in-depth instructions / tutorials and at least have a basic understanding of the game hacking basics, techniques stay the same though many updates and the process is far more rewarding than simply downloading and installing a modded game client.
Exploits & Glitches
Exploiting and glitching are the use of bugs in the game servers and game ciient in order to cheat and gain unfair advantages in Clash of Kings. – While this sort of cheat is usually extremely temporary, generally getting patched out of the game as soon as the developers learn about it, it is also one of the few cheating methods that can allow you to get cheating features that would usually be impossible, such as unlimited money, resources, troops, free in-game purchases and similar extremely overpowered game hacks. Exploits are extremely hard to find and are never guaranteed to exist at any point in the life of the Clash of Kings game app. – Another great advantage of this kind of cheat is that glitches can generally be used with no root and no jailbroken mobile device required, making it the perfect cheating method for newbie game hackers. Some exploits, such as item duplication glitches, reward exploits, bugged shops and similar can be used with no tools and no complicated guides either.
Bots / Auto farming Apps
The use of botting software in mobile games such as Clash of Kings is pretty new and most game provders have not caught up to this particular development, which makes the use of automated farming bots in Andriod and iOS games a lot safer than on other consoles and systems. However, if you decide to use a bot to auto build your town and raid for you, make sure you do not run int 24/7. No human player can play a game for 24h per day over a prolonged time ant that is actually the one major way that bots usually get detected, given that they are usually undetectable, since they do not inject any code into the game app. Also the use of bots in mobile strategy online games like CoK is not popular enough for developers to cars, since a lot of bots actually require rooted mobile devices and most potential users do not want to deal with such complicated procedures.
As already pointed out your gold, VIP level, food, wood, iron, mithril, troops, level and research are not in any way changeable using any kind of hack or generator. Anyone offering you these kinds of hacks for Clash of Kings is trying to get you to fill in surveys or otherwise scam you. That is true due to the fact that this is an online game and all the important account values are not stored on your mobile device, but on the Elex game servers that are virtually non-hackable, unless you want to run the risk of going to prison for hacking into cooperate systems. Such hacks may work in single player games that use no servers and are fully run on your phone, but Clash of Kings is a multiplayer game and this does not apply here. Some smaller hacks and exploits may be possible here and there, but nothing that would really be useful for your game progression or power.
The device or platform you play the game on does not really influence the cheating software available for Clash of Kings: Facebook, iOS or Android ect.. the cheating methods available are always the same. The only thing that changes from device to device or between the platforms is the actual technique or code used program the software.
Mod Money /Gold for CoK
Clash of Kings is an Online Game and that essentially means that your account data, such as your wood, food, gold, items, troops and so on is stored on a PC that belongs to the game developers (Server). Data stored on this sever cannot be hacked using any generators, hack tools or anything similar someone might offer you for Download. The only way to get gold, items ect is to farm them, if you want to cheat use a auto playing bot to farm it.
Anyone that claims therefore to have a cheat program that does the impossible in Clash of Kings, is not to be trusted. Remember, on the internet anyone can claim to have a God Mode and Unlimited free Money for any game.
The Best Clash of Kings Hack
As there are no legitimate resource or money hacks for CoK, the best kind of hack to use is automated playing software or robots. Bots are able to not only build your Clash of Kings city automatically, complete research, farm events, complete daily tasks, recruit troops, complete quests, research automatically, attack monsters automatically until stamina runs out, do recommended quests and daily quests, spend skill points and a lot more. A bot is pretty much able to play the game without any user input, since the game really is rather simple and most of the time does not require creative human thought and therefore can be handled by a simple AI. Clash of Kings Bots are the fastest way of maxing out your buildings, level, troops and resources. Bots can also be set to spend of save any available resources in case of an attack.
Online Game City Builder Mobile Android iOS Strategy Role Playing PvP PvE


Inspired by the neolithic cave drawings of the early stone age, our 'Neo' earrings are a visual study in lines and basic shapes, made in wearable form. Wear alone or pair with their inverse 'Meso' - a beautiful accent on its own or paired with others from 'Alta Mira'. Measures approximately 1" tall, hand fabricated in solid brass or sterling silver, both with sterling silver ear posts and backs.


Original S.W.A.T. is well known for their line of tactical boots which are relied upon by military and law enforcement operators alike. When they were founded back in 1999 it was with the goal of supplying hard-working soldiers and LEO's with footwear that would offer both performance and comfort, and today they've been doing all that and more for almost two decades. It really comes as no surprise Original S.W.A.T. is at the top of their field, after all, boots are what they do – all they do – and they do it very well.
At SHOT Show, Original S.W.A.T. had a wide array of boots on display and I was able to spend time talking to Brett Weitl about the company's products as well as their purchase of Altama. That's right, Original S.W.A.T. purchased Altama last August; read on for further details.
We are pleased to announce that our company, Original Footwear, has purchased the majority of the assets of Tactical Holdings and Operations Inc. as of August 15th, 2014. Most notably we welcome the Wellco and Altama companies—brands with a wealth of history, research, and footwear technology.
These premier footwear brands have served military personnel for generations and will live on next to our already successful and rapidly growing Original S.W.A.T. brand of performance tactical boots. With our fifteen-year record of constantly improving footwear manufacturing techniques and quality assurance, this acquisition is a perfect fit for all involved.
There are many important steps to take, and our journey has just begun. We will face all obstacles head on. As a first priority, we are consolidating manufacturing at our state-of-the-art facility in Morristown, Tennessee, and ramping up USA production.
Our unwavering mission is to create the most reliable military and law enforcement boots on the market, and ensure our availability standards are met. Combining Original S.W.A.T's consistent quality and value with Wellco and Altama's unique understanding of military needs, we are confident that the end results will far exceed our customers' expectations.
Thank you for your time and understanding. Please make note of our new Customer Service information below and feel free to contact us at any time.
According to the rep at Original S.W.A.T. the coming year will be spent restructuring Altama and fulfilling existing contracts. Fans of Altama's boots will be pleased to hear the line will remain largely intact. Although there will not be anything new for 2015, there is something new underway for next year and I can tell you that from a boot standpoint it will definitely make a splash come SHOT Show 2016.
The boots are incredibly strong and lightweight. I wanted one, but the trouble was that it came only in black and wanted them in sand color. I guess, that doesn't go with their uniform.


text:
package de.w4.analyzer.wikiuser;

import java.util.ArrayList;
import java.util.List;

import play.Logger;
import akka.actor.ActorRef;
import akka.actor.Props;
import akka.actor.UntypedActor;
import akka.routing.RoundRobinPool;
import de.w4.analyzer.wikiuser.messages.ExtractionStart;
import de.w4.analyzer.wikiuser.messages.ExtractionTask;
import de.w4.analyzer.wikiuser.messages.ExtractionTaskDone;

public class NationExtractionRunner extends UntypedActor {

	private int no_of_worker;

	private int size_of_user_list_chunk;

	private List<String> user_names;

	private final ActorRef listener;
	private final ActorRef workerRouter;

	public NationExtractionRunner(int no_of_worker,
			int size_of_user_list_chunk, ActorRef listener,
			List<String> user_names) {
		super();
		this.no_of_worker = no_of_worker;
		this.size_of_user_list_chunk = size_of_user_list_chunk;

		workerRouter = getContext().actorOf(
				new RoundRobinPool(this.no_of_worker).props(Props
						.create(NationExtractionWorker.class)), "router");

		this.listener = listener;

		this.user_names = user_names;

		getSelf().tell(new ExtractionStart(), getSelf());

	}

	@Override
	public void onReceive(Object message) throws Exception {
		if (message instanceof ExtractionStart) {
			// register at listener by telling them the analysis has started
			listener.tell(new ExtractionStart(), getSelf());

			// start calculating

			int group_size = ((int) Math
					.floor((((double) user_names.size()) / ((double) size_of_user_list_chunk))));

			Logger.debug("Configuration results in chunk size of: "
					+ group_size);

			List<String> sub_group = new ArrayList<String>();

			for (int i = 0; i < user_names.size(); i++) {
				sub_group.add(user_names.get(i));
				// check group_size + not first element
				// and do it for the rest if groupsize will not be reached for
				// the last group
				if ((((i % group_size) == 0) && i > 0)
						|| (i == user_names.size() - 1)) {

					workerRouter.tell(new ExtractionTask(sub_group), getSelf());
					sub_group = new ArrayList<String>();
				}
			}

		} else if (message instanceof ExtractionTaskDone) {
			Logger.debug("Stop Extraction Task Runner and Router");

			getContext().stop(getSelf());

		}

	}

}


Published 04/22/2019 12:05:55 pm at 04/22/2019 12:05:55 pm in White Wicker Laundry Hampers.
white wicker laundry hampers buy wicker laundry basket baskets bathroom zara home south africa white wicker laundry hamper australia.
white wicker laundry hamper australia flag,white wicker laundry baskets ukutabs,round white wicker laundry hamper with lid,cheap wicker laundry hamper,white wicker laundry baskets uk,white wicker laundry baskets with handles,white wicker laundry baskets uk top,white wicker laundry baskets ukc,large white wicker laundry baskets,white wicker clothes hamper,white wicker laundry baskets ukfcu.


text:
HomeReviewReview : Phineas and Ferb Arcade for iPhone and iPad
Review : Phineas and Ferb Arcade for iPhone and iPad
Download: [itunes link="http://itunes.apple.com/us/app/phineas-and-ferb-arcade/id341453972?mt=8&uo=4″ title="Phineas_and_Ferb_Arcade"]
Official Site: Disney
Long have I heard about the hilarity of the Phineas and Ferb tv show. During this holiday break, I finally had the opportunity to watch a few episodes. With a brief understanding of the spirit of the show and appreciation for their humor, I figured it would be an opportune time to review the Phineas and Ferb Arcade game for iPhone and iPad!
The app has a lot of fancy animation between screens and menus. The first screen is fairly standard, so we'll head to the "Games"!
Since the title of the app has the word "Arcade" in it, it is reasonable to find that the app actually consists of 4 different games. The arcade games are:
Escape from Mole-Tropolis
Agent P's Hideout
S'No Problem
Cowabunga Candace
The first game is "Escape from Mole-Tropolis". The "Escape from Mole-Tropolis" game is basically a scrolling game like early games of the 80s. You need to grab diamonds, fossils, and other tools to complete the level, all while avoiding the mole's!
Once you collect enough, you need to bring them back to where you started.
The "Escape from Mole-Tropolis" is a pretty simple game, and very retro for me. It is pretty simple to understand and should be accessible to most ages.
The second arcade game is called "Agent P's Hideout". This game is also fairly simple to understand. You need to watch for Dr. Doofenshmirtz, and tap on him before he disappears. Be careful not to tap on anyone else that pops up or let Dr. Doofenshmirtz disapper, because three misses will end the game. This is a test of reflexes and observation.
"Agent P's Hideout" is another simple game, that most ages should be able to enjoy and easily become addicting.
The third game of the app is called "S'No Problem". You need to help Phineas and Ferb bounce snowballs with a trampoline, while making sure the blimp doesn't get too close to them!
Between all the games of the arcade, I felt this probably had the most challenge. I expect that younger children may easily get frustrated by this one, but who knows with kids these days. It can be difficult to bounce the snowballs, a couple times, while keeping track of the blimp as well.
The final game of the arcade is "Cowabunga Candace". In "Cowabunga Candace", we ride waves, avoid obstacles, and earn trophies.
Yet another fun game which most players should be able to master with relative ease.
I don't think any individual one of the games would be worth the $.99 price, but the combination certainly adds up to be a fun time. They could have spent more time on the games than the transitional animation. The app did seem to not handle pausing or exiting well, typically requiring a full restart of the app. The most recent release, version 1.2.1, was for "Minor bug fixes and optimized performance". This encourages me that they want to improve the app, but it has been LONG past a year since that update. I wouldn't hold my breath for an update in the near future. Regardless, I think the games are easily worth the distraction they can provide for you or a child.
Official Description:
SUMMERIZE YOUR FUN WITH PHINEAS AND FERB ARCADE, NOW WITH MOLE-TROPOLIS!
The best online games from Disney Channel and DXD's hit show are available on iPhone and iPod touch! Play four wild and wacky games all in one app!
Candace has been captured by the Mole Men and it's up to Phineas and Ferb to save her! Venture to the center of the earth with Phineas' Terra-Drill 5000 and collect fossils, diamonds, and use your flashlight to stun the Mole-Men.
Ride the waves and win the surfing trophy! Perform stunts, collect tricks, and avoid the obstacles to win!
Hone your secret agent skills in this hideout infiltration simulation. Tap on the Dr. Doofenshmirtz holograms before they disappear!
Phineas has solved the boys' snowboarding dilemma! With their combination snow maker and tennis ball server, use the trampoline to bounce snow balls across the yard to build a mountain! Don't let Dr. Doofenshmirtz's blimp get too close — that exhaust is hot!
Phineas and Ferb Arcade features music from the hit TV show, easy touch and motion controls, achievements, leaderboards and much more!
With all this fun, what do you wanna do?
Tags:disney, ipad, iphone, mobile
Review : OLP WDW Transportation Wizard for Kindle Fire
Review : Live365 App for Kindle Fire


text:
Q: Loop skips first number of the count I am unsure why this is skipping what should be the next number. For example, if I input 5 the list then runs 7,8, etc, but the number 6 is dropped. Similar if I input 4 the list then runs 6,7, etc.
Sub CountFromInput()
Dim i As Integer
Dim start As Integer

start = InputBox(Prompt:="Input the first number", Title:="Number Input")
Range("b1") = start

For i = 2 To 14
    Cells(i, 2).Value = start + i
Next i

End Sub

A: Sub CountFromInput()
Dim i As Integer
Dim start As Integer

start = InputBox(Prompt:="Input the first number", Title:="Number Input")
Range("b1") = start

For i = 1 To 13
    Cells(i+1, 2).Value = start + i
Next i

End Sub