text:
# Building elastic net models with PyTorch
This post will explore building elastic net models using the PyTorch library.
I will compare various scenarios with the implementations in scikit-learn to validate them.

Start by importing stuff:

```python
import numpy as np
import pandas as pd

import torch
import matplotlib.pyplot as plt

plt.style.use("seaborn-whitegrid")
```

Let's generate some data with some 0 coefficients, which would be an ideal case for a Lasso model:

```python
n = 100
m = 20
np.random.seed(10)

x = np.random.uniform(-1, 1, size=(n, m))
w = np.random.uniform(-1, 1, size=(m, 1))
b = np.random.normal(size=(1,1))
w = np.append(b, w * (np.random.uniform(size=(m, 1)) > 0.5), axis=0)
y_true = w[0] + x @ w[1:]
y = y_true + np.random.normal(loc=0, scale=2, size=(n, 1))

x_train = x[: n // 2]
x_test = x[n // 2 :]
y_train = y[: n // 2]
y_test = y[n // 2 :]

fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(w, ".", label="True")
ax.set_title("True coefficients")
fig.legend()
fig.show()
```

![svg](elastic_linear_files/elastic_linear_3_1.svg)

Next we prep data for PyTorch by converting to Tensors and
creating dataloaders.

We need to use the whole dataset in each step rather than smaller batches to match the way
sklearn has it's cost function setup.

```python
from torch.utils.data import TensorDataset, DataLoader

x_train_t = torch.Tensor(x_train[:, np.newaxis])
y_train_t = torch.Tensor(y_train[:, np.newaxis])
x_test_t = torch.Tensor(x_test[:, np.newaxis])
y_test_t = torch.Tensor(y_test[:, np.newaxis])

dataset_train = TensorDataset(x_train_t, y_train_t)
dataloader_train = DataLoader(dataset_train, batch_size=x_train_t.shape[0], shuffle=True)
dataset_test = TensorDataset(x_test_t, y_test_t)
dataloader_test = DataLoader(dataset_test, batch_size=x_test_t.shape[0], shuffle=True)
```

## Model definition
Now let's create a PyTorch elastic net model with `pytorch-lightning`.

We create a single linear layer network which represents a linear model.
We need to support both L1 and L2 losses in order to create the elastic regularisation.
Note - both of those `l1_reg` and `l2_reg` methods do not include the intercept. [Why? - more details](https://stats.stackexchange.com/questions/86991/reason-for-not-shrinking-the-bias-intercept-term-in-regression?rq=1).

This loss comes together in the `training_step` where we simply add the loss function outputs.

```python
import pytorch_lightning as pl

class ElasticLinear(pl.LightningModule):
    def __init__(
        self, loss_fn, n_inputs: int = 1, learning_rate=0.05, l1_lambda=0.05, l2_lambda=0.05
    ):
        super().__init__()

        self.learning_rate = learning_rate
        self.loss_fn = loss_fn
        self.l1_lambda = l1_lambda
        self.l2_lambda = l2_lambda
        self.output_layer = torch.nn.Linear(n_inputs, 1)
        self.train_log = []

    def forward(self, x):
        outputs = self.output_layer(x)
        return outputs

    def configure_optimizers(self):
        optimizer = torch.optim.Adam(self.parameters(), lr=self.learning_rate)
        return optimizer

    def l1_reg(self):
        l1_norm = self.output_layer.weight.abs().sum()

        return self.l1_lambda * l1_norm

    def l2_reg(self):
        l2_norm = self.output_layer.weight.pow(2).sum()

        return self.l2_lambda * l2_norm

    def training_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self(x)
        loss = self.loss_fn(y_hat, y) + self.l1_reg() + self.l2_reg()

        self.log("loss", loss)
        self.train_log.append(loss.detach().numpy())
        return loss

def plot_convergence(train_loss):
    fig, ax = plt.subplots(figsize=(5, 3))
    ax.plot(train_loss)
    ax.set_xlabel('Epoch')
    ax.set_ylabel('Train loss')
    fig.show()
```

## Linear regression
First let's test the linear regression case, where we have no regularisation.
We fit the above model and plot the training loss to check for convergence.

```python
model = ElasticLinear(
    loss_fn=torch.nn.MSELoss(),
    n_inputs=x_train.shape[1],
    l1_lambda=0.0,
    l2_lambda=0.0,
    learning_rate=0.05,
)

# fit model
trainer = pl.Trainer(max_epochs=100)
trainer.fit(model, dataloader_train, dataloader_test)

w_model = np.append(
    model.output_layer.bias.detach().numpy()[0],
    model.output_layer.weight.detach().numpy(),
)

plot_convergence(model.train_log)
```

    GPU available: False, used: False
    TPU available: False, using: 0 TPU cores
    /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: you passed in a val_dataloader but have no validation_step. Skipping validation loop
      warnings.warn(*args, **kwargs)

      | Name         | Type    | Params
    -----------------------------------------
    0 | loss_fn      | MSELoss | 0
    1 | output_layer | Linear  | 21
    -----------------------------------------
    21        Trainable params
    0         Non-trainable params
    21        Total params
    0.000     Total estimated model params size (MB)
    Epoch 13:   0%|          | 0/1 [00:00<?, ?it/s, loss=6.02, v_num=53]/Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: The dataloader, train dataloader, does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` (try 8 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
      warnings.warn(*args, **kwargs)
    Epoch 99: 100%|██████████| 1/1 [00:00<00:00, 86.80it/s, loss=2.32, v_num=53]

![svg](elastic_linear_files/elastic_linear_9_1.svg)

Now we fit an equivalent model in `sklearn`.

```python
from sklearn.linear_model import LinearRegression

model_lin = LinearRegression()
model_lin.fit(x_train, y_train)
```

    LinearRegression()

Comparing the fitted coefficients we see that the models are nearly identical:

```python
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(w, "x", label="True")
ax.plot(w_model, ".", label="Pytorch")
ax.plot(np.append(model_lin.intercept_, model_lin.coef_), ".", label="sklearn")
ax.set_title("Linear regression")
fig.legend()
fig.show()
```

![svg](elastic_linear_files/elastic_linear_13_1.svg)

## Ridge regression
Next let's test the ridge regression case, where we have only L2 regularisation.

```python
model = ElasticLinear(
    loss_fn=torch.nn.MSELoss(),
    n_inputs=x_train.shape[1],
    l1_lambda=0.00,
    l2_lambda=0.05,
    learning_rate=0.05,
)

# fit model
trainer = pl.Trainer(max_epochs=100)
trainer.fit(model, dataloader_train, dataloader_test)

w_model = np.append(
    model.output_layer.bias.detach().numpy()[0],
    model.output_layer.weight.detach().numpy(),
)

plot_convergence(model.train_log)
```

    GPU available: False, used: False
    TPU available: False, using: 0 TPU cores
    /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: you passed in a val_dataloader but have no validation_step. Skipping validation loop
      warnings.warn(*args, **kwargs)

      | Name         | Type    | Params
    -----------------------------------------
    0 | loss_fn      | MSELoss | 0
    1 | output_layer | Linear  | 21
    -----------------------------------------
    21        Trainable params
    0         Non-trainable params
    21        Total params
    0.000     Total estimated model params size (MB)
    Epoch 7:   0%|          | 0/1 [00:00<?, ?it/s, loss=7.41, v_num=54]         /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: The dataloader, train dataloader, does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` (try 8 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
      warnings.warn(*args, **kwargs)
    Epoch 99: 100%|██████████| 1/1 [00:00<00:00, 51.62it/s, loss=2.88, v_num=54]

![svg](elastic_linear_files/elastic_linear_15_1.svg)

To fit an equivalent model in `sklearn` we need to adjust the regularisation value a bit.

$$loss = ||y - Xw||^2_2 + alpha * ||w||^2_2$$

Here `sklearn` doesnt use the MSE rather the SSE,
therefore we need to scale the alpha term by the training size to be consistent.

```python
from sklearn.linear_model import Ridge
model_ridge = Ridge(alpha=0.05*x_train_t.shape[0])
model_ridge.fit(x_train, y_train)
```

    Ridge(alpha=2.5)

Comparing the fitted coefficients once again we see that the models are nearly identical:

```python
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(w, "x", label="True")
ax.plot(w_model, ".", label="Pytorch")
ax.plot(np.append(model_ridge.intercept_, model_ridge.coef_), ".", label="sklearn")
ax.set_title("Ridge regression")
fig.legend()
fig.show()
```

![svg](elastic_linear_files/elastic_linear_19_1.svg)

## Lasso regression
Next up is lasso regression case, where we have only L1 regularisation.

```python
model = ElasticLinear(
    loss_fn=torch.nn.MSELoss(),
    n_inputs=x_train.shape[1],
    l1_lambda=0.05,
    l2_lambda=0.0,
    learning_rate=0.05,
)

# fit model
trainer = pl.Trainer(max_epochs=100)
trainer.fit(model, dataloader_train, dataloader_test)

w_model = np.append(
    model.output_layer.bias.detach().numpy()[0],
    model.output_layer.weight.detach().numpy(),
)

plot_convergence(model.train_log)
```

    GPU available: False, used: False
    TPU available: False, using: 0 TPU cores
    /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: you passed in a val_dataloader but have no validation_step. Skipping validation loop
      warnings.warn(*args, **kwargs)

      | Name         | Type    | Params
    -----------------------------------------
    0 | loss_fn      | MSELoss | 0
    1 | output_layer | Linear  | 21
    -----------------------------------------
    21        Trainable params
    0         Non-trainable params
    21        Total params
    0.000     Total estimated model params size (MB)
    Epoch 9:   0%|          | 0/1 [00:00<?, ?it/s, loss=7.57, v_num=55]         /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: The dataloader, train dataloader, does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` (try 8 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
      warnings.warn(*args, **kwargs)
    Epoch 99: 100%|██████████| 1/1 [00:00<00:00, 68.20it/s, loss=2.94, v_num=55]

![svg](elastic_linear_files/elastic_linear_21_1.svg)

To fit an equivalent model in `sklearn` the alpha value we need is out by a factor of 2.

$$loss = (1 / (2 * n_{samples})) * ||y - Xw||^2_2 + alpha * ||w||_1$$

So we adjust the parameter appropriately.

```python
from sklearn.linear_model import Lasso
model_lasso = Lasso(alpha=0.05/2)
model_lasso.fit(x_train, y_train)
```

    Lasso(alpha=0.025)

Comparing the fitted coefficients once again we see that the models are nearly identical:

```python
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(w, "x", label="True")
ax.plot(w_model, ".", label="Pytorch")
ax.plot(np.append(model_lasso.intercept_, model_lasso.coef_), ".", label="sklearn")
ax.set_title("Lasso regression")
fig.legend()
fig.show()
```

![svg](elastic_linear_files/elastic_linear_25_1.svg)

## ElasticNet regression
Finally we have the elastic net regression case, where we have both L1 and L2 regularisation.

```python
# ElasticNet
model = ElasticLinear(
    loss_fn=torch.nn.MSELoss(),
    n_inputs=x_train.shape[1],
    l1_lambda=0.05,
    l2_lambda=0.05,
    learning_rate=0.05,
)

# fit model
trainer = pl.Trainer(max_epochs=100)
trainer.fit(model, dataloader_train, dataloader_test)

w_model = np.append(
    model.output_layer.bias.detach().numpy()[0],
    model.output_layer.weight.detach().numpy(),
)

plot_convergence(model.train_log)
```

    GPU available: False, used: False
    TPU available: False, using: 0 TPU cores
    /Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: you passed in a val_dataloader but have no validation_step. Skipping validation loop
      warnings.warn(*args, **kwargs)

      | Name         | Type    | Params
    -----------------------------------------
    0 | loss_fn      | MSELoss | 0
    1 | output_layer | Linear  | 21
    -----------------------------------------
    21        Trainable params
    0         Non-trainable params
    21        Total params
    0.000     Total estimated model params size (MB)
    Epoch 11:   0%|          | 0/1 [00:00<?, ?it/s, loss=6.55, v_num=56]/Users/Rich/Developer/miniconda3/envs/pytorch_env/lib/python3.9/site-packages/pytorch_lightning/utilities/distributed.py:68: UserWarning: The dataloader, train dataloader, does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` (try 8 which is the number of cpus on this machine) in the `DataLoader` init to improve performance.
      warnings.warn(*args, **kwargs)
    Epoch 99: 100%|██████████| 1/1 [00:00<00:00, 54.92it/s, loss=3.33, v_num=56]

![svg](elastic_linear_files/elastic_linear_27_1.svg)

For `sklearn` the loss function is given as:

$$1 / (2 * n_{samples}) * ||y - Xw||^2_2$$
$$+ alpha * l1_{ratio} * ||w||_1$$
$$+ 0.5 * alpha * (1 - l1_{ratio}) * ||w||^2_2$$

To adjust the parameters we use the following:
```
a = 0.05 / 2
b = 0.05
alpha = a + b and l1_ratio = a / (a + b)
```

```python
from sklearn.linear_model import ElasticNet
model_elastic = ElasticNet(alpha=0.075, l1_ratio=1/3)
model_elastic.fit(x_train, y_train)
```

    ElasticNet(alpha=0.075, l1_ratio=0.3333333333333333)

And no surprises here that the fitted coefficients once again are nearly identical:

```python
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(w, "x", label="True")
ax.plot(w_model, ".", label="Pytorch")
ax.plot(np.append(model_elastic.intercept_, model_elastic.coef_), ".", label="sklearn")
ax.set_title("ElasticNet regression")
fig.legend()
fig.show()
```

![svg](elastic_linear_files/elastic_linear_31_1.svg)

gha_language: Jupyter Notebook


text:
# 1. About
This product has been developed within the full-stack hiring test of Luvmotels : https://github.com/luvotels/fs-hiring-test/
The final product can be seen online on: https://tjluvotels.herokuapp.com/. There are three users with the following information:

| User | Passwords | Amount of Motels |
| --- | --- |---|
|<EMAIL_ADDRESS>| 123456|  2 motels |
|<EMAIL_ADDRESS>| 123456|  1 motel |
|<EMAIL_ADDRESS>| 123456|  0 motels |

# 2. Implemented Solution
## 2.1 Product
The developed product focus on the scope of the user login of a motel owner and the administration of bookings and revenues.

![fs-test-scope](https://user-images.githubusercontent.com/25422365/35520829-128162c4-0510-11e8-8c2c-99df356ccade.png)

The following user stories have been implemented:
1) Login: As a Motel Owner I want to have access to the information of my motel and my rooms
2) Login: As Luvotels I want to make sure that a Motel Owner can only see his own information and has no simple way to access information of other Motels
3) Admin: As a Motel Owner, I want to know what bookings have passed
4) Admin: As a Motel Owner, I want to know what my net earnings per Motel
5) Admin: As a Motel Owner, I want to know what my net earnings per Room

## 2.2 Technical
The solution has been developed on rails 5.1.4.

### 2.2.1 Set up
To set up the solution, please run the following commands
```sh
$ bundle install
$ rails db:create
$ rails db:migrate
$ rails db:seed
```

### 2.2.2 Data/API
The data of the solution is depending on the Luvmotels API. The models (motel, room, booking) have been built around this API. In order to add a user component, an extra model for user has been created.
The database gets populated by calling the API in the Seed. In order to make the references work, extra fields were included: api_motel_id, api_room_id, api_booking_id.
Moreover, there has been another extra field inserted for bookings in order to make the calcualtion of the net earnings easier: amount_centavos_earned
This leads to the following DB scheme:
<img width="400" alt="dbscheme" src="https://user-images.githubusercontent.com/25422365/35521185-0841f372-0511-11e8-801e-7c4622a6cef3.png">

### 2.2.3 Authentication and Authorization
In order to implement user story 1 and 2, devise and pundit is used

## 2.3 Testing
### 2.3.1 Automated Testing
While the initial set up has been done, automated tests still need to be written. The solution currently relies on Manual Testing as described below.

### 2.3.2 Manual Testing
The following describes the main test cases that need to be performed. To check the data, the table below "User Test Data" needs to be verified during the tests
#### A) Test Cases
| Test | Do | Expected Outcome |
| --- | --- |---|
| Login Authentication| Login with all three users| - User1 and 2: Their owned Motels (And on click room) have to appear; User3: A screen has to appear that there are no motels|
| Login Authorization| Login as user1 and user3 and try to change routes of index to access info of other user | Redirection to landing page and alert |
| Admin Revenue (Motels and Room) | Login as User 1 and User 2 and get to Motels and Rooms Overview |Check Correct Total Net Earning Data, double check for each Motel and room the totals, double check for each Motel and Room the Gross, Net and Commission Fee by calculating it |
| Admin Revenue (Bookings) | Login as User 1 and User 2 and get to Bookings |Check Total Booking amount, double check random bookings the totals, Gross, Net and Commission Fee by calculating it |

#### B) User Test Data
Remark: These are static test data for the current API data and the fixed User/Motel relation:

| User | Motels | Rooms | Total Bookings | Total Net Earnings |
| --- | --- |---|---|---|
| user1 | Beatles Motel, Nirvana Motels| Heart Shaped Room, Drain your Suite, Love Buzz Suite, Twist and Shout Room, All my loving Room |650|R$ 69,290.40|
| user2| Desserts Motel | Pudim Room, Cream Bomb Suite, Lollypop Room|500|R$ 55,149.44|
| user3| No motels| No rooms | No bookings|

# 3. Improvement Potential
Following topics are suggested to be improved regarding the current implemented solution
## 3.1 Product
- Use Paid at Data as Filter to show revenues per Months, weeks and days in order to analyze revenue flows and impact of different actions such as marketing campaigns etc
- Graphical display of the data in charts for analytical purposes

## 3.2 Technical
- API Call: Integrate data from API directly without using a "artificial" seed (including a layer between API and page)
- Implement Webhook to get data updated as soon it changes
- Automated Tests
- Bootstrap 4: Solution is currently running on Bootstrap 3 while Bootstrap 4 has been fully realeased. Bootstrap 4 offers further options and improvements especially on the responsiveness around grids
- SEO and Social Media: The current solution focus strongly on the resolving the tasks of the fs-challenge. There is a big room for improvement on Search Engine Optimization (Descriptions, H1 naming) and Social Media tools such as sharing on Whatsapp etc.

license: MIT

repository: Tamazonia/fs-hiring-test

branch_name: refs/heads/master

extension: md

gha_language: Ruby

license_type: permissive

repo_name: Tamazonia/fs-hiring-test


text:
These files support open course [Analysis of Credit Migration using Python TransitionMatrix](https://www.openriskacademy.com/enrol/index.php?id=38).

- [Step 1: Working with a Transition Matrix object](step1.py)
- [Step 2: Working with Multi-Period Transition Matrices](step2.py)
- [Step 3: Estimating a Transition Matrix from Data in Cohort Format](step3.py)
- [Step 4: Estimating a Transition Matrix using Data in Duration Format](step4.py)
- [Step 5: Illustration using Credit Migration data from LendingClub](step5.py)

repository: epogrebnyak/transitionMatrix

gha_language: Python

repo_name: epogrebnyak/transitionMatrix


text:
# Mycosphaerella ravenelii (Cooke) Tomilin SPECIES

#### Status
ACCEPTED

#### According to
Index Fungorum

#### Published in
Nov. sist. Niz. Rast. , 1964 9: 116 (1972)

#### Original name
Sphaerella ravenelii Cooke

### Remarks
null

repository: mdoering/backbone

repo_name: mdoering/backbone


text:
---
layout: default
---

# 1997-06-05 - Re: Password pirates plunder XXX sites, from The Netly News

## Header Data

From: "Phillip M. Hallam-Baker"<EMAIL_ADDRESS>To: "Donald E. Eastlake 3rd"<EMAIL_ADDRESS>Message Hash: c41ef4b11ed3b2a5f322a4dc7aad8ba94e72ad00ec023c0a28a0f028ca4c805e

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1997-06-05 17:20:18 UTC

Raw Date: Fri, 6 Jun 1997 01:20:18 +0800

## Raw message

```
{% raw  %}From: "Phillip M. Hallam-Baker"<EMAIL_ADDRESS>Date: Fri, 6 Jun 1997 01:20:18 +0800
To: "Donald E. Eastlake 3rd"<EMAIL_ADDRESS>Subject: Re: Password pirates plunder XXX sites, from The Netly News
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: multipart/signed; boundary="Boundary..3963.1071713705.multipart/signed"

--Boundary..3963.1071713705.multipart/signed
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

 >Although you can never completely eliminate it, technological fixes
to do
>velocity checking, source IP address profiling, etc., seem so obvious
I
>just don't see how this can be any sort of insurmountable problem...

Agreed but see bellow

>It should have been obvious from the start that you would have a lot
more
>people trying to steal service from a porn site than from, say, a
Disney
>site.

I think the problem is that a large number of the people who run porn
sites are neither technically sophisticated nor well funded. I suspect
that many do not know how to write a program and can't afford hiring
someone to do it for them.

Its a business where there are low barriers to entry and there are a
very large number of competitors. One way of discouraging new entrants
is to claim that there are major technical problems...

Phill

--Boundary..3963.1071713705.multipart/signed
Content-Type: application/octet-stream; name="bin00000.bin"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="bin00000.bin"
Content-Description: "smime.p7s"

MIIBCwYJKoZIhvcNAQcCoIH9MIH6AgEBMQswCQYFKw4DAhoFADALBgkqhkiG
9w0BBwExgdowgdcCAQEwdjBiMREwDwYDVQQHEwhJbnRlcm5ldDEXMBUGA1UE
ChMOVmVyaVNpZ24sIEluYy4xNDAyBgNVBAsTK1ZlcmlTaWduIENsYXNzIDEg
Q0EgLSBJbmRpdmlkdWFsIFN1YnNjcmliZXICEGFDFWiEgdTVot4rXibJq8Uw
CQYFKw4DAhoFADANBgkqhkiG9w0BAQEFAARANI2R6m39UcBCyAMjWOSG1LEg
jCFGWqN5KX4n3I6RFQTA3iyfHHh6iA7vAkxHqihvP38XG71LiJEf/hmaGTny
Hg==
--Boundary..3963.1071713705.multipart/signed--

{% endraw %}
```

## Thread

+ Return to [June 1997](/archive/1997/06)

+ Return to "[Hallam-Baker <hallam@ai.mit.edu>](/authors/hallambaker_hallam_at_ai_mit_edu_)"
+ Return to<EMAIL_ADDRESS>(Nelson Minar)](/authors/nelson_at_media_mit_edu_nelson_minar_)"
+ Return to "["Phillip M. Hallam-Baker" <hallam@ai.mit.edu>](/authors/phillip_m_hallambaker_hallam_at_ai_mit_edu_)"

+ 1997-06-05 (Fri, 6 Jun 1997 01:20:18 +0800) - Re: Password pirates plunder XXX sites, from The Netly News - _"Phillip M. Hallam-Baker"<EMAIL_ADDRESS>  + 1997-06-05 (Fri, 6 Jun 1997 02:55:47 +0800) - [Re: Password pirates plunder XXX sites, from The Netly News](/archive/1997/06/7e1c09e432b513648a43ffa5ebdbfdf767782474acf1df713f4dd19ef0759d07) -<EMAIL_ADDRESS>(Nelson Minar)_
    + 1997-06-05 (Fri, 6 Jun 1997 03:16:11 +0800) - [Re: Password pirates plunder XXX sites, from The Netly News](/archive/1997/06/8c9e02cb0048bda6987c49d561e9cffbe20cc46e675bf7c3f2f2fba13603f50b) - _Hallam-Baker<EMAIL_ADDRESS>

gha_license_id: MIT


text:
# Writing a Kubernetes Operator: the Hard Parts

| [Background](https://sched.co/UaeV) | [Slides](slides/Writing_a_Kubernetes_operator_-_the_Hard_Parts_-_KubeCon_2019.pdf) |
| ----------------------------------- | ---------------------------------------------------------------------------------- |

**Speakers**
* Sebastien Guilloux, Elastic

## Kubernetes Operators in a Nutshell

Operators generally work with a CRD that an end-user would apply. The Operator
watches for a create/update/delete event on the watched resource. When an event
occur, a reconciliation is triggered to satisfy the requested CRD
specification.

## Tools and Libraries

* [Kubebuilder](https://github.com/kubernetes-sigs/kubebuilder)
* [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime)

## The Hard Parts

* The operator lives in the past
  * The `apiserver` client uses a _cached reader_ by default
    * Can lead to problems
      * Infinite loops
      * Split-brain situations
      * Double rolling upgrade reaction (delete+recreate pods, then
    delete+recreate the already upgraded pods)
  * _Optimistic concurrency_ is good enough in most cases however
    * Sometimes it can be not enough, especially with stateful workloads
    * If better guaranteed is needed, register expectations in memory and check
    that the cache matches the expectation
  * Best practices
    * Use deterministic naming
    * Always assume a stale cache
    * The entire reconciliation should be idempotent
  * Reconciling resources
    * Hard to do because we can't just use `reflect.DeepEqual` because of
    fields added by Kubernetes/mutating webhooks (e.g. metadata)
    * Custom functions to compare each important field gets messy quickly
    * Better way is to create a hash of the important fields, then compare the
    expected hash against the actual hash
  * Empower users to customize fields in the CRD, but also provide good
  defaults

## StatefulSets

* Cannot resize volumes
* Scheduling conflicts with pods vs. persistent-volumes
  * Can use `volumeBindingMode: WaitForFirstConsumer` for `kind: StorageClass`
* Scheduling conflicts with local volumes vs. resources
* `UpdateStrategy`
  * Choose one: `RollingUpdate.Partition`, `OnDelete`
* You don't have to use StatefulSets
  * You can manage pods and persistent-volume-claims directly


text:
[yaml]: https://en.wikipedia.org/wiki/YAML
[latex]: https://www.latex-project.org/help/documentation/usrguide.pdf
[lilypond]: http://lilypond.org/doc/v2.19/Documentation/notation/index
[mustache]: https://mustache.github.io/mustache.5.html
[model-laul]: src/common/models.py
[model-project]: src/common/models.py

# Laulik Reference

The data used to build a laulik lives in the `data` directory. There are multiple subdirectories which contain project files.

## Laulud

The `data/laulud` directory contains all song information.  The following types of files will be found here:

### Yaml files

The song information is defined by a `.yml` file in the `data/laulud` directory.  These files must start with the header:

```
--- !Laul
```

Followed by a set of keys / values, in standard [Yaml format][yaml].
The following keys are supported:

#### `title` - String
Name of the song.  This will also be included as an index entry.
Supports [LaTeX][latex] markup.
```
title: Eesti h\"umn
```

#### `composer` - String
Composer of the music.
Supports [LaTeX][latex] markup.
```
composer: Fr. Pacius
```

#### `poet` - String
Creator of the lyrics.
Supports [LaTeX][latex] markup.
```
poet: J. V. Jannsen
```

#### `margin` - Associative array
Sets the margin for indenting the song.
Units are LaTex units.  Supports `verse` and `refrain` values.
**NOTE: This format will need to change in order to make laulik pages resizable, right now it is tied to a fixed page size**
```
margin:
  verse:
    l: 0.9in
    r: 0.1in
  refrain:
    l: 0.8in
    r: 0.2in
```

#### `misc` - String
Supplemental information which will be rendered on the song page.
Supports [LaTeX][latex] markup.
```
misc: (2005 ,,Vanas\~ona{``} laagrilaul)
```

#### `index` - List
A list of additional index entries under which this song will appear.
Supports [LaTeX][latex] markup.
```
index:
  - 2005 Vanas\~ona laagrilaul
```

#### `paths` - Associative array
Paths to the other files associated with this song.
Paths are relative to the `.yml` file location.

```
paths:
  lyrics: 01_eesti_hümn.tex
  music: 01_eesti_hümn.ly
```

### Lyric files

Lyrics are specified by adding a `lyrics` entry under the [paths](#yaml-paths) portion of the Yaml file.

The lyric file typically has a `.tex` extension.  Its syntax is based off of a modified [LaTeX][latex] syntax.  Structurally, it is sufficient to format a file as a set of lines in a plain text format (using LaTeX modifiers for accents, etc as needed).

The lyric file is passed through a [mustache][mustache] renderer and passed a [Laul][model-laul] object in case you need to render templated data into the lyrics.

```
Mu isamaa, mu õnn ja rõõm,
kui kaunis oled sa!
Ei leia mina iial teal
see suure laia ilma peal,
mis mull' nii armas oleks ka
kui sa, mu isamaa!

Sa oled mind ju sünnitand
ja üles kasvatand!
Sind tänan mina alati
ja jään sul truuiks surmani!
Mull' kõige armsam oled sa.
mu kallis isamaa!

Su üle Jumal valvaku,
mu armas isamaa!
Ta olgu sinu kaitseja
ja võtku rohkest' õnnista',
mis iial ette võtad sa,
mu kallis isamaa!
```

Verses are defined as groups of non-blank lines.

#### `%REFRAIN` Verses

A verse will be marked as refrain if its first line is the text `%REFRAIN`. Refrains will be indented differently (see [margin](#yaml-margin) for more information).

```
Kes otsib, see leiab, ja muidu ei saa;
otsime skaut/gaidlikku teed!
Iga matk algab \"uhe sammuga,
astu julgelt ja vaata mis on ees.

%REFRAIN
Vanas\~ona, esiisa \~opetus,
kostab meile l\"abi aegade.

Vanal teel vana s\~obra leiad sa,
istu ja tee l\~oket koos.
R\"a\"agi oma jutte ja ela edasi,
ainult p\"u\"udlikud on muinasloos.
```

### Music files

Musical notes are specified by adding a `music` entry under the [paths](#yaml-paths) portion of the Yaml file.

The lyric file typically has a `.ly` extension.  The file should be formatted according to the [lilypond][lilypond] syntax.

The lyric file is passed through a [mustache][mustache] renderer and passed a [Laul][model-laul] object in case you need to render templated data into the lyrics.

### Image files

An image can be associated with a song by adding an `image` entry under the [paths](#yaml-paths) portion of the Yaml file.

This will be rendered next to the header for the associated song.

## Projects

The songbook information is defined by a `.yml` file in the `data/projects` directory.  These files must start with the header:

```
--- !Project
```

Followed by a set of keys / values, in standard
[Yaml format][yaml].
The following keys are supported:

#### `title` - String
Name of the book.
Supports [LaTeX][latex] markup.
```
title: Järvemetsa laulik
```

#### `subtitle` - String
Subtitle for the title page.
Supports [LaTeX][latex] markup.
```
subtitle: 2006 Võluja Suurlaager
```

#### `parts` - List
A list of paths to include as songs in this project. These paths are relative to the `data` directory, not the project file.

Order is important as the songs will be included in the same order they appear in this list.

```
parts:
  - laulud/01_eesti_hümn.yml
  - laulud/2005_vanasõna.yml
```

#### `templatesdir` - String
Path to a non-default directory to use for template files.  A project might customize Laul and Project templates using this.
```
templatesdir: templates/test
```

#### `debug` - Boolean
If true, PDF will render red boxes around verses.  Useful for debugging layout.
```
debug: true
```

#### `layoutmode` - String
One of `margin` (default) or `width`.  Controls how verses are laid out.  Ideally everything uses
`width` in `em` units, which should scale to different paper sizes easily.
```
layoutmode: width
```

## Templates
Templates are located in the `data/templates` directory, typically with a `.tex` extension.

These are [mustache][mustache] templates which render `.tex` output.

Songs are rendered into the `laul.tex` template and are passed a [Laul][model-laul] object.

Projects are rendered into the `project.tex` template and are passed a [Project][model-project] object.  The Project object contains a `content` attribute containing a rendered copy of all the song data associated with the project.

repository: kurrik/laulik

repo_name: kurrik/laulik


text:
# discourse-topic-to-github

This plugin can transfer discourse post and reply to
Github issue. When you write topic or reply, this plugin
sends your post to GitHub repository automatically.
But now it cannot detect modifying posts.

## Installing
1. **SHOULD READ THIS ARTICLE** https://meta.discourse.org/t/install-a-plugin/19157
2. This plugin uses [octokit](https://github.com/octokit/octokit.rb).
Add this `gem "octokit", "~> 4.0"` line to `Gemfile` at discourse root directory.
3. Run `bundle install` at terminal.

## LICENSE
MIT

repository: maxtortime/discourse-topic-to-github

repo_name: maxtortime/discourse-topic-to-github


text:
- 5.1.17
    - #503, adds event when connection is set.
- 5.1.16
    - #489, fixes hostname actions when tenant hasn't been identified yet.
- 5.1.15
    - #485, setting app.url from previous release now fixed due to missing %s in sprintf.
- 5.1.14
    - #481, HostnameActions middleware now sets `app.url` configuration key to the tenant if enabled.
    - #478, fixes an issue of no `$host` when deleting websites.
    - #474, seed command now takes configured seed class as default.
    - #477, when loading config files, only use .php files.
    - #440, whenever Hostname is modified outside of repository, flush cache.
- 5.1.13
    - Patched the PostgreSQL driver when in CLI.
    - Now registering website uuid on set tenant connection.
- 5.1.12
    - Re-introduced the ability to use tenant views.
- 5.1.11
    - Fixed an issue with CurrentHostname resolving introduced in 5.1.10.
    - Reduced queries to system database when not yet installed.
- 5.1.10
    - Added support for MySQL 8 in our tests.
    - Moved CurrentHostname resolving to its own Service Provider so that it will be properly loaded on request.
- 5.1.9
    - Added Macroable trait for easier extending to Environment, Directory and Connection.
    - Added two new configuration items `tenancy.db.force-tenant-connection-of-models` and `tenancy.db.force-system-connection-of-models` to force models from third party packages you have little control over onto the tenant or system connection.
- 5.1.8
    - Removed all directory separators, this is unnecessary as the filesystem driver takes care of that.
- 5.1.7
    - Fixes a multi database issue where the secondary connection would not be used properly for setting up databases.
- 5.1.6
    - Fixes a multi database issue where the Website would be created on the secondary system database.
- 5.1.5
    - Fixes issue with tenants not being created properly on different database servers.
- 5.1.3 & 5.1.4
    - Fixed typo in nginx vhost file.
    - Fixed the tenancy:db:refresh command.
    - Now using configured `tenancy.db.tenant-seed-class` for seed related commands.
    - MySQL/MariaDB user creation and deletion fixed.
    - Made configurable whether to auto create and delete tenant database users.
    - Fixed Content-Type on fallback Media Controller.
- 5.1.2
    - Changing flush to forget on cache. Thus preventing the full Laravel cache from being flushed.
- 5.1.1
    - Added a fallback media handler. In case you're not using the packaged apache or nginx vhost configurations.
- 5.1.0
    - Removed need for tenancy.json in laravel docroot, it now checks database.
    - Updated terminology in TenantAwareJob, $tenant_id is now $hostname_id.
    - Improved translation file loading for tenants. Override global now properly works.
    - Fixed issue with prefixed routes, which have never worked.
    - Moved to Laravel 5.6 support for this version.
    - Added onHostname to specify the hostname on job creation.
    - Fix tests to use repositories so databases will be deleted.
    - Fixed apache config having an incorrect alias.
- 5.0.17
    - Fixed auto identification due to incorrect CurrentHostname resolving.
- 5.0.16
    - Squashed some minor typography issues.
    - Updating event for website now triggers services to rebuild.
- 5.0.15
    - Added an artisan command `tenancy:restore` that restores tenant database/schemas/user/password given that the system database is intact.
- 5.0.14
    - Added ability to identify the tenant early, see tenancy.php > hostname > early-identification.
    - Ability to make Jobs tenant aware by applying the TenantAwareJob trait, which replaces the SerializesModels trait.
    - Some minor fixes and house keeping.
- 5.0.13
    - Fixed issue with overriding configs from tenant directories.
    - Fixed missing import for Process class in Nginx generator.
    - Running tests under production allows us to test migrations to be working.
- 5.0.12
    - Re-added deprecated migration name to prevent issues on existing installations.
- 5.0.11
    - Fixed running the migrations.
- 5.0.10
    - #306, dropped tenant-migration connection for seeding and migrations.
    - Clean up of code in TenancyProvider and other files.
    - #307, undo auto publishing of migrations.
- 5.0.9
    - Fixed issue where webserver process wasn't restarted.
    - Fixed link in readme to packagist.
    - Fixed relation for Customer.
- 5.0.8
    - Facade "Tenancy" resolving the Environment class added.
- 5.0.7
    - Allowing to configure the system models.
    - Now no longer able to run migrations without --path, --realpath or 'tenancy.db.tenant-migrations-path' configuration.
    - Set a default for 'tenancy.db.tenant-migrations-path' to point to 'database/migrations/tenant'.
- 5.0.6
    - Fixed code coverage.
    - Moved logic to set Eloquent model connection to traits.
    - Refactored some calls to use Symfony Process.
    - Added warning about absolute path for tenant-migrations-path.
- 5.0.5
    - Moved to CircleCI for CI, now fully separated from GitLab.
    - Improved validation of hostnames by allowing nullables.
    - #284, fixed validation issue when updating hostname or website.
    - Fixed maintenance mode in HostnameActions middleware.
- 5.0.4
    - Flushing cache whenever hostname fqdn or website uuid changes.
- 5.0.3
    - Added seed command and auto seeding of newly auto-migrated tenants.
    - Added more strict validation.
    - Added script to clean tenant and tenancy databases while running local tests.
    - Fixed an issue with nginx where the media folder was incorrectly mapped.
    - Fixed issue where tenant hostname was identified using the wrong header.
- 5.0.2
    - #262, allows using the tenant disk.
    - #260, triggering events in case tenant directories are mutated.
- 5.0.1
    - Added initial Nginx support.
    - Added MySQL database support, set tenancy > website > uuid-limit-length-to-32.
- 5.0.0

repository: thonghust/tenancy

gha_language: PHP

repo_name: thonghust/tenancy


text:
---
layout: default
---

# 1997-12-03 - Re: Censorial leftists (Was: Interesting article)

## Header Data

From: Tim May<EMAIL_ADDRESS>To: Declan McCullagh<EMAIL_ADDRESS>Message Hash: 48580635f4eba6a1491dcee220ebdbc98fe1fd8d29081a5feac56d3ddc44474d

Message ID<EMAIL_ADDRESS>Reply To<EMAIL_ADDRESS>UTC Datetime: 1997-12-03 19:03:41 UTC

Raw Date: Thu, 4 Dec 1997 03:03:41 +0800

## Raw message

```
{% raw  %}From: Tim May<EMAIL_ADDRESS>Date: Thu, 4 Dec 1997 03:03:41 +0800
To: Declan McCullagh<EMAIL_ADDRESS>Subject: Re: Censorial leftists (Was: Interesting article)
In-Reply-To<EMAIL_ADDRESS>Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

At 9:44 AM -0700 12/3/97, Tim May wrote:

>Labelled speech will be the touchstone for the next couple of decades of
>debate about censorship, hurtful speech, and mandatory voluntary
>self-ratings.
>
>"But you can say anything you wish, provided you voluntarily and accurately
>self-label your words, and provided none of the protected class members are
>offended or insulted."

I should add a brief anecdote about the mind-set these people have.

In the early 90s the city of Santa Cruz, CA, considered an "appearance
discrimination" law. It was aimed at banning discrimination on the basis of
appearance.

The cited examples were of restaurants and other businesses in town which
had rules against employees wearing nose rings, tongue studs, spiky hair,
mohawks, lip piercings, tatoos, scarification, and such things.  And
"weight discrimination," as in the also-famous case of a Santa Cruz health
food store turning down the employment application of a "person of
poundage." (The grossly obese Toni Cassista, who sued the health food store
citing weight discrimination...I believe she eventually settled out of
court.)

Inasmuch as the U.S. has not quite yet reached the point where such
"appearance discrimination" is barred under Title 7 of the 1964 Civil
Rights Act, the city fathers and mothers considered having their own
appearance discrimination law.

It was eventually tabled. Much national attention got focussed on it, as
some of you may recall. ("What will Santa Cruz think of next?")

I attended one of the public hearings, held in the Civic Center before a
crowd of several hundred. Those who spoke pubically, during the hours-long
public input, were apoplectically insistent that thoughtcrime be purged,
that restaurants and other businesses be forced to hire those with extreme
body decoration, piercing, tatooing, and such.

A woman I vaguely knew from science fiction circles, who had divorced her
husband and become a Radical Dyke (tm), summarized the view of the crowd:

"The First Amendment gives these bigots the right to think anything they
wish. But it doesn't give them the right to act on their bigoted thoughts
publically."

This view is, I think, the increasingly common view of the Left: that the
First Amendment is about private thoughts, but that public expressions of
such thoughts, either in published form or in hiring and firing decisions,
etc., is not covered by the First Amendment.

Sadly, if the Civil Rights Act is upheld, they are probably correct. Any
public utterance or publication of certain politically incorrect thoughts
is likely to be viewed as a violation of the "civil rights" of some
aggrieved minority.

(I, of course, would like to see all parts of the Civil Rights Act except
those dealing directly with _governmental_ discrimination against certain
races or gender, struck down. The Civil Rights Act should only be about
government allowing equal access to voting booths, publically-funded
facilities, etc. It should not interfere with a person's right to associate
with whom he wishes, to hire and fire whomever he wishes, and to serve or
sell to whomever he wishes. Without these rights, there is no real freedom.)

--Tim May

The Feds have shown their hand: they want a ban on domestic cryptography
---------:---------:---------:---------:---------:---------:---------:----
Timothy C. May              | Crypto Anarchy: encryption, digital money,
ComSec 3DES:<PHONE_NUMBER> | anonymous networks, digital pseudonyms, zero
W.A.S.T.E.: Corralitos, CA  | knowledge, reputations, information markets,
Higher Power: 2^2,976,221   | black markets, collapse of governments.
"National borders aren't even speed bumps on the information superhighway."

{% endraw %}
```

## Thread

+ Return to [December 1997](/archive/1997/12)

+ Return to "[? the Platypus {aka David Formosa} <dformosa@st.nepean.uws.edu.au>](/authors/_the_platypus_aka_david_formosa_dformosa_at_st_nepean_uws_edu_au_)"
+ Return to "[Adam Back <aba@dcs.ex.ac.uk>](/authors/adam_back_aba_at_dcs_ex_ac_uk_)"
+ Return to<EMAIL_ADDRESS>(Paul Spirito)](/authors/berezina_at_qed_net_paul_spirito_)"
+ Return to "[David Honig <honig@otc.net>](/authors/david_honig_honig_at_otc_net_)"
+ Return to "[Declan McCullagh <declan@pathfinder.com>](/authors/declan_mccullagh_declan_at_pathfinder_com_)"
+ Return to "[Declan McCullagh <declan@vorlon.mit.edu>](/authors/declan_mccullagh_declan_at_vorlon_mit_edu_)"
+ Return to "[Declan McCullagh <declan@well.com>](/authors/declan_mccullagh_declan_at_well_com_)"
+ Return to "[Duncan Frissell <frissell@panix.com>](/authors/duncan_frissell_frissell_at_panix_com_)"
+ Return to "[frissell@panix.com](/authors/frissell_at_panix_com)"
+ Return to "["J. Lasser" <jon@lasser.org>](/authors/j_lasser_jon_at_lasser_org_)"
+ Return to "[James Love <love@cptech.org>](/authors/james_love_love_at_cptech_org_)"
+ Return to "[Jim Burnes <jim.burnes@ssds.com>](/authors/jim_burnes_jim_burnes_at_ssds_com_)"
+ Return to "[Jon Galt <jongalt@pinn.net>](/authors/jon_galt_jongalt_at_pinn_net_)"
+ Return to "[Kent Crispin <kent@songbird.com>](/authors/kent_crispin_kent_at_songbird_com_)"
+ Return to "[Lizard <lizard@dnai.com>](/authors/lizard_lizard_at_dnai_com_)"
+ Return to "[Tim May <tcmay@got.net>](/authors/tim_may_tcmay_at_got_net_)"
+ Return to "[TruthMonger <tm@dev.null>](/authors/truthmonger_tm_at_dev_null_)"
+ Return to "["William H. Geiger III" <whgiii@invweb.net>](/authors/william_h_geiger_iii_whgiii_at_invweb_net_)"

+ _Unknown thread root_
  + 1997-12-03 (Wed, 3 Dec 1997 23:55:28 +0800) - [Censorial leftists (Was: Interesting article)](/archive/1997/12/220437ad7f56b9e2f000de908c2bdd01d4087c32a097e6ffa4a31fc09ab5ce6d) - _Declan McCullagh<EMAIL_ADDRESS>    + 1997-12-03 (Thu, 4 Dec 1997 03:03:41 +0800) - Re: Censorial leftists (Was: Interesting article) - _Tim May<EMAIL_ADDRESS>    + 1997-12-03 (Thu, 4 Dec 1997 03:16:01 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/72a6fd46a3063715b6b377639624fdaff3b5a231a34983c04cbae15dafb771af) - _David Honig<EMAIL_ADDRESS>    + 1997-12-03 (Thu, 4 Dec 1997 06:18:36 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/1be3c0edc20a4dec166104c1791186495738e0651bf336ce0e4acfd16b5e5415) - _James Love<EMAIL_ADDRESS>      + 1997-12-03 (Thu, 4 Dec 1997 07:30:08 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/c7a8f853a68b1d3480e868afcb1c14b9a99eb7c4737ef310390b2d7b52ee4ea7) - _Declan McCullagh<EMAIL_ADDRESS>        + 1997-12-04 (Thu, 4 Dec 1997 08:10:21 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/e291f7e1961ba335eb53554e0fb31c1128f778c86ef19bcbade111e31b19f4c3) - _James Love<EMAIL_ADDRESS>          + 1997-12-04 (Thu, 4 Dec 1997 09:15:17 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/9510aeafd7b64f18a52de70b11b2b94cc4a2d84e0ee456317f8c764277d41133) - _Declan McCullagh<EMAIL_ADDRESS>            + 1997-12-04 (Thu, 4 Dec 1997 08:34:01 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/8abe892b443c4dafabe0b711a84cd5e2e3c84781f90c74598bd92ff6f0c50898) - _James Love<EMAIL_ADDRESS>              + 1997-12-04 (Thu, 4 Dec 1997 09:35:30 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/250508423b3f431dfcad1a84cdf16ab88d9fa6680e66f38bb6153dfd0de3146a) - _Jim Burnes<EMAIL_ADDRESS>                + 1997-12-04 (Thu, 4 Dec 1997 09:37:08 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/7f39094c0ef06d95b6d4b89356af4553db162fdcd06363eb70a22420b522157f) - _Declan McCullagh<EMAIL_ADDRESS>                + 1997-12-04 (Thu, 4 Dec 1997 19:17:02 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/3b254be3504b8480917504d050e41301d75f89fbf3d67c72b94956a89fb6b781) - _"William H. Geiger III"<EMAIL_ADDRESS>                  + 1997-12-05 (Fri, 5 Dec 1997 18:51:19 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/398a0ae333a7d41e1905ffc3f5b354da9f363bc2938f19c2f445d56b66fbe5f2) -<EMAIL_ADDRESS>                  + 1997-12-05 (Fri, 5 Dec 1997 22:06:26 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/ffe52e74596b7266a0eb66079e57380948d241facafd7ce8a60d43b271400b06) - _? the Platypus {aka David Formosa}<EMAIL_ADDRESS>                  + 1997-12-08 (Mon, 8 Dec 1997 10:01:09 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/89740b9c12f92728ac33c66bce67b80b9c7096e6ca4ee273eb9e08ea3313b06c) - _Jon Galt<EMAIL_ADDRESS>                + 1997-12-04 (Fri, 5 Dec 1997 04:16:45 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/15c857be7d188ee10c0a9a91a143f3f0ddb7687c0ff7f840c643118e17601b83) - _"J. Lasser"<EMAIL_ADDRESS>                  + 1997-12-05 (Fri, 5 Dec 1997 08:46:37 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/bea167e5b8842e53f618a8da85dae9e4635a3a1e31f8cf6022c5e0127ba940c1) - _Jim Burnes<EMAIL_ADDRESS>                    + 1997-12-05 (Fri, 5 Dec 1997 22:51:18 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/a36bc329d4e0c4700d3b4947fb28407020c91f121b83104cd1b8f30e60d9a6a3) -<EMAIL_ADDRESS>(Paul Spirito)_
                    + 1997-12-05 (Sat, 6 Dec 1997 04:40:51 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/9d0c0064c64d5ca06443d8a7ca4db7faf489af5e056cc8126cffe7df7a9efd47) - _Duncan Frissell<EMAIL_ADDRESS>                      + 1997-12-06 (Sat, 6 Dec 1997 08:07:26 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/fb61e0ac154138f913db9093fbb8f07da5ab317e8ed48e048985c08899e7ad91) - _Declan McCullagh<EMAIL_ADDRESS>                      + 1997-12-06 (Sat, 6 Dec 1997 09:04:00 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/752c3c459fc321561afadf9c99612d4b38f695a7d13eb70f5dc55aafd4ec2209) -<EMAIL_ADDRESS>(Paul Spirito)_
                      + 1997-12-06 (Sat, 6 Dec 1997 14:01:16 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/054b6cdfab7fa7d999d0caa0a7a1664250a1069cf86d9fce8fabbbe4185b4e25) - _"William H. Geiger III"<EMAIL_ADDRESS>                    + 1997-12-05 (Sat, 6 Dec 1997 06:34:18 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/5924f9811af082b983401f3bde994278bf59044c1b2b9e9071157d4707a9b7fd) -<EMAIL_ADDRESS>(Paul Spirito)_
                      + 1997-12-06 (Sat, 6 Dec 1997 11:03:38 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/159744b60d57899ad3a99214d57946877c6878a51a0e806955f3cf5f53580eb0) - _Tim May<EMAIL_ADDRESS>                  + 1997-12-05 (Fri, 5 Dec 1997 10:09:21 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/9d6063a5e1b3c27bbf920f9448e5dc2c222d82267cfd090c81a7a62f0523e040) - _Kent Crispin<EMAIL_ADDRESS>                    + 1997-12-05 (Sat, 6 Dec 1997 03:54:35 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/dd006ba33a8ef82f554e1cedc060b254064d4ba8ca02b25ee6113c0596fc271d) - _Jim Burnes<EMAIL_ADDRESS>                  + 1997-12-05 (Fri, 5 Dec 1997 10:19:54 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/5fc61350728e4b99ddfc8de375040a163e488af14d492f31ce8a5fb04ea51213) - _Declan McCullagh<EMAIL_ADDRESS>                + 1997-12-05 (Fri, 5 Dec 1997 10:26:41 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/cbac1d3ac80582518ae152a840f128ffdb3acb6bf7a16692d3edc880a5eb317d) -<EMAIL_ADDRESS>                + 1997-12-26 (Sat, 27 Dec 1997 01:51:39 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/860d126a84b9bfe5174ccbd65ca97195a467b2aceba0d4742b34b0aa32c87b9e) - _Kent Crispin<EMAIL_ADDRESS>              + 1997-12-04 (Thu, 4 Dec 1997 15:16:21 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/bb5bf61083e2dde51e418f79dd11baf0c60175c4856b22ce23e3ff013279fe01) - _Kent Crispin<EMAIL_ADDRESS>                + 1997-12-04 (Thu, 4 Dec 1997 16:11:33 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/0a1ffea6d483c202607f793a617fa74b27c71c015cd69fe72c04086b594db3d1) - _"William H. Geiger III"<EMAIL_ADDRESS>            + 1997-12-05 (Fri, 5 Dec 1997 18:50:48 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/77285211a7b86c27857eb971183faee60fffce100977674dd0b6e611b9e7dedd) -<EMAIL_ADDRESS>(Paul Spirito)_
          + 1997-12-04 (Thu, 4 Dec 1997 10:19:10 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/d155c5788fccfd476e25e5eedab3dba3d787ae5cb693df06d23a10f7dfe511e9) - _Adam Back<EMAIL_ADDRESS>        + 1997-12-04 (Thu, 4 Dec 1997 08:39:06 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/3ba6bdff7af2cd1c1193232967567bcf8426940ff3b12833103efbfaad62fe84) - _James Love<EMAIL_ADDRESS>        + 1997-12-04 (Thu, 4 Dec 1997 11:22:11 +0800) - [Re: Censorial leftists (Was: Interesting testicle)](/archive/1997/12/608f30aee685cbbcc13546c409432601b6cef58ed9cf45250e4d441a5dc3e2e9) - _TruthMonger<EMAIL_ADDRESS>          + 1997-12-04 (Fri, 5 Dec 1997 02:05:47 +0800) - [Re: Censorial leftists (Was: Interesting testicle)](/archive/1997/12/a27e2ac2274f281aa515c6b28314fc3a5ca3fc899922037914e6c627ccf303bd) - _Jim Burnes<EMAIL_ADDRESS>            + 1997-12-04 (Fri, 5 Dec 1997 03:30:16 +0800) - [Re: Censorial leftists (Was: Interesting testicle)](/archive/1997/12/7ee63438c964f17219d0b3a886a6ba42f6e9f23b32a90690a15ddba4214d269d) - _TruthMonger<EMAIL_ADDRESS>      + 1997-12-04 (Thu, 4 Dec 1997 18:02:32 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/45e0949504044d4ad0cf90b47a5fb39887a8a28e9e208817f65b855202da89b6) - _"William H. Geiger III"<EMAIL_ADDRESS>    + 1997-12-04 (Thu, 4 Dec 1997 09:06:14 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/31f8fc527a210ff7a3c6fb11e64d09327f00f9443996135f32029b82cd5399e9) - _David Honig<EMAIL_ADDRESS>    + 1997-12-04 (Thu, 4 Dec 1997 09:39:34 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/9c950e745f7ddd739f302df1e9dd44ccb1a27bb37031d4aa8e82b88698dbb32e) - _Lizard<EMAIL_ADDRESS>    + 1997-12-04 (Thu, 4 Dec 1997 11:54:26 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/935b53216f7e3bb64d3921b6e6211a2d8fe686e318291797bd9afbbd22843a7c) - _James Love<EMAIL_ADDRESS>      + 1997-12-04 (Thu, 4 Dec 1997 13:29:31 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/f06f0dd0a26c45ba3e3cbc8ee9fd0f0b91fbde5bc7a6e2954259b4dcf02bbf23) - _"William H. Geiger III"<EMAIL_ADDRESS>        + 1997-12-04 (Fri, 5 Dec 1997 01:50:42 +0800) - [Kudos to 'my other brother' BillyG / Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/00b3fe9fdd243e06dd045905b046820181e5934e0978b550b3deea75752f8824) - _TruthMonger<EMAIL_ADDRESS>      + 1997-12-04 (Thu, 4 Dec 1997 14:37:20 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/437f41f83fa599d07c72e0aa9403d3fa41962978edb29ebe772a9ca5b13ab49d) - _Lizard<EMAIL_ADDRESS>    + 1997-12-04 (Thu, 4 Dec 1997 14:14:14 +0800) - [Re: Censorial leftists (Was: Interesting article)](/archive/1997/12/c0531da2d8912a07ecb82f89012432fae599f11f1154bda82482873c38002a6d) - _Declan McCullagh<EMAIL_ADDRESS>


text:
[consul](http://www.consul.io) is an orchestration mechanism with fault-tolerance based on the gossip protocol and a key/value store that is strongly consistent. Hiera-consul is a backend for Hiera using Consul as its data source.

## Configuration

The following hiera.yaml should get you started:

    :backends:
      - consul

    :consul:
      :paths:
        - kv/configuration/%{fqdn}
        - kv/configuration/common

## Extra parameters

The following parameters are also valid and available:

    :consul:
      :host: <IP_ADDRESS>
      :port: 8500
      :protocol: 1
      :failure: consistent
      :ignore_absent: true
      :use_ssl: false
      :ssl_verify: false
      :ssl_cert: /path/to/cert
      :ssl_key: /path/to/key
      :ssl_ca_cert: /path/to/ca/cert

## Query the catalog

You can also query the Consul catalog for values by adding catalog resources
in your paths, the values will be returned as an array so you will need to
parse accordingly.  Note that hiera_hash is not supported with Consul's
catalog endpoint.

    :backends:
      - consul

    :consul:
      :paths:
        - kv/configuration/%{fqdn}
        - kv/configuration/common
        - catalog/service
        - catalog/node

## Thanks

Thanks to @lynxman, @garethr and @crayfishx, as well as @puppetlabs for the projects this draws from:

* [hiera-consul](https://github.com/lynxman/hiera-consul)
* [hiera-etcd](https://github.com/garethr/hiera-etcd)
* [hiera-http](https://github.com/crayfishx/hiera-http)
* [hiera](https://github.com/puppetlabs/hiera)

Thanks also to @mitchellh for writing such wonderful tools and the [API Documentation](http://www.consul.io/docs/agent/http.html)

repository: mmickan/hiera-consul

repo_name: mmickan/hiera-consul


text:
# ![](https://cdn.asp-waf.com/img/FireWall.png) ASP-WAF Sample Application Firewall
The bellow sample shows a minimal MVC application that could execute in .net Core 3.1 or .Net 5.x
The sample is intentionally kept minimalistic so that it's easy to follow and replicate.

## The setup
The absolute first thing needed is the [firewall NuGet package](https://www.nuget.org/packages/Walter.Web.FireWall/). You can install it any way you like, ideal however is to get if from NuGet the way you get all your packages.

### Step 1 Inject the firewall
After having downloaded and installed that latest firewall version you are ready to integrate the firewall with
the dependency injection of .net this sample demonstrates this in the [Startup.cs](https://github.com/ASP-WAF/FireWall/blob/master/Samples/MVC_Core_31_Application/MVC_Core_31_Application/Startup.cs) file of this project as shown in the bellow sample.

```c#
/*Inject the firewall with a given configuration in your application
* You can use your own class and derive the firewall from that as a base class
*  then you can tune the configuration options to reflect your preferences
*  see the online documentation for more information on the configuration options
*  at https://firewallapi.asp-waf.com/?topic=html/AllMembers.T-Walter.Web.FireWall.IFireWallConfig.htm
*
*  The sample configuration can also be stored and loaded in json configuration, perhaps make the configuration
*  in code first and then save it as json to get started as the number of configuration options are abundant
*/
services.AddFireWall<MyFireWall>(FireWallTrial.License, FireWallTrial.DomainKey, new Uri("https://www.mydomain.com", UriKind.Absolute), options =>
{
    options.Cypher.ApplicationPassword = "The password is 5 x 5, but I will not say in what order!";
    options.UseSession = true;

    //set the default security rule engines to reflect that you have a website and API requests for JavaScripts and monitoring
    options.FireWallMode = FireWallProtectionModes.WebSiteWithApi;

    //configure the firewall endpoints used when user discovery is used for web applications that support JavaScript
    options.WebServices.IsUserApiUrl = new Uri(Links.IsUserEndpoint, UriKind.Relative);
    options.WebServices.RegisterLinksApiUrl = new Uri(Links.SiteMapEndPoint, UriKind.Relative);
    options.WebServices.BeaconApiUrl = new Uri(Links.BeaconPoint, UriKind.Relative);
    options.WebServices.CSPReportUrl = new Uri(Links.CSP, UriKind.Relative);

    //tell the duration a malicious user is to be blocked
    options.Rules.BlockRequest.BlockDuration.Expires = TimeSpan.FromMinutes(5);
    options.Rules.BlockRequest.BlockDuration.SlideExpiration = true;

    //you can set the log levels for incident detection as well as firewall guard actions
    //manually. The namespace for the logger is at Walter.Web.FireWall.Guard
    options.Rules.IncidentLogLevel = LogLevel.Information;
    options.Rules.GuardActionLogLevel = LogLevel.Warning;

    //set the rules for browser based protection, the firewall can do without them but the extra layer of defense does not hurt
    //having set the rules also helps the firewall understand your intend and help sniff-out bots that are violating the rules that
    //the browser would have detected and rejected. Header protection is "camouflage" as well as adds an active layer of protection
    options.Rules.Headers.AddDefaultSecurePolicy()
                         .AddFrameOptionsDeny()
                         .AddStrictTransportSecurityNoCache()
                         .DoNotTrack()
                         .SimulateDifferentServer(Walter.Web.FireWall.Headers.ServerSimulation.Apache249Unix)
                         .SimulateDifferentTechnologyStack(Walter.Web.FireWall.Headers.StackSimulation.PHP)
                         .AddXssProtectionBlockAndReport(Links.CSP)
                         .AddContentSecurityPolicyTrustOnlySelf();

})//store firewall state in a database making the firewall faster and allow it for the firewall to maintain large data volumes
    .UseDatabase(connectionString: Configuration.GetConnectionString("FireWallState"), schema: "dbo", dataRetention: TimeSpan.FromDays(90));
````

The above sample is not the *minimal configuration* and you will likely specify quite a few more attributes but
it highlights some of the more popular settings and helps you get started. We recommend to use your IntelliSense
and have a look at what’s available or view the [online documentation](https://firewallapi.asp-waf.com/?topic=html/AllMembers.T-Walter.Web.FireWall.IFireWallConfig.htm).

### 2nd setup step - Activate the firewall on each request
Still in the ConfigureServices method of the setup.cs class you will need to update the way the
MVC pipeline executes by registering the firewall filter. The bellow sample registers the firewall
as well as the privacy filter that will inform your browser of the header configuration privacy settings.

````c#
//configure the firewall to be active on each request by registering the firewall filter
services.AddMvc(setupAction =>
{
    //enable the firewall on all endpoints in this application
    setupAction.Filters.Add<Walter.Web.FireWall.Filters.FireWallFilter>();
    //inform the browser of our privacy policy if you render views
    setupAction.Filters.Add<Walter.Web.FireWall.Filters.PrivacyPreferencesFilter>();
});
````

### 3rd Setup step (if using views can be skipped if you only use API endpoints)
Have a look at _layout.cshtml and you may notice that we have integrated user detection using the same string
constant as used in the controllers\UserDiscoveryController.cs and Startup.cs file by using this code snippet.

The sample assumes that you create your own user discovery controller and not use the [Walter.Web.FireWall.DefaultEndpoints NuGet Package](https://www.nuget.org/packages/Walter.Web.FireWall.DefaultEndpoints/)
```html
    @*Inject firewall user discovery script in the view template*@
    <script src="@Url.Content(MVC_Core_31_Application.Links.UserEndpointJavaScript)"></script>
    @*
```

As you do not use the [Walter.Web.FireWall.DefaultEndpoints](https://www.nuget.org/packages/Walter.Web.FireWall.DefaultEndpoints/) NuGet Package this sample shows how to feed the User discovery data back to the firewall in the [Controllers\UserDiscoveryController.cs file](https://github.com/ASP-WAF/FireWall/blob/master/Samples/MVC_Core_31_Application/MVC_Core_31_Application/Controllers/UserDiscoveryController.cs).

## Test the implementation
You can query the firewall state as well as monitor the health by using the build-in API as shown in the bellow sample.
The URL to the project would be ~/API/Reporting/Text and is defined in the previousely mentioned [Controllers\UserDiscoveryController.cs](https://github.com/ASP-WAF/FireWall/blob/master/Samples/MVC_Core_31_Application/MVC_Core_31_Application/Controllers/UserDiscoveryController.cs) file

````c#
/// <summary>
/// an API endpoint that can be called from an API endpoint and is protected using the firewall rule-set for
/// API Endpoints
/// </summary>
/// <remarks>
/// there is also a Json version allowing you to automate monitoring
/// </remarks>
/// <returns>the text report of the firewall, </returns>
[Ignore(skip: FireWallGuardModules.API_ENDPOINT_LAX)]
[NoCache]
[HttpGet("API/Reporting/Text")]
public string Get()
{
    Response.Headers["X-Remote-Address"] = _page.IPAddress.ToString();
    Response.Headers["Connection"] = "Close";
    Response.Headers["Cache-Control"] = "no-cache";
    Response.ContentType = "text/plain";
    var list = new StringBuilder();
    list.AppendLine($"Firewall version: {_fireWall.FirewallModuleVersion} status {_fireWall.State} license {_fireWall.License.LicenseKey.Domain.DomainUrl}: {_fireWall.License.LicenseKey.LicenseLevel}");
    list.AppendLine("---------------------------------------------------");

    //if called from inside the LAN
    if (_page.IPAddress.IsInLocalSubnet())
    {
        list.AppendLine(_fireWall.Report(ReportTypes.ALL));
    }
    else
    {
        list.AppendLine(_fireWall.Report(ReportTypes.Activity | ReportTypes.KPI));
    }

    if (!(_page.Exception is null))
    {
        list.AppendLine("---------------------REQUEST-----------------------");
        list.Append(_page.ToString());

    }
    list.AppendLine("---------------------------------------------------");
    return list.ToString();
}
````


text:
# [eSteem Surfer 2][esteem_desktop] – Steem Desktop Client

🎉 This is the complete source code and the build instructions of the [Steem blockchain](https://steem.io/) desktop client **eSteem Surfer 2** founded by [Feruz M](https://steemit.com/@good-karma) and Lead Surfer [Talha](https://steemit.com/@talhasch), supported by [eSteem team](https://steemit.com/@esteemapp) and vast Steem community contibutors.

![Preview of eSteem Surfer](https://user-images.githubusercontent.com/1177676/48030022-b4614000-e147-11e8-8204-f7c4355a6ac7.png)

## What is already implemented

- Surfing your feed and trending/hot stuff
- Creating new posts
- Commenting
- Voting with any %
- Reading replies/comments/mentions
- Drafts `synced with eSteem Mobile`
- Post Schedules `synced with eSteem Mobile`
- Bookmarks `synced with eSteem Mobile`
- Favorites `synced with eSteem Mobile`
- Comments/Memo Encryption
- Night Mode (Dark Theme)
- Wallet Transfers
- Image Gallery
- Detailed Voters Info
- Witness Voting

More functions are coming!

## Supported systems

- Windows XP - Windows 10
- Mac OS X 10.6 - Mac OS X 10.14
- Ubuntu 12.04 - Ubuntu 18.04
- Fedora 22 - Fedora 24

## Build instructions

### Requirements

- node ^6.14.0 || ^8.10.0 || >=9.10.0
- yarn

### Clone

```
$ git clone https://github.com/eSteemApp/esteem-surfer
$ cd esteem-surfer
```

### Install dependencies

```
$ yarn
```

### Create a dummy config.js

This is for the backend server configuration. Actual server addresses are not needed for most functions.

```
$ cp app/config.example.js app/config.js
```

### Run in development mode

```
$ npm run dev
```

### Package

```
$ npm run package
```

### Test

```
$ npm run test
```

[//]: # 'LINKS'
[esteem_desktop]: https://esteem.app

repository: elieltavares/steem-surfer

gha_language: JavaScript

repo_name: elieltavares/steem-surfer


text:
---
layout: default
---

# 1995-10-18 - Re: Netscape rewards are an insult

## Header Data

From<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: ae2972dc737a62a7bd855dc6b5e2c733da5f736ee00bf5cd0df2b8891a698c53

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1995-10-18 18:41:00 UTC

Raw Date: Wed, 18 Oct 95 11:41:00 PDT

## Raw message

```
{% raw  %}From<EMAIL_ADDRESS>Date: Wed, 18 Oct 95 11:41:00 PDT
To<EMAIL_ADDRESS>Subject: Re: Netscape rewards are an insult
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

Jeff Weinstein<EMAIL_ADDRESS>wrote:
> David A Wagner wrote:
> > I do think their ``bug bounty'' system is an improvement -- at least
> > they're showing some concern for security, and beginning to admit
> > that outside review of security-critical code is...well...critical.
>
>   The whole bug bounty thing is an experiment.  We have no idea how
> valuable it will be, but we thought it would be worth trying.  As we
> gain more experience with it, we will probably evolve it.

Mr, Weinstein:

Is your comment about the "Bugs Bounty" program an official comment, that
you have "no idea how valuable" it will be??  Shall I give you a clue,
as to how valuable the discovery of a flawed algorithm might be??

How valuable do you think the ability to download an entire geo-physical
company's 3-D seismic data base is, while some company temp is looking at
a pretty picture of Moo Goo Gai pan, or downloading a recipe for goat-cheese
salad with ginger and macadamia nuts??

Why not admit that the whole Bugs Bounty program was a sham.  Nothing more
than a quickly slapped together public-relations program, that tried to
create an appearance that Netscape had a pro-active business plan.

Is it because there WAS no plan, whatsoever??

Why not admit that you were forced to take action and show that you were
"doing something" following the crack of the Netscape browser that was
supposed to protect sensitive information such as credit-card transactions.
And why not admit that what you did was raid a couple of left over press
kits, and take out some shirts and cups and throw together a damage control
program.  Your so-called "Bugs Bounty" program.

Is it because, a program that says that anyone who reports a "bug" in your
two billion dollar software wouldn't be rewarded -- no, they would
be entered into a draw where they _might_ could get a chance to win a cup
or a shirt??  Or they might receive a $1,000 reward as long as they agree
to a waiver of all their rights, and agree that by reporting the problem to
Netscape and entering the "Bugs Bounty" contest, that their report would:

   "become Netscape's property to be used at Netscape's sole discretion"

Is it because, this simply doesn't pass the giggle test??  And is
demonstrative of such a cavalier internal attitude and approach to
security that it can only be characterized as the grossest of misconduct?

I'm certain that even the marketing people must have burst into peals of
laughter at that one.

Why not admit that Netscape never thought that anyone would find anything at
all??  Why not admit that Netscape thought that they could weasal out of the
Berkeley crack, with a nice little pat on the head to the kids who found it??
Why not admit that not only did Netscape not have an action plan for "bugs"
prior to the "Berkeley crack", but doesn't have any action plan following it.

Why not admit that none of the cocky boys at Netscape had even considered
what would be done if there was an easily exploitable critical design flaw
in the algorithm.

And now that someone took Netscape up on its challenge, and simply said that
the emperor has no clothes, now that someone hasn't just discovered a "bug"
like the "Berkeley crack" but has demonstrated that the Netscape algorithm
is fatally flawed, by posting the exploitation algorithm, now what??

Good God, I asked for clarification from Netscape last Thursday, and Netscape
hasn't bothered to even return my email from almost a week ago.  And, after
posting the exploitation algorithm last week -- on Friday the Thirteenth --
there has been nothing but public relations huff-and-puff.

Clearly, no one performed adequate top-down / bottom-up analysis at Netscape.
And both the internal and external review process were woefully inadequate.

Or to steal a line from Jonathan Swift, in Gulliver's Travels.  Are you,

        "a most ingenious Architect who had contrived a new
         Method for building Houses, by beginning at the Roof,
         and working downwards to the Foundation ..."

and then done nothing else, but issue press-releases to hype and promote
Netscape stock in some self-centered attempt to help out your "friends"
on Wall Street.

>> Still, I do agree that they really oughta be employing true experts
>> to carefully evaluate their system, if they wanna claim anything about
>> its security.
>
>  We are doing that to.  We are paying outside consultants to review
>everything related to security.

Oh yep, I bet you're paying them.

I wonder ... are you paying them in shirts or migs, for their white-wash
review??  And will the report from the external review become "Netscape's
sole property to be used at the sole discretion of Netscape".

Which consultants are you going to get, Mister (unofficial, off the record
speaking personally, not speaking for the Company) Netscape spokesperson??

Who?  AT&T??

AT&T has security people.  The phone company, has very good security
people. And the phone company is supposed to have good quality control,
(ISO-9000 or TQM or something ...) yet AT&T's own internal security
review missed this gaping gash in Netscape browser software.  Even now,
AT&T is using this software internally within its business units and is
ACTIVELY recommending a co-branded version of it to its worldwide customers.

Has Netscape informed AT&T about this??

I'm sure that Netscape has piled their best people into their Falcon and
are busily jetting them around the world signing confidentiality
agreements and retaining every possible outside consultant.  Entering into
agency agreements to keep the lid on the biggest international news story
since the Tylenol or Perrier poisoning.

I wonder who Netscape will get to sign??  Who's going to lend their name,
so that Netscape can say that "we're working closely with Jerry Lewis" or
something similar to solve our security problems.

But Mr.Lewis can't go public with what he knows, can he??  Even if he knows
that Netscape is fatally flawed.  Mr. Lewis will be a Netscape agent at that
point, won't he??  And he'll be bound by the terms of his confidentiality
agreement, even if the company is actively strategically misrepresenting
his confidential report.

Who's going to be left after Netscape hires all these outside consultants??
Who do you hire??  Euro-Mickey, Minny and Donald Duck??

Captain Kangaroo??

Alice de 'nonymous ...

                                  ...just another one of those...

P.S.  This post is in the public domain.
                  C.  S.  U.  M.  O.  C.  L.  U.  N.  E.

{% endraw %}
```

## Thread

+ Return to [October 1995](/archive/1995/10)

+ Return to "[anonymous-remailer@shell.portal.com](/authors/anonymousremailer_at_shell_portal_com)"
+ Return to "[Dan Marner <dmarner@mis.nu.edu>](/authors/dan_marner_dmarner_at_mis_nu_edu_)"
+ Return to<EMAIL_ADDRESS>(Futplex)](/authors/futplex_at_pseudonym_com_futplex_)"
+ Return to "[sameer <sameer@c2.org>](/authors/sameer_sameer_at_c2_org_)"

+ 1995-10-18 (Wed, 18 Oct 95 11:41:00 PDT) - Re: Netscape rewards are an insult -<EMAIL_ADDRESS>  + 1995-10-18 (Wed, 18 Oct 95 12:46:03 PDT) - [Re: Netscape rewards are an insult](/archive/1995/10/ad4812e7fe7b267eea3b52f0b29e33a7a2ee2710a93be0fab90e6918422481be) - _sameer<EMAIL_ADDRESS>  + 1995-10-18 (Wed, 18 Oct 95 13:28:47 PDT) - [[NOISE] Re: Netscape rewards are an insult](/archive/1995/10/f41f74e2781daaf197dfe10f249c4eb3383d2cf666e73b7462d996c45d2bcdd3) -<EMAIL_ADDRESS>(Futplex)_
  + 1995-10-18 (Wed, 18 Oct 95 14:51:43 PDT) - [[NOISE] Re: Netscape rewards are an insult](/archive/1995/10/2229f9178007678024e84db7be17aaaee00798846a783061a21413b3000e8df6) - _Dan Marner<EMAIL_ADDRESS>


text:
Introduction
===
Kali Linux comes with the tool ike-scan pre-installed already. However, what happens if you need to run this against 50 VPN gateways? Sure you can wrap it in a for loop, but this tool simplifies this process by outputting the PSK in a file (if found) for each respective device, and also provides a nice output table for you. The table looks great for reporting purposes. :)

Instructions
===
Create a file that contains a list of IP addresses (of VPN gateways) and then run the tool. Here's an example of the usage menu:

[07.22.2017/21:34:09] root@box $ ./ike-aggressive-scanner.rb

  --------------------------------------------------------------------
    IKE Aggressive Mode Scanner - Alton Johnson<EMAIL_ADDRESS>  --------------------------------------------------------------------

  Usage: ./ike-aggressive-scanner.rb -f vpn_gateways.txt

  -f <file>    Specifies file containing IP addresses for scanning.

repository: altjx/ipwn

repo_name: altjx/ipwn


text:
---
site: freiburg
tags: [tools]
title: UseGalaxy.eu Tool Updates for 2021-06-19
supporters:
- denbi
- elixir
---

On 2021-06-19, the tools on UseGalaxy.eu were updated by our automated tool update and installation process in [Jenkins Build #278](https://build.galaxyproject.eu/job/usegalaxy-eu/job/install-tools/#278/)

## Proteomics

- maxquant was updated to [d72c96ad9a16](https://toolshed.g2.bx.psu.edu/view/galaxyp/maxquant/d72c96ad9a16)
- metaquantome_db was updated to [860429737408](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_db/860429737408)
- metaquantome_expand was updated to [4187b6df1a40](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_expand/4187b6df1a40)
- metaquantome_filter was updated to [a1daafbf5233](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_filter/a1daafbf5233)
- metaquantome_sample was updated to [40ca115438d2](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_sample/40ca115438d2)
- metaquantome_stat was updated to [b648e45fd3cf](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_stat/b648e45fd3cf)
- metaquantome_viz was updated to [eb811f3018ea](https://toolshed.g2.bx.psu.edu/view/galaxyp/metaquantome_viz/eb811f3018ea)
- openms_openpepxl was updated to [40cc19c0dbd6](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_openpepxl/40cc19c0dbd6)
- openms_openpepxl was updated to [a2a842b00f9c](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_openpepxl/a2a842b00f9c)
- openms_openpepxl was updated to [fc36cfd19834](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_openpepxl/fc36cfd19834)
- openms_percolatoradapter was updated to [0fc9ae55bcfc](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_percolatoradapter/0fc9ae55bcfc)
- openms_percolatoradapter was updated to [e7881a82b56d](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_percolatoradapter/e7881a82b56d)
- openms_xfdr was updated to [81402a5e4173](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_xfdr/81402a5e4173)
- openms_xfdr was updated to [9a6e3bb0f358](https://toolshed.g2.bx.psu.edu/view/galaxyp/openms_xfdr/9a6e3bb0f358)

## Metagenomic Analysis

- lotus2 was updated to [30340f534fbe](https://toolshed.g2.bx.psu.edu/view/earlhaminst/lotus2/30340f534fbe)
- customize_metaphlan_database was updated to [487da152fb43](https://toolshed.g2.bx.psu.edu/view/iuc/customize_metaphlan_database/487da152fb43)
- extract_metaphlan_database was updated to [b6ecdfac241f](https://toolshed.g2.bx.psu.edu/view/iuc/extract_metaphlan_database/b6ecdfac241f)
- merge_metaphlan_tables was updated to [27258eb73f0c](https://toolshed.g2.bx.psu.edu/view/iuc/merge_metaphlan_tables/27258eb73f0c)
- metaphlan was updated to [a92a632c4d9b](https://toolshed.g2.bx.psu.edu/view/iuc/metaphlan/a92a632c4d9b)

## Assembly

- salsa was updated to [ba7b0f11e470](https://toolshed.g2.bx.psu.edu/view/iuc/salsa/ba7b0f11e470)

## Phylogenetics

- hyphy_absrel was updated to [5a2b7f3d05e8](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_absrel/5a2b7f3d05e8)
- hyphy_annotate was updated to [0cd45491b297](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_annotate/0cd45491b297)
- hyphy_bgm was updated to [31e1a5940620](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_bgm/31e1a5940620)
- hyphy_busted was updated to [70fab57f3c05](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_busted/70fab57f3c05)
- hyphy_busted was updated to [72b10710c4b7](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_busted/72b10710c4b7)
- hyphy_cfel was updated to [4d712e32039e](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_cfel/4d712e32039e)
- hyphy_conv was updated to [1fdaf5c6a59f](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_conv/1fdaf5c6a59f)
- hyphy_fade was updated to [5e8d0e777033](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_fade/5e8d0e777033)
- hyphy_fade was updated to [7ae1a772f08e](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_fade/7ae1a772f08e)
- hyphy_fel was updated to [8276bb2adea5](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_fel/8276bb2adea5)
- hyphy_fel was updated to [8c9d8b5af4e4](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_fel/8c9d8b5af4e4)
- hyphy_fubar was updated to [1278a55205e5](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_fubar/1278a55205e5)
- hyphy_gard was updated to [1fb98a84e86d](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_gard/1fb98a84e86d)
- hyphy_gard was updated to [b8a7f604708e](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_gard/b8a7f604708e)
- hyphy_meme was updated to [0052303cfa41](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_meme/0052303cfa41)
- hyphy_prime was updated to [6d29207a32c5](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_prime/6d29207a32c5)
- hyphy_prime was updated to [d8092fd69175](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_prime/d8092fd69175)
- hyphy_relax was updated to [a4c5dc437558](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_relax/a4c5dc437558)
- hyphy_relax was updated to [be29e2137d32](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_relax/be29e2137d32)
- hyphy_slac was updated to [0c6724c345d9](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_slac/0c6724c345d9)
- hyphy_slac was updated to [67d3fc9ae1c3](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_slac/67d3fc9ae1c3)
- hyphy_sm19 was updated to [36e40d93e8a3](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_sm19/36e40d93e8a3)
- hyphy_sm19 was updated to [50c12e254867](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_sm19/50c12e254867)
- hyphy_strike_ambigs was updated to [4bf743518e41](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_strike_ambigs/4bf743518e41)
- hyphy_strike_ambigs was updated to [79dc560d8ea3](https://toolshed.g2.bx.psu.edu/view/iuc/hyphy_strike_ambigs/79dc560d8ea3)

repository: usegalaxy-eu/website

gha_language: TeX

repo_name: usegalaxy-eu/website


text:
### Adding an Azure Cloud Integration

Adding an Azure cloud integration requires establishing a trust relationship between Azure and Wavefront. Follow the instructions on the left to establish this trust relationship.

The process first creates an Azure Active Directory application that represents Wavefront inside Azure. Then you retrieve information for that application, and paste it into the form on the far left to complete the trust setup.

repository: peyao/help

repo_name: peyao/help


text:
# Linear Algebra

* [real_toeplitz_solve.ipynb](https://github.com/numericalalgorithmsgroup/NAGPythonExamples/blob/master/linear_algebra/real_toeplitz_solve.ipynb) - An example that shows how making use of matrix structure can substantially speed up the solution of large linear systems

repository: shuanghuabai/NAGPythonExamples

repo_name: shuanghuabai/NAGPythonExamples


text:
What does FileLibrary do
=============================
It allows to serve static files directly from seaside without the need for a standalone server like Apache or to configure Kom. These files can reference each other (say a CSS references an image) and can be distrubuted the same way as normal Smalltalk code (Monticello, SqueakMap, ...).

Each file in a file library is represented by a method. The method name is created from the file name, the dot is removed and the first letter of the suffix in capitalized. This puts certain limitations to the allowed filenames. Eg. 'main.css' becomes #mainCss.

Like Script- and StyleLibraries FileLibraries can be added to an application so that they automatically include themselves in the document root. Implement #selectorsToInclude and return the selectors you whish to be added to the document root.

How to create a FileLibrary
================================
- First create the static files and put them in some directory. From there they can reference the other files in the same directory normally with their filenames.
- Make sure you have a "Files" entry that serves your files. This is a normal entry point type that you can find in your /seaside/config application. If you don't already have one, you can create it if you select "Files" in the type field of the "add entry point" dialog. For the rest of this text we assume you chose "files" as the path.
- Create a subclass of WAFileLibrary, for the rest of this text I assume its name is MyFileLibrary.
- To add the files to your file library there are two ways.
1. Programmatically with MyFileLibrary class >> #addAllFilesIn: / #addFileNamed:. For example MyFileLibrary addAllFilesIn: '/path/to/directory/with/files' or MyFileLibrary addFileNamed: '/path/to/background.png'.
2. Via the web interface. Go to your /seaside/config application and there click configure for your "Files". Click "configure" behind MyFileLibrary. There you can add a file by uploading it (select the file, then click "Add")

Note that a "Files" can consist of several file libraries and can even have tradional script or style libraries.

How to integrate a FileLibrary into your application
=============================================================
Files from a FileLibrary are ingetrated the same way other static files are integrated. They have a constant path that is '/seaside/<Static File Library>/<FileLibrary class name>/<filename>' so for example '/seaside/files/MyFileLibrary/background.png'. These can be conveniently generated by 'MyFileLibrary / #aSelector' where #aSelector is the name of the method representing that file. For example 'MyFileLibrary / #backgroundPng'.

How to get back the files in a FileLibrary
=================================================
The contents of a file library can be written out to disk. Writing out a file library first makes a folder with the name of the file library in the folder of your Smallatlk image. Then a file for each file in the file library is created in this folder. Writing out to disk can happen in three ways
1. MyFileLibrary default deployFiles
2. Via the configuration interface of the file library. On the same page where you can add files to your file library there is also a button 'write to disk' which will write out all the files in this library.
3. Via the configuration interface of your application. In the section where you can add libraries to your application there is a a button 'write to disk' which will write out all the libraries of this application.

Examples:
==========

The following code uses WAFileLibrary to add a CSS file to a page.

updateRoot: anHtmlRoot
	super updateRoot: anHtmlRoot.
	anHtmlRoot stylesheet
		url: WAFileLibraryDemo / #mainCss

The folllowing code uses WAFileLibrary to display an image.

renderContentOn: html
	html image
		url: WAFileLibraryDemo / #mainJpg

Trouble Shooting:
==========
Earlier versions would create methods without a time stamp. You can fix this by recompiling these methods by adapting the following code

SUAllTestLibrary basicNew in: [ :library |
	#(demologoGif headerGif backgroundGif demoGif logoGif menuGif) do: [ :each |
		library class
			addFileNamed: (library asFilename: each)
			contents: (library perform: each) ] ]

repository: SeasideSt/Seaside

gha_language: Smalltalk

repo_name: SeasideSt/Seaside


text:
# Acts 06 General Notes
## Special concepts in this chapter

### The distribution to the widows

The believers in Jerusalem gave food every day to women whose husbands had died. All of them had been raised as Jews, but some of them had lived in Judea and spoke Hebrew, and others had lived in Gentile areas and spoke Greek. Those who gave out the food gave it to the Hebrew-speaking widows but not to the Greek-speaking widows. To please God, the church leaders appointed Greek-speaking men to make sure the Greek-speaking widows received their share of the food. One of these Greek-speaking men was Stephen.

 It is best for the translation to say only what the ULT says about this.

repository: mandolyte/uw-obsidian

branch_name: refs/heads/main

repo_name: mandolyte/uw-obsidian


text:
[![Docker Pulls](https://img.shields.io/docker/pulls/xbgmsharp/docker-magicmirror.svg)](https://hub.docker.com/r/xbgmsharp/docker-magicmirror/)[![Build Status](https://travis-ci.com/xbgmsharp/docker-MagicMirror.svg?branch=master)](https://travis-ci.com/xbgmsharp/docker-MagicMirror)

# Docker MagicMirror²

This multi architecture Alpine Linux based Docker image allows you to run [MagicMirror²: The open source modular smart mirror platform.](https://github.com/MichMich/MagicMirror)

**MagicMirror²** is an open source modular smart mirror platform. With a growing list of installable modules, the **MagicMirror²** allows you to convert your hallway or bathroom mirror into your personal assistant.

# Why Docker?
In some cases, you want to start the application without an actual app window. In this case, you can start MagicMirror² in server only mode by manually running `node serveronly` or using Docker. This will start the server, after which you can open the application in your browser of choice.

# Supported tags:

- `latest` - Latest MagicMirror² server ([Dockerfile](https://github.com/xbgmsharp/docker-MagicMirror/blob/master/Dockerfile))

> The docker images are updated daily by a cron job from ([Travis CI](https://travis-ci.com/xbgmsharp/docker-MagicMirror)).

> This docker image is based on the popular Alpine Linux project, available in the alpine official image. Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general (less than 400MB).

# Supported architectures: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
`amd64`, `arm32v6`, `arm32v7`, `arm64v8`, `i386`

| **Docker** | **uname -m architecture** | **Annotate flage** | **Boards** |
| --- | --- | --- | --- |
| amd64 | x86_64 | (none) |
| arm32v6 | armhf | Raspberry Pis | --os linux --arch arm |
| arm64v8 | aarch64 | A53, H3, H5 ARMs |--os linux --arch arm64 --variant armv8 |

If you compiled for other architectures and know other combinations, let me know!

> The docker image tag `latest` is available for all supported architectures.

# Run MagicMirror² in server only mode
After a successful [Docker installation](https://docs.docker.com/engine/installation/) you just need to execute the following command in the shell:

```bash
docker pull xbgmsharp/docker-magicmirror
docker run  -d \
	--publish 80:8080 \
	--restart always \
	--volume ~/magic_mirror/config:/opt/magic_mirror/config \
	--volume ~/magic_mirror/modules:/opt/magic_mirror/modules \
	--name magic_mirror \
	xbgmsharp/docker-magicmirror
```

# Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.

| Parameter | Function |
| :----: | --- |
| `-p 8080` | require for magicmirror to function |
| `-e PUID=1000` | for UserID (optional) |
| `-e PGID=1000` | for GroupID (optional) |
| `-e TZ=Europe/Paris` | TimeZone (optional) |
| `-v /opt/magic_mirror/config` | Mount this folder to insert your own config into the docker container. |
| `-v /opt/magic_mirror/modules` | Mount this folder to add your own custom modules into the docker container. |
| `-v /opt/magic_mirror/css` | Mount this directory to add your own custom css into the docker container.

 **Important:** You need to create the file before you run the container. Otherwise Docker will create a `custom.css` folder. |

# Config
You need to configure your MagicMirror² config to listen on all interface and allow every ip address.

```javascript
var config = {
    address: "<IP_ADDRESS>",
    port: 8080,
    ipWhitelist: []
}

if (typeof module !== "undefined") { module.exports = config; }
```

# Updating Info

Most of our images are static, versioned, and require an image update and container recreation to update the app inside.

Below are the instructions for updating containers:

## Via Docker Run/Create
* Update the image: `docker pull xbgmsharp/docker-magicmirror`
* Stop the running container: `docker stop magicmirror`
* Delete the container: `docker rm magicmirror`
* Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your `config` and `modules` folder with settings will be preserved)
* Start the new container: `docker start magicmirror`
* You can also remove the old dangling images: `docker image prune`

```bash
docker pull xbgmsharp/docker-magicmirror
docker stop magic_mirror
docker rm magic_mirror
docker create \
  -e PUID=1000 \
  -e PGID=100 \
  -e TZ=Europe/Paris \
  --restart unless-stopped \
  --publish 8181:8080 \
  --volume ~/magic_mirror/config:/opt/magic_mirror/config \
  --volume ~/magic_mirror/modules:/opt/magic_mirror/modules \
  --volume ~/magic_mirror/css:/opt/magic_mirror/css \
  --name magic_mirror xbgmsharp/docker-magicmirror
docker start magic_mirror
```

# Contribution
I'm happy to accept Pull Requests! Please note that this project is released with a [Contributor Code of Conduct](https://github.com/xbgmsharp/docker-MagicMirror/blob/master/CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.

# License
[MIT](https://github.com/xbgmsharp/docker-MagicMirror/blob/master/LICENSE) ❤

repository: xbgmsharp/docker-MagicMirror

repo_name: xbgmsharp/docker-MagicMirror


text:
A-Team Mobile Persistence Accelerator
=====================================

**UPDATE:** This project is no longer maintained. AMPA is now part of Oracle MAF 2.3.1 http://www.ateam-oracle.com/migrating-ampa-apps-to-oracle-maf-2-3-1-client-data-model/

# Overview
The A-Team Mobile Persistence Accelerator (AMPA) is a lightweight persistence and data synchronization framework developed by the Oracle Mobile A-Team.
AMPA works on top of Oracle Mobile Application Framework (MAF).
It eases the consumption of RESTful services, and provides a complete persistence layer that allows you to use the mobile application in offline mode.
You can read and write data while not connected to the internet, and synchronize any pending data changes later when you are online again.
The design-time wizards that are integrated with JDeveloper enable you to build a fully functional mobile application within minutes.

The accelerator is distributed as an open source framework and hosted on github at https://github.com/oracle/mobile-persistence

See the github wiki for instructions on installing and getting started.


text:
# unity-kinematic-estimator

## Description
This script provides estimates: velocity and angular velocity by Unity transform (has no Rigidbody).

## Screenshot
Comparison with Rigidbody's those.

![screenshot](https://github.com/neuneu9/unity-kinematic-estimator/blob/images/screenshot.png)


text:
# Powershell module loading test

This is a demo of how to load a module in Powershell.
<s>It also shows a bug in the Unix powershell implementation of version 6 (alpha, build 12),
as it never finds the module.</s>.

It works perfectly in Windows, Mac and Linux. If you cannot get module loading to work in
unices like OS X ensure that you write the module path _in all upper case_.  See
[PowerShell/PowerShell#2677](https://github.com/PowerShell/PowerShell/issues/2677) for background info on `PSMODULEPATH`.

## Running it
```
powershell -File bar-test.ps1

Oh, hello there. You are now loading the Bar module

Bar says hello
```


text:
[![Stories in Ready](https://badge.waffle.io/universityofderby/chef-tuxedo.png?label=ready&title=Ready)](https://waffle.io/universityofderby/chef-tuxedo)
# Tuxedo Cookbook

## Scope
This cookbook installs Oracle Tuxedo also known as Oracle Fusion Middleware
Application Server.
Oracle Java is also installed as a required dependency.
It does not install or manage any services.

## Requirements
* Chef 12 or higher
* Network accessible artifact repository

## Platform
* Centos 6
* Red Hat Enterprise 6

## Usage

### Resources
```
tuxedo '<IP_ADDRESS>.0' do
  version '<IP_ADDRESS>.0'
  patch 'RP055'
  owner 'tux'
  groupname 'tux_grp'
end
```
### Attributes
```
node['common_artifact_repo'] = 'https://artifact.server/software'
```

### Common Artifact Repository
This cookbook uses a common artifact repository pattern.
Artifacts urls will be generated in the following manner:

node['common_artifact_repo'] + vendor + product + version + file_as_named_by_vendor

eg. the above resource & attribute will attempt to retrieve artifacts from the following
locations:
```
https://artifact.server/software/oracle/tuxedo/<IP_ADDRESS>.0/tuxedo12110_64_linux_5.bin
https://artifact.server/software/oracle/tuxedo/<IP_ADDRESS>.0/RP055.tar.Z
```

Artifact urls can be overridden by specifying installer_url or patch_url on the
resource.

## License and Author

* Author: Dan Webb<EMAIL_ADDRESS>* Author: Luke Bradbury<EMAIL_ADDRESS>
Copyright: 2015, University of Derby

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

repository: universityofderby/chef-tuxedo

repo_name: universityofderby/chef-tuxedo