text:
Jask: Javascript Tasks
======================

Jask is a simple task runner written in Javascript, and can be used with [v8cgi](http://code.google.com/p/v8cgi/), [node.js](http://nodejs.org/) or [flusspferd](http://flusspferd.org). Somewhat inspired by Ruby's Rake.

Installing Jask
---------------

In order to run Jask, you'll need:

- One of the following JS Engines:

	- [v8cgi](http://code.google.com/p/v8cgi/)
	- [nodejs](http://nodejs.org/)
	- [flusspferd](http://flusspferd.org)

- The v8cgi [GetOpt Module](http://code.google.com/p/v8cgi/source/browse/trunk/lib/getopt.js) (for command line parsing).

	- v8cgi: included in the v8cgi package.
	- node.js: download a copy of the module and add it to the same directory as Jask.
	- flusspferd: download a copy of the module and add it to the same directory as Jask.

(**Note:** Flusspferd has a built-in module named `getopt`--but it's not compatible with the library Jask is using. You'll have to download a copy of the module and drop it on your directory.)

To install Jask:

	$ git clone git://github.com/keeto/jask.git jask
	$ cd jask
	$ node jask			# node.js
	$ v8cgi jask		# v8cgi
	$ flusspferd jask	# flusspferd

If you want to use Jask without specifying the engine, you can edit the shebang line on the Jask source:

	#! /usr/bin/env v8cgi
	#! /usr/bin/env node
	#! /usr/bin/env flusspferd

Then copy it to somewhere accessible:

	$ chmod +x jask
	$ cp jask ~/sbin
	$ jask
	JASK: Javascript Tasks

	Usage:
	  $ jask [-t=taskfile] [namespace:]task args
	  $ jask -l

	Options:
	  -l, --list					List available tasks
	  -t=file, --taskfile=file		Set taskfile.
	  -q, --quiet					Don't show any log messages.
	  -v, --verbose					Show verbose logs.
	  -h, --help					Show this help text.

Using Jask
----------

When run, Jask looks for a `taskfile.js` file in the current directory. If you want to set the taskfile to read, use `-t=filename` or `--taskfile=filename` (omit the '.js' when specifying the taskfile). To run a specific task, you put in the task's namespace, then the taskname then arguments, if any:

	$ jask [-t=taskfile] namespace:task arguments

Optionally, if you only have one namespace in your task file, you can omit the namespace and just pass the taskname:

	$ jask [-t=taskfile] task arguments

To get a list of all available task, use `-l` or `--list`.

	$ jask -l

Taskfiles
---------

Taskfiles are simple Javascript files (with the `.js` extension) that contain an `exports` declaration:

	exports.myTasks = {

		task1: function(name){
			console.log("Hello, " + name + '!\n');
		},

		task2: function(name, address){
			this.tast1(name);
			console.log('You live in ' + address + '.\n');
			this._hidden();
		},

		_hidden: function(){
			console.log('I\'m from a hidden function!\n');
		}

	};

The taskfile above will create a new namespace named `myTask` with two tasks, `task1` and `task2`. The function `_hidden`, as well as any other function that starts with an underscore, is a private function. It is absolutely necessary to add the export declaration together with the namespace, or Jask will not run.

Each task is a simple javascript function. Because task namespaces are objects, you can use `this` to refer to the current namespace. You also have access to the global namespace (via `Engine.Global`). And because taskfiles are plain javascript files, you can include any modules you'll need on your taskfile using the `include` and `require` declarations (see the [v8cgi](http://code.google.com/p/v8cgi/wiki/API) or [nodejs](http://nodejs.org/api.html) docs for more details).

To run a task, simply pass the namespace and task name to Jask, together with your arguments, separated by spaces:

	$ jask myTasks:task2 Mark Manila
	  Hello, Mark!
	  You live in Manila.

Including Other Taskfiles
-------------------------

To simplify the process of including other taskfiles, you can include an `Include` property on your taskfile, which is an array of filenames for other taskfiles:

	exports.myTasks = {

		Include: ['myOtherTasks', 'moretasks/tasks.js'],

		task1: function(){
			console.log("Yay!");
		}

	};

Take note that Jask will look for files relative to the current directory where it was ran.

Task Dependencies
-----------------

You can specify simple dependencies using your task names:

	exports.myTasks = {

		getWater: function(){
			console.log("Got water!\n");
		},

		'drink < getWater': function(){
			console.log("Drank!\n")
		}

	};

With this dependency declaration, `getWater` will be called first before `drink`. The name of the task should will always be on the left, and the name of the dependency on the right. You can specify whether to run the task dependancy before or after the task.

	'drink < getWater' // getWater -> drink.
	'drink > getWater' // drink -> getWater.

Be sure you place spaces before `<` and `>`, otherwise, your task will not be parsed. You can also specify the namespace of the task:

	'drink < wells:getWater'

The arguments passed on your main task are also passed to your dependant task.

Documenting Your Task
---------------------

You can document your tasks by adding a `Desc` property on your taskfile:

	exports.myTasks = {

		Desc: {
			getWater: ['Gets some water'],
			drink: ['Drinks the water', 'name, unusedArg']
		},

		getWater: function(){
			console.log("Got water!\n");
		},

		'drink < getWater': function(name, unusedArg){
			console.log("Drink " + name + "\n");
		},

		test: function(name){
			console.log("No description!")
		}

	};

These information will be displayed when the user runs `jask -l`. Public tasks with no description are also displayed, but they won't have any nice documentation:

	Available Tasks:

		myTasks:getWater		Gets some water
		myTask:drink [name]		Drinks the water
		myTask:test

The Console Object
------------------

Jask includes a built-in `console` object that can be used to log and time your tasks. All loggers output to `os.stdout`:

	console.log(1, 2, 3);
	/*
	outputs:
	 	1 2 3
	*/

	console.dir({a: 1}, {b:'string'});
	/*
	outputs:
	 	{"a": 1}
		{"b": "string"}
	*/

	console.time('id');
	console.timeEnd('id');
	/*
	outputs:
	 	id: 0ms.
	*/

The Engine Object
-----------------

In order for Jask to run on both v8cgi and nodejs, Jask detects the engine using simple feature detection. There's a global `engine` object accessible to all tasks files.

- `engine.name` - name of the current engine
- `engine.version` - version number of the current engine
- `engine.global` - pointer to the global object for the current engine

- `engine.flusspferd` - true if the current engine is `flusspferd`
- `engine.nodejs` - true if the current engine is `nodejs`
- `engine.v8cgi` - true if the current engine is `v8cgi`

Useful Links
------------
- [Keetology](http://keetology.com) - The author's site.
- [v8cgi](http://code.google.com/p/v8cgi/) - Official v8cgi repo.
- [node.js](http://nodejs.org/) - Official node.js site.
- [flusspferd](http://flusspferd.org) - Official flusspferd site.

Copyright and License
---------------------

Copyright (c) 2009 Mark Obcena <http://keetology.com>

Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

repository: keeto/jask

repo_name: keeto/jask


text:
---
title: "Integration Patterns"
date: 2017-11-06T11:14:26-05:00
description: "API Integration Pattern"
categories: []
keywords: [architecture]
menu:
  docs:
    parent: "architecture"
    weight: 10
weight: 10
aliases: []
toc: false
draft: false
---

While working with my clients to transform monolithic Java EE applications to
microservices architecture, one of the most frequently asked questions from
my clients is how do you integrate your newly built microservices with existing
Java EE applications. In other words, how to leverage existing application
stacks when exposing REST APIs with microservices?

For most organizations especially financial institutions, they have big Java
EE applications running on Weblogic/Websphere that they've invested efforts
for a decade or longer. You cannot imagine that they can rewrite everything and
switch to microservices overnight.

I have been working the following four different approaches over the last 5
years and I will give my recommendations based on my experience. Please be
aware that this is just a generic recommendation and it cannot be applied
to all use cases.

## API Gateway

Most commercial API gateways offer the XML to JSON and JSON to XML
transformation feature and this was good selling point in early days. They
promised that you buy their product and the gateway will transform your
XML based web services to JSON based RESTful APIs. The problem with this
approach is performance, as all of them provide a generic transformer working
with external defined mapping logic. The transformation is CPU intensive and
with the overhead of gateway security and other layers, the throughput and
latency are not acceptable. Also, there are other issues with commercial
gateways as I documented at [gateway article][].

## Customized Transformation in API

Some developers and architects realized that buying a gateway cannot resolve
the problem magically so they tried to build the transform logic into the API
itself. The transformation code is customized per API and it is much more
efficient than generic transformer in gateways. This provide a little bit
more flexibility and a little bit increased performance but it is not easy
to write the transform code as most web services have very complicated request
and response schemas. Performance wise, it is better than commercial gateway
solutions but still very bad.

## Calling service layer behind SOA or EMB

Most web services are built with multiple layers and chances are you have
a service layer behind your web service tier with Java native APIs. In this
case, we can bypass web services and calling the native Java API (most likely
session beans) from your RESTful APIs. This gives us a relative good performance
and leverage the most complicated services in the application tier. It is also
a low cost solution to bring RESTful API on top of your existing applications.

The only drawback is that these app layers are deployed on Java EE platform
and they have limited throughput and very hard to be scaled.

## Calling Book of Record directly

In order to fully realize the benefits of microservices architecture, the
existing monolithic application must be rewritten so that microservices can
talk to the book of record directly. And this can be done during a long period
of time to break up existing system to function areas and convert them one by
one. Unlike the way Jave EE works to have different layers in designed, we need
to cut the function vertically for microservices.

## Summary

As describe above, it is recommended to rewrite the existing monolithic app
but if resources are constrained, then build microservices by calling
existing services are acceptable. As microserivces can be individually deployed
and replaced, it is easy to convert them all to the final stage one by one.

[gateway article]: /architecture/gateway/

license: MIT

repository: BalloonWen/light-doc

branch_name: refs/heads/master

extension: md

gha_license_id: MIT

license_type: permissive

repo_name: BalloonWen/light-doc


text:
# Who is testing CFEngine Policy?

- **CFEngine:** [Documentation Examples](https://github.com/cfengine/core/tree/master/examples), [Core acceptance tests](https://github.com/cfengine/core/tree/master/tests/acceptance), [Masterfiles Policy Framework](https://github.com/cfengine/masterfiles/tree/master/tests/acceptance)
- **Evolve Thinking:** [Evolve Thinking Freelib](https://github.com/evolvethinking/evolve_cfengine_freelib/tree/master/t)
- **Normation:** [NCF](https://github.com/Normation/ncf/tree/master/tests/acceptance)
- **Others:** [CFEngine Provisioner for Test Kitchen](https://github.com/nmische/kitchen-cfengine), [Marco Marongiu](http://syslog.me/2014/08/30/test-dummies-on-sale/), [Jarle Bjørgeengen](https://vimeo.com/31957100)

## Send me more!

gha_language: CSS


text:
---
id: 134
title: SEIU healthcare campaign
date: 2015-09-01T14:19:55+00:00
author: cmonagle
layout: project
permalink: /seiu/
categories:
  - Portfolio
---
SEIU healthcare is over 70 years old, and represents 55,000 workers in Ontario and British Columbia. They have taken the Ontario government to court successfully several times, winning major victories for service workers.

![SEIU Screencap](/assets/images/seiu.jpg)

Their current site was targeted to their already-unionized members. They wanted a new page to inform and engage potential organizing leads. People coming to the site were likely tired and frustrated, so their questions needed to be answered quickly. The users would also primarily have english as a second language, so engaging and easy-to-understand visuals were critical.

We worked closely with SEIU’s communications strategist to create a fun, interactive, and engaging website to get users involved in the union. An instant chat application was developed which connected with organizer’s phones to ensure instant feedback for the user’s questions. A distinct graphic treatment was created to separate it from the main site, while keeping with the fundament of the brand.

Organizing leads now have a portal through which to get their questions answered quickly and easily, and learn about the advantages of unionization. The process for learning about and becoming unionized is more fluid and accessible.


text:
---
layout: page
title: AVHRR images
---

AVHRR images are received from Metop-A, Metop-B and NOAA-19.

After clicking on the button "Make Image", the image will be rendered on the 3D Globe

![_config.yml](/images/Screenshot_AVHRR_1.jpg)

In the **image page** ( selected in the left toolbar ) you can view the image as it is received from the satellite.

![_config.yml](/images/Screenshot_AVHRR_2.jpg)

The zoom buttons allows you to zoom into the image .

![_config.yml](/images/Screenshot_AVHRR_3.jpg)

Removing the **Toolbox** ...

![_config.yml](/images/Screenshot_AVHRR_4.jpg)

Selecting an other channel in the **Toolbox**

![_config.yml](/images/Screenshot_AVHRR_5.jpg)


text:
DG A* Example
=============

Discription
-----------
This project is a small project I through together to play around with A* pathfinding.

How To Use
----------
The controls and the legend are on the left side of the App, and on the right side is the grid. In the Controls section, the "Reset" button will change the grid back to a default state. The "Find Path" button will find the path from the red node to the green node using A*, and the "Gen Obst" button will generate random obstacle chunks inside of the grid. Below those buttons you will see the word "Current" and a colored block to the right. This block is the current brush color. And right below that are four other colors corresponding to the colors that you can paint onto the grid, click on any of these to change the current brush color. To paint onto the grid, click on the grid and the block below your click will change to the current brush color. The legend section explains what each color represents. The first four are the colors that you can place by clicking on the grid and the bottom three colors are used during pathfinding.

repository: bonystedt/DG-AStar

repo_name: bonystedt/DG-AStar


text:
---
title: Updating WordPress On CentOS
date: 2017-07-23T04:22:45+00:00
author: gerryw1389
layout: single
classes: wide
permalink: /2017/07/updating-wordpress-on-centos/
categories:
  - Linux
tags:
  - WebServer
---
<!--more-->

### Description:

Updating WordPress is a manual process for me since I host it locally. Here are the commands I run:

### To Resolve:

1. Get the latest WordPress zip (or tar.gz) file: Download to my `~/Downloads` via Firefox. Sure I could curl/wget, but meh.

2. Unpack the zip file that you downloaded.

3. Deactivate plugins.

4. First, we want to remove what we need full replacements for (I use a `~/trash` folder instead of rm -rf) :

```shell
sudo systemctl stop httpd
cd /var/www/html
sudo mv wp-includes ~/trash
sudo mv wp-admin ~/trash
```

5. Now copy files from Downloads to site:

```shell
cd ~/Downloads
sudo tar -xzf wordpress(whatever... tab complete)
cd wordpress
sudo cp -R wp-includes /var/www/html/wp-includes
sudo cp -R wp-admin /var/www/html/wp-admin
#sudo cp -R wp-content /var/www/html/wp-content/wp-content
rsync -a -v --ignore-existing ~/Downloads/wordpress/wp-content /var/www/html/wp-content
sudo cp *.* /var/www/html/*.*

cd ..
sudo mv wordpress ~/trash
```

6. Lastly, we just set permissions to the site:

```shell
sudo chown apache:apache /var/www/html -R
sudo chown root:root /var/www/html/wp-config.php

cd /var/www/html
sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
sudo chmod 644 wp-config.php

sudo systemctl start httpd
```

branch_name: refs/heads/main


text:
# Module 6 - Dockerize the Sample Application

**Time to complete:** 20 minutes

**Services used:**

### Overview

In this module, we will add Docker support to our app and containerize it.

If you are new to Docker or using Docker with .NET, it is recommended to read [this first](https://docs.microsoft.com/en-us/dotnet/core/docker/intro-net-docker) to give you a quick overview of Docker basics. You can skip the Azure section. :-)

Firstly, install [Visual Studio Tools for Docker](https://docs.microsoft.com/en-us/dotnet/standard/containerized-lifecycle-architecture/design-develop-containerized-apps/visual-studio-tools-for-docker) which will allow you to access Docker tooling from within Visual Studio.

![Adding Docker support from Visual Studios](/images/module-6/AddDockerSupport-2.jpg)

Visual Studio should have created a Dockerfile for you. The next step is to run the application in a container, following [this guide](https://docs.microsoft.com/en-us/dotnet/core/docker/build-container#create-the-dockerfile).

Tips:

_The application expects an input file which isn't copied into the Docker image by default. How can you get this copied into the right location?_

_You might see errors like 'duplicate assembly information', which is caused by the presence of an AssemblyInfo.cs file in your project having updated from .NET to .NET Core. You should delete this to prevent them from being included in the build._

## Next

Please proceed to the next lesson.

**[Proceed to Module 7](/module-7)**

### [AWS Developer Center](https://developer.aws)


text:
# Sphaeropezia empetri (Fr.) Rehm, 1888 SPECIES

#### Status
SYNONYM

#### According to
The Catalogue of Life, 3rd January 2011

#### Published in
Discom. 1(3): 73 (1888)

#### Original name
Sphaeria empetri Fuckel, 1875

### Remarks
null

repository: mdoering/backbone

path: /life/Fungi/Ascomycota/Sordariomycetes/Xylariales/Hyponectriaceae/Arwidssonia/Arwidssonia empetri/ Syn. Sphaeropezia empetri/README.md

repo_name: mdoering/backbone


text:
2.1.2 (2023-07-31)
==================

It is **strongly** reccomended you upgrade your bridge, as this release contains security fixes.

🔒 Security
-----------

- Fixes for GHSA-vc7j-h8xg-fv5x.

Features
--------

- Add improved error messages in setup widget. ([\#744](https://github.com/matrix-org/matrix-appservice-slack/issues/744))
- Add support for specifying a HTTP proxy to connect to the Slack API. ([\#750](https://github.com/matrix-org/matrix-appservice-slack/issues/750))

Bugfixes
--------

- Fix the provisioner staring once per bridged room. ([\#751](https://github.com/matrix-org/matrix-appservice-slack/issues/751))

Internal Changes
----------------

- Update matrix-appservice-bridge to 8.1.2. ([\#765](https://github.com/matrix-org/matrix-appservice-slack/issues/765))

2.1.1 (2023-03-07)
==================

Internal Changes
----------------

- Fix provisioning API base URL in setup widget. ([\#739](https://github.com/matrix-org/matrix-appservice-slack/issues/739))
- Update matrix-appservice-bridge to `8.1.1`. ([\#740](https://github.com/matrix-org/matrix-appservice-slack/issues/740))

2.1.0 (2023-03-03)
==================

Features
--------

- Add a new UI widget for linking and unlinking channels from within a Matrix room. ([\#734](https://github.com/matrix-org/matrix-appservice-slack/issues/734), [\#735](https://github.com/matrix-org/matrix-appservice-slack/issues/735))

Internal Changes
----------------

- Correctly attribute mkarg for documentation contributions. We also reverted commits and recommited them with the correct Author value set. ([\#729](https://github.com/matrix-org/matrix-appservice-slack/issues/729))
- Optimize the Dockerfile to speed up image rebuilds following a code change. ([\#732](https://github.com/matrix-org/matrix-appservice-slack/issues/732))
- Update the provisioning API to use `matrix-appservice-bridge`. ([\#733](https://github.com/matrix-org/matrix-appservice-slack/issues/733))

2.0.2 (2022-11-30)
==================

No significant changes.

2.0.2-rc2 (2022-11-30)
======================

Bugfixes
--------

- Safely handle errors from admin commands. ([\#725](https://github.com/matrix-org/matrix-appservice-slack/issues/725))

Internal Changes
----------------

- Docs: Docker container uses port 5858 unless explicitly modified in config.yaml ([\#718](https://github.com/matrix-org/matrix-appservice-slack/issues/718)). Contributed by @mkarg
- Docs: Fixed numbering by fixing indentation ([\#719](https://github.com/matrix-org/matrix-appservice-slack/issues/719)). Contributed by @mkarg
- Docs: Run bridge as daemon ([\#720](https://github.com/matrix-org/matrix-appservice-slack/issues/720)). Contributed by @mkarg
- Docs: Merge #718, #719 and #720 and reduce abbreviations. ([\#727](https://github.com/matrix-org/matrix-appservice-slack/issues/727))

2.0.2-rc1 (2022-11-28)
======================

Bugfixes
--------

- Correctly set "is_falling_back" flag in thread events so that events in threads are not also displayed as replies. ([\#709](https://github.com/matrix-org/matrix-appservice-slack/issues/709))
- Fix crash in `whoami` command when the team name of a Slack account is unavailable. ([\#714](https://github.com/matrix-org/matrix-appservice-slack/issues/714))
- Prevent admin commands from being unusable after an invalid command is issued. ([\#717](https://github.com/matrix-org/matrix-appservice-slack/issues/717))
- Improve the calculation of DM names & avatars. ([\#721](https://github.com/matrix-org/matrix-appservice-slack/issues/721))
- Ensure messages you send in a DM from Slack will appear in Matrix, even if the ghost of your Slack account was not initially present in the Matrix DM room. ([\#722](https://github.com/matrix-org/matrix-appservice-slack/issues/722))

Internal Changes
----------------

- Update matrix-appservice-bridge to 6.0.0. ([\#710](https://github.com/matrix-org/matrix-appservice-slack/issues/710))
- Remove annoying noisy `Didn't handle event` log line. ([\#712](https://github.com/matrix-org/matrix-appservice-slack/issues/712))
- Remove IDE-related files from version control. ([\#715](https://github.com/matrix-org/matrix-appservice-slack/issues/715))

2.0.1 (2022-10-06)
==================

This release fixes a bug in our build system that prevented Docker images from being built. Users not using Docker on `2.0.0`
are not required to upgrade.

2.0.0 (2022-10-05)
==================

Note, as with `2.0.0-rc1`, release requires **Node.16** or greater.

Bugfixes
--------

- Add missing `reactions:write` scope to oauth scopes. ([\#696](https://github.com/matrix-org/matrix-appservice-slack/issues/696))
- Fix PostgreSQL schema 14 not applying cleanly if `events` containing NULL columns. ([\#701](https://github.com/matrix-org/matrix-appservice-slack/issues/701))
- Fix `/metrics` and `/ready` paths requiring authentication. ([\#704](https://github.com/matrix-org/matrix-appservice-slack/issues/704))
- Disallowed the accidental behaviour of puppeting two or more Slack accounts from the same team to the same Matrix user. This would cause all puppeting for the
  user to stop working. The bridge will now **automatically delete** any puppeted connections which violate this rule. You will be notified via the bridge when
  this happens, so you can relink your accounts. ([\#705](https://github.com/matrix-org/matrix-appservice-slack/issues/705))

2.0.0-rc1 (2022-07-29)
======================

This release requires **Node.16** or greater.

Features
--------

- New releases will now include Docker images built on the `linux/amd64` platform in addition to x86_64. ([\#656](https://github.com/matrix-org/matrix-appservice-slack/issues/656))

Bugfixes
--------

- Improve performance of removing deleted Slack users from rooms. ([\#649](https://github.com/matrix-org/matrix-appservice-slack/issues/649))

Improved Documentation
----------------------

- Use the matrix-appservice-bridge contributing guide. ([\#686](https://github.com/matrix-org/matrix-appservice-slack/issues/686))

Deprecations and Removals
-------------------------

- The bridge now requires Node.JS 16 or greater. ([\#690](https://github.com/matrix-org/matrix-appservice-slack/issues/690))

Internal Changes
----------------

- Don't allow NULL in SQL columns of events, matching the expectation of the models. ([\#670](https://github.com/matrix-org/matrix-appservice-slack/issues/670))
- Fix towncrier script for summarising the newsfiles ([\#677](https://github.com/matrix-org/matrix-appservice-slack/issues/677))
- Switch from `npm` to `yarn` for dependency management. ([\#685](https://github.com/matrix-org/matrix-appservice-slack/issues/685))
- Move CI to GitHub Actions. ([\#688](https://github.com/matrix-org/matrix-appservice-slack/issues/688))
- Add new CI workflow to check for signoffs. ([\#693](https://github.com/matrix-org/matrix-appservice-slack/issues/693))

1.11.0 (2022-04-05)
=======================

No significant changes.

1.11.0-rc1 (2022-03-21)
=======================

Features
--------

- Support bridging Slack message threads with new m.thread relations (MSC3440) ([\#634](https://github.com/matrix-org/matrix-appservice-slack/issues/634), [\#673](https://github.com/matrix-org/matrix-appservice-slack/issues/673))
- Add check to verify if the homeserver <-> bridge connection is working on startup. ([\#666](https://github.com/matrix-org/matrix-appservice-slack/issues/666))

Bugfixes
--------

- Fix: Don't create an internal ping room on every restart ([\#669](https://github.com/matrix-org/matrix-appservice-slack/issues/669))

Internal Changes
----------------

- Upgrade dependency axios to 0.26.0 to close a possible vulnerability ([\#664](https://github.com/matrix-org/matrix-appservice-slack/issues/664))
- Remove uses of the deprecated JavaScript function substr() ([\#665](https://github.com/matrix-org/matrix-appservice-slack/issues/665))

1.10.0 (2021-12-22)
=======================

No significant changes.

1.10.0-rc3 (2021-12-13)
========================

Bugfixes
--------

- Fix inverted check causing Slack messages to not be relayed to Matrix. Thanks to @ewilderj ([\#648](https://github.com/matrix-org/matrix-appservice-slack/issues/648))

Internal Changes
----------------

- Fix a regression in Node 16+ environments where the bridge may occasionally crash when a message wasn't handled successfully. ([\#646](https://github.com/matrix-org/matrix-appservice-slack/issues/646))

1.10.0-rc2 (2021-12-06)
========================

Internal Changes
----------------

- Switch to using Debian as a base for Docker images. ([\#645](https://github.com/matrix-org/matrix-appservice-slack/issues/645))

1.10.0-rc1 (2021-11-23)
========================

Bugfixes
--------

- Improve reliability of Matrix users being bridged with correct displayname and avatar ([\#628](https://github.com/matrix-org/matrix-appservice-slack/issues/628))
- Fix an issue where Slack users sometimes have stale displaynames ([\#631](https://github.com/matrix-org/matrix-appservice-slack/issues/631))

Internal Changes
----------------

- Use the MembershipQueue for handling joins and leaves in the TeamSyncer. ([\#633](https://github.com/matrix-org/matrix-appservice-slack/issues/633))
- Docker images now use Node 16 ([\#639](https://github.com/matrix-org/matrix-appservice-slack/issues/639))
- Update dependencies, remove unused winston dependencies. ([\#640](https://github.com/matrix-org/matrix-appservice-slack/issues/640))

1.9.0 (2021-10-11)
=======================

No significant changes.

1.9.0-rc3 (2021-10-08)
=======================

Bugfixes
--------

- Fix a bug where typing in an admin command in the bridge admin room would cause the bridge to immediately exit. ([\#624](https://github.com/matrix-org/matrix-appservice-slack/issues/624))

1.9.0-rc2 (2021-10-08)
=======================

Features
--------

- Track the success/failure rate of oauth sessions with the `oauth_session_result` metric. ([\#621](https://github.com/matrix-org/matrix-appservice-slack/issues/621))
- Make UserActivityTracker configurable ([\#623](https://github.com/matrix-org/matrix-appservice-slack/issues/623))

1.9.0-rc1 (2021-09-30)
=======================

Features
--------

- Make the team sync hint to channel admins configurable ([\#601](https://github.com/matrix-org/matrix-appservice-slack/issues/601))
- Add optional bridge blocking upon exceeding a monthly active user limit ([\#612](https://github.com/matrix-org/matrix-appservice-slack/issues/612))
- The bridge now automatically invites users to private rooms if there is a message and they are not joined. ([\#613](https://github.com/matrix-org/matrix-appservice-slack/issues/613))

Bugfixes
--------

- Sync channels and users of a Slack team independently, so that one failure does not cause the other to fail. ([\#599](https://github.com/matrix-org/matrix-appservice-slack/issues/599))
- Fix a crash on startup caused by the homeserver rejecting a join/leave from a ghost when team sync is enabled. ([\#606](https://github.com/matrix-org/matrix-appservice-slack/issues/606))
- Add missing help text for `whoami` command. ([\#620](https://github.com/matrix-org/matrix-appservice-slack/issues/620))

Internal Changes
----------------

- Switched out or pinned several packages that require ESM modules, as we don't want to use ESM modules. ([\#605](https://github.com/matrix-org/matrix-appservice-slack/issues/605))
- Docker images are now automatically build and published via GitHub Actions, replacing DockerHub Autobuilds. ([\#610](https://github.com/matrix-org/matrix-appservice-slack/issues/610))
- Update bridge to matrix-appservice-bridge 3.1.0 ([\#614](https://github.com/matrix-org/matrix-appservice-slack/issues/614))

1.8.0 (2021-04-22)
===================

No significant changes.

1.8.0-rc1 (2021-04-19)
=======================

Features
--------

- Add provisioning endpoint to get Slack channel info ([\#571](https://github.com/matrix-org/matrix-appservice-slack/issues/571))
- Add `teamSync.xyz.channels.allow_public` option to disable public channel syncing ([\#577](https://github.com/matrix-org/matrix-appservice-slack/issues/577))

Bugfixes
--------

- Autocreated public rooms will no longer be encrypted by default ([\#576](https://github.com/matrix-org/matrix-appservice-slack/issues/576))

Improved Documentation
----------------------

- Mention the need for a classic app in the documentation. ([\#427](https://github.com/matrix-org/matrix-appservice-slack/issues/427))

Internal Changes
----------------

- Update to matrix-appservice-bridge 2.6.0-rc1 ([\#575](https://github.com/matrix-org/matrix-appservice-slack/issues/575))
- The unit/integration tests have been moved to the root level, and are not built by default. ([\#582](https://github.com/matrix-org/matrix-appservice-slack/issues/582))
- Regenerate package-lock.json to fix a build issue ([\#586](https://github.com/matrix-org/matrix-appservice-slack/issues/586))
- Config samples: Corrected rtm.logging to rtm.log_level
  rtm.log_level: "off" is not a valid value and should be "silent" ([\#587](https://github.com/matrix-org/matrix-appservice-slack/issues/587))
- Update to matrix-appservice-bridge 2.6.0 ([\#589](https://github.com/matrix-org/matrix-appservice-slack/issues/589))

1.7.0 (2021-02-11)
===================

No significant changes.

1.7.0-rc1 (2021-02-05)
=======================

Features
--------

- Add `logout` user admin room command ([\#559](https://github.com/matrix-org/matrix-appservice-slack/issues/559))
- Ensure private channels are synchronised on startup. ([\#563](https://github.com/matrix-org/matrix-appservice-slack/issues/563))

Bugfixes
--------

- Fixed a problem where automatically created rooms would not get an alias. ([\#544](https://github.com/matrix-org/matrix-appservice-slack/issues/544))
- Fix a bug where DMs from Slack are not persisted in the DB. ([\#558](https://github.com/matrix-org/matrix-appservice-slack/issues/558))

Internal Changes
----------------

- Stop the bridge from emitting "MaxListenersExceededWarning" warnings. ([\#556](https://github.com/matrix-org/matrix-appservice-slack/issues/556))
- Bump package versions ([\#557](https://github.com/matrix-org/matrix-appservice-slack/issues/557))
- Use improved encryption support from matrix-appservice-bridge ([\#564](https://github.com/matrix-org/matrix-appservice-slack/issues/564))

1.6.2 (2021-01-14)
===================

Bugfixes
--------

- Fix metrics bug: Month has been off by one (e.g. January = 0) ([\#553](https://github.com/matrix-org/matrix-appservice-slack/issues/553))

Improved Documentation
----------------------

- Clarify upgrade steps in documentation. Contributed by Cameron Otsuka. ([\#545](https://github.com/matrix-org/matrix-appservice-slack/issues/545))

1.6.1 (2020-11-06)
===================

Features
--------

- Allow docker to reuse cache when building the image by copying only npm related file before running `npm install` ([\#531](https://github.com/matrix-org/matrix-appservice-slack/issues/531))

Bugfixes
--------

- Hide typing notifications from puppeted users on Matrix ([\#528](https://github.com/matrix-org/matrix-appservice-slack/issues/528))
- Fix an issue where the bridge may send duplicate messages to Slack when encryption is enabled. ([\#539](https://github.com/matrix-org/matrix-appservice-slack/issues/539))

Improved Documentation
----------------------

- Improve the installation docs and the sample config file ([\#389](https://github.com/matrix-org/matrix-appservice-slack/issues/389))

Internal Changes
----------------

- Added missing encryption config to the schema and sample config. ([\#538](https://github.com/matrix-org/matrix-appservice-slack/issues/538))

1.6.0 (2020-10-02)
===================

No significant changes since the previous RC.

1.6.0-rc2 (2020-10-01)
=======================

Bugfixes
--------

- Fix bot responding to its own messages. ([\#527](https://github.com/matrix-org/matrix-appservice-slack/issues/527))

1.6.0-rc1 (2020-10-01)
=======================

Features
--------

- New configuration option `provisioning.channel_adl` to manage which Slack channels may be bridged.
  New configuration option `team_sync.*.allow_private` to allow/deny bridging private channels. ([\#476](https://github.com/matrix-org/matrix-appservice-slack/issues/476))
- Support removing reactions from Slack and Matrix messages ([\#485](https://github.com/matrix-org/matrix-appservice-slack/issues/485))
- Add support for bridge message encryption. ([\#493](https://github.com/matrix-org/matrix-appservice-slack/issues/493))
- Add onboarding message for new users when puppeting is enabled ([\#506](https://github.com/matrix-org/matrix-appservice-slack/issues/506))
- Join puppet to Slack channel if they are not already joined when sending a message ([\#515](https://github.com/matrix-org/matrix-appservice-slack/issues/515))
- The help command now distinguishes positional and named parameters. ([\#520](https://github.com/matrix-org/matrix-appservice-slack/issues/520))
- Fixed a bug where Slack messages would not bridge if a mentioned channel lacked an alias ([\#525](https://github.com/matrix-org/matrix-appservice-slack/issues/525))

Bugfixes
--------

- Ensure that the bridge still syncs created and deleted channels, as well as new slack users, when using the RTM API. ([\#477](https://github.com/matrix-org/matrix-appservice-slack/issues/477))
- Do not join the Slack bot to the Matrix side ([\#478](https://github.com/matrix-org/matrix-appservice-slack/issues/478))
- Reduce chance of duplicate messages arriving on Matrix when using puppeting ([\#482](https://github.com/matrix-org/matrix-appservice-slack/issues/482))
- Stop handling the deprecated events channel_join and channel_leave. We already handle the new event types. ([\#487](https://github.com/matrix-org/matrix-appservice-slack/issues/487))
- Update `matrix-appservice-bridge` dependency to version `2.0` ([\#491](https://github.com/matrix-org/matrix-appservice-slack/issues/491))
- Fix issue where a thread chain on Slack would not correctly chain replies on Matrix ([\#499](https://github.com/matrix-org/matrix-appservice-slack/issues/499))
- OAuth2 URLs no longer break when `oauth2.redirect_prefix` is missing a trailing slash ([\#504](https://github.com/matrix-org/matrix-appservice-slack/issues/504))
- Fix issue where generated OAuth2s would be malformed ([\#508](https://github.com/matrix-org/matrix-appservice-slack/issues/508))
- Bridge 👍 and 👎 reactions more accurately from Slack to Matrix by appending U+FE0F (Emoji-style variant) ([\#509](https://github.com/matrix-org/matrix-appservice-slack/issues/509))

Improved Documentation
----------------------

- Add documenation to enable puppeting support ([\#505](https://github.com/matrix-org/matrix-appservice-slack/issues/505))
- Reformat feature documentation and include new features ([\#507](https://github.com/matrix-org/matrix-appservice-slack/issues/507))

Internal Changes
----------------

- Upgrade dependencies ([\#484](https://github.com/matrix-org/matrix-appservice-slack/issues/484), [\#521](https://github.com/matrix-org/matrix-appservice-slack/issues/521))
- Remove support for removing reactions removal for NeDB ([\#489](https://github.com/matrix-org/matrix-appservice-slack/issues/489))
- Migrate from TSLint to ESLint ([\#490](https://github.com/matrix-org/matrix-appservice-slack/issues/490))
- Fix plenty of ESLint warnings ([\#502](https://github.com/matrix-org/matrix-appservice-slack/issues/502))
- Be stricter about API responses and reduce linter warnings ([\#510](https://github.com/matrix-org/matrix-appservice-slack/issues/510))
- Remove code to deduplicate incoming Matrix events ([\#516](https://github.com/matrix-org/matrix-appservice-slack/issues/516))

1.5.0 (2020-09-01)
===================

Features
--------

- When a user connects their team for the first time, sync members and channels! ([\#475](https://github.com/matrix-org/matrix-appservice-slack/issues/475))

Bugfixes
--------

- Fix schema for puppeting.direct_messages ([\#474](https://github.com/matrix-org/matrix-appservice-slack/issues/474))

1.5.0-rc1 (2020-08-25)
===================

Features
--------

- Add `disallow_direct_messages` config option to selectively deny users the ability to DM bridged users. ([\#435](https://github.com/matrix-org/matrix-appservice-slack/issues/435))
- Bridge in all Slack members of a channel when connnecting it to a room. ([\#448](https://github.com/matrix-org/matrix-appservice-slack/issues/448))

Bugfixes
--------

- Don't redact Matrix events as a result of the bridge deleting a Slack message. ([\#431](https://github.com/matrix-org/matrix-appservice-slack/issues/431))
- Print the correct appservice port on the console when using the one from the config ([\#440](https://github.com/matrix-org/matrix-appservice-slack/issues/440))
- Fixes the broken admin command "help oauth" ([\#445](https://github.com/matrix-org/matrix-appservice-slack/issues/445))
- The bridge will no longer register deleted Slack users on startup. ([\#448](https://github.com/matrix-org/matrix-appservice-slack/issues/448))
- Fix an issue where sometimes Slack media files would be bridged as a 'm.file' ([\#450](https://github.com/matrix-org/matrix-appservice-slack/issues/450))
- Stop Team Sync from calling Slack's API more rapidly than configured ([\#454](https://github.com/matrix-org/matrix-appservice-slack/issues/454))
- Fix NedbDatastore.getTeam when an error happened or the team doesn't exist ([\#455](https://github.com/matrix-org/matrix-appservice-slack/issues/455))
- Correctly handle TeamSync failures, which displays a warning but does start the bridge. This previously resulted in an uncaught Promise. ([\#456](https://github.com/matrix-org/matrix-appservice-slack/issues/456))
- Fix issue where slack messages would not properly thread together ([\#459](https://github.com/matrix-org/matrix-appservice-slack/issues/459))
- Rename `unlink room` command to `unlink` to make it callable.
  Allow `link` to be called with a `team_id` ([\#462](https://github.com/matrix-org/matrix-appservice-slack/issues/462))
- Don't automatically join new users to all public channels ([\#463](https://github.com/matrix-org/matrix-appservice-slack/issues/463))
- Fix issue where bridged Slack files fail silently or upload garbled data. ([\#466](https://github.com/matrix-org/matrix-appservice-slack/issues/466))
- Fix issue where Slack files would not be uploaded to Matrix ([\#470](https://github.com/matrix-org/matrix-appservice-slack/issues/470))

Improved Documentation
----------------------

- Consistently suggest to use port 5858 for the appservice ([\#436](https://github.com/matrix-org/matrix-appservice-slack/issues/436))

Internal Changes
----------------

- Misc improvements to PostgreSQL datastore. Thanks @vitaly-t! ([\#429](https://github.com/matrix-org/matrix-appservice-slack/issues/429))
- Upgrade dependencies ([\#437](https://github.com/matrix-org/matrix-appservice-slack/issues/437))
- Rebrand: Replace mentions of Riot with Element ([\#438](https://github.com/matrix-org/matrix-appservice-slack/issues/438))
- Remove local buildkite files in favour of using the matrix-org/pipelines repo. ([\#442](https://github.com/matrix-org/matrix-appservice-slack/issues/442))
- Admin commands must be a string ([\#443](https://github.com/matrix-org/matrix-appservice-slack/issues/443))
- Add unit tests for AdminCommand ([\#444](https://github.com/matrix-org/matrix-appservice-slack/issues/444))
- Warn if the bot isn't in the admin room ([\#458](https://github.com/matrix-org/matrix-appservice-slack/issues/458))
- Improve event processing time by adding an index to the events table ([\#469](https://github.com/matrix-org/matrix-appservice-slack/issues/469))

1.4.0 (2020-06-23)
===================

No significant changes.

1.4.0-rc1 (2020-05-29)
=======================

Features
--------

- Move matrix<->slack account links to a seperate table, and properly logout users. ([\#419](https://github.com/matrix-org/matrix-appservice-slack/issues/419))
- Add bot profile information on startup. ([\#423](https://github.com/matrix-org/matrix-appservice-slack/issues/423))
- Add /ready endpoint ([\#425](https://github.com/matrix-org/matrix-appservice-slack/issues/425))

Bugfixes
--------

- Fix issue which breaks setting up puppeting ([\#418](https://github.com/matrix-org/matrix-appservice-slack/issues/418))
- Fix issue where puppets could not be registered for the same team or mxid twice. ([\#420](https://github.com/matrix-org/matrix-appservice-slack/issues/420))
- Fix bug where puppeted users couldn't edit their own messages ([\#424](https://github.com/matrix-org/matrix-appservice-slack/issues/424))
- Fix bug where users could not become puppeted if they had already logged in via oauth ([\#426](https://github.com/matrix-org/matrix-appservice-slack/issues/426))

Internal Changes
----------------

- Fix `provisioning.enabled` config flag to be recognised in the code, and add ability to disable puppeting from the config. ([\#411](https://github.com/matrix-org/matrix-appservice-slack/issues/411))
- Load configuration schema using absolute path to make it possible to start the service from any directory. ([\#415](https://github.com/matrix-org/matrix-appservice-slack/issues/415))
- Fix `team_sync` indentation in the sample config. ([\#416](https://github.com/matrix-org/matrix-appservice-slack/issues/416))
- Drop leftover code for oauth with webhooks, as it's not been supported for a long time. ([\#422](https://github.com/matrix-org/matrix-appservice-slack/issues/422))

1.3.2 (2020-05-13)
===================

Internal Changes
----------------

- Update to `pg-promise` 10.5.5 ([\#410](https://github.com/matrix-org/matrix-appservice-slack/issues/410))

1.3.1 (2020-05-13)
===================

Bugfixes
--------

- Fix bridge mistakenly calling the wrong slack endpoint on /channels ([\#409](https://github.com/matrix-org/matrix-appservice-slack/issues/409))

1.3.0 (2020-05-12)
===================

Features
--------

- Add ability to limit the number of teams and rooms via the config ([\#397](https://github.com/matrix-org/matrix-appservice-slack/issues/397))
- Check if a channel is linked to another room, and unauthorize the link if so. ([\#401](https://github.com/matrix-org/matrix-appservice-slack/issues/401))
- Support automatically bridging to the new room on room upgrade ([\#402](https://github.com/matrix-org/matrix-appservice-slack/issues/402))

Bugfixes
--------

- Allow bridging to private channels via the provisioner ([\#403](https://github.com/matrix-org/matrix-appservice-slack/issues/403))
- Fix postgress configurations failing to start when using the offical docker image. ([\#405](https://github.com/matrix-org/matrix-appservice-slack/issues/405))
- Bridge will no longer update user's displayname with a bots name when a bot is modified ([\#408](https://github.com/matrix-org/matrix-appservice-slack/issues/408))

Internal Changes
----------------

- Fix exception on missing `error` in createTeamClient ([\#404](https://github.com/matrix-org/matrix-appservice-slack/issues/404))

1.2.0 (2020-05-07)
===================

No significant changes.

1.2.0-rc1 (2020-04-17)
=======================

**BREAKING CHANGE** - Note that this release requires requests to /_matrix/provision are authenticated with the `hs_token`.

Features
--------

- Add metrics for active users and rooms ([\#380](https://github.com/matrix-org/matrix-appservice-slack/issues/380))

Bugfixes
--------

- Include server name in the Matrix users regex ([\#368](https://github.com/matrix-org/matrix-appservice-slack/issues/368))
- Fix Slack user updates (e.g. to their Display name) not getting immediately synced with Workspace Sync enabled ([\#377](https://github.com/matrix-org/matrix-appservice-slack/issues/377))
- Fix occasional crash if an error occurs handling a Slack event. ([\#392](https://github.com/matrix-org/matrix-appservice-slack/issues/392))
- **SECURITY FIX** The bridge now requires authentication on the /_matrix/provision set of endpoints. It requires either an `access_token` query parameter or a `Authorization` header containing the `hs_token` provided in the registration file. ([\#395](https://github.com/matrix-org/matrix-appservice-slack/issues/395))

Improved Documentation
----------------------

- Change NPM instructions to use the path config/config.yaml ([\#364](https://github.com/matrix-org/matrix-appservice-slack/issues/364))
- Correct database name in a code example to slack_bridge ([\#365](https://github.com/matrix-org/matrix-appservice-slack/issues/365))
- Minor wording changes in `getting_started.md` ([\#366](https://github.com/matrix-org/matrix-appservice-slack/issues/366))
- Use a descriptive label for a link in README.md ([\#367](https://github.com/matrix-org/matrix-appservice-slack/issues/367))
- Add documentation for Team Sync ([\#372](https://github.com/matrix-org/matrix-appservice-slack/issues/372))

Internal Changes
----------------

- Add decorators to provisioning functions ([\#358](https://github.com/matrix-org/matrix-appservice-slack/issues/358))
- Bump minimist from 1.2.0 to 1.2.2 ([\#362](https://github.com/matrix-org/matrix-appservice-slack/issues/362))
- Correct ISlackEvent.user type; remove unused declarations ([\#374](https://github.com/matrix-org/matrix-appservice-slack/issues/374))
- Enable code linting for no-any where it does matter ([\#375](https://github.com/matrix-org/matrix-appservice-slack/issues/375))
- Fix read the docs and add new page to nav bar ([\#379](https://github.com/matrix-org/matrix-appservice-slack/issues/379))
- Upgrade various low-risk dependencies ([\#381](https://github.com/matrix-org/matrix-appservice-slack/issues/381))
- Upgrade uuid dependency ([\#382](https://github.com/matrix-org/matrix-appservice-slack/issues/382))
- Upgrade quick-lru dependency (requires NodeJS >=10) ([\#383](https://github.com/matrix-org/matrix-appservice-slack/issues/383))
- Add Launch config for VS Code and enable SourceMaps ([\#384](https://github.com/matrix-org/matrix-appservice-slack/issues/384))
- Add error and debug logs to .gitignore ([\#385](https://github.com/matrix-org/matrix-appservice-slack/issues/385))
- Remove chalk as a direct dependency ([\#386](https://github.com/matrix-org/matrix-appservice-slack/issues/386))
- Upgrade dependency pg-promise 10, which requires PostgreSQL 11 ([\#387](https://github.com/matrix-org/matrix-appservice-slack/issues/387))
- Fix PostgreSQL errors when a metric activity is recorded twice ([\#393](https://github.com/matrix-org/matrix-appservice-slack/issues/393))
- Updated dependency `matrix-appservice-bridge` to `1.12.2` ([\#396](https://github.com/matrix-org/matrix-appservice-slack/issues/396))

1.1.0 (2020-02-21)
===================

No significant changes.

1.1.0-rc1 (2020-02-19)
===================

Features
--------

- Add ability to sync Slack channels and users automatically to Matrix ([\#331](https://github.com/matrix-org/matrix-appservice-slack/issues/331))
- Sync Slack membership changes to Matrix ([\#332](https://github.com/matrix-org/matrix-appservice-slack/issues/332))
- Add `whoami` user command. ([\#337](https://github.com/matrix-org/matrix-appservice-slack/issues/337))
- Create private rooms on demand if it doesn't exist ([\#340](https://github.com/matrix-org/matrix-appservice-slack/issues/340))

Bugfixes
--------

- Fix edits from Matrix appearing as fallback text. ([\#324](https://github.com/matrix-org/matrix-appservice-slack/issues/324))
- Fix issue where Slack edits would sometimes not appear as Matrix edits. ([\#325](https://github.com/matrix-org/matrix-appservice-slack/issues/325))
- Fix issue where messages from the bot would be interpreted as commands. ([\#329](https://github.com/matrix-org/matrix-appservice-slack/issues/329))
- Fix matrix replies not showing up on slack ([\#336](https://github.com/matrix-org/matrix-appservice-slack/issues/336))
- Allow webhook/oauth/event requests with prefixes. ([\#339](https://github.com/matrix-org/matrix-appservice-slack/issues/339))
- Fix issue where slack bot actions may fail (such as listing channels). Also increase the number of channels returned when provisioning ([\#355](https://github.com/matrix-org/matrix-appservice-slack/issues/355))

Internal Changes
----------------

- SIGTERM now causes a clean exit ([\#330](https://github.com/matrix-org/matrix-appservice-slack/issues/330))
- Move ghost handing to `SlackGhostStore` ([\#335](https://github.com/matrix-org/matrix-appservice-slack/issues/335))
- New installations should use a "Classic Slack app" rather than a new Slack App for OAuth. More details in README.md ([\#356](https://github.com/matrix-org/matrix-appservice-slack/issues/356))

1.0.2 (2019-11-13)
===================

Features
--------

- Messages bridged to Slack now get links with text-based content unfurled ([\#266](https://github.com/matrix-org/matrix-appservice-slack/issues/266))

Bugfixes
--------

- Fix Markdown link replacements deleting link text, links, and text between links. ([\#299](https://github.com/matrix-org/matrix-appservice-slack/issues/299))
- Fix Matrix images being sent as the filename only on Slack ([\#302](https://github.com/matrix-org/matrix-appservice-slack/issues/302))
- Mentions will now work if followed by a colon and a space ([\#320](https://github.com/matrix-org/matrix-appservice-slack/issues/320))

Improved Documentation
----------------------

- Fix minor typos in documentation that made it inconsistent ([\#306](https://github.com/matrix-org/matrix-appservice-slack/issues/306))
- Fix syntax typo for service start command. ([\#317](https://github.com/matrix-org/matrix-appservice-slack/issues/317))

1.0.1 (2019-10-08)
===================

Features
--------

- You can now specify the appservice port in the config. ([\#295](https://github.com/matrix-org/matrix-appservice-slack/issues/295))

Bugfixes
--------

- Fixes to matrix -> slack message formatting to ensure consistent success. ([\#280](https://github.com/matrix-org/matrix-appservice-slack/issues/280))
- Typescript now builds correctly after a typing change on the upstream node-slack library. Thanks @kampka ([\#288](https://github.com/matrix-org/matrix-appservice-slack/issues/288))
- Fix webhooks not being able to set a displayname and erroneously deduplicating messages. ([\#291](https://github.com/matrix-org/matrix-appservice-slack/issues/291))
- Fix issue where migrating slack users to postgres would fail. ([\#294](https://github.com/matrix-org/matrix-appservice-slack/issues/294))

Internal Changes
----------------

- Fix compile issues related to `Logger` ([\#296](https://github.com/matrix-org/matrix-appservice-slack/issues/296))

1.0.0 (2019-10-03)
===================

This release marks the end of the 1.0RC period. Please see [UPGRADE](UPGRADE.md)
for notes on how to upgrade your bridge from 0.3.2 to 1.0.

Features
--------

- Add documentation built by RTD at https://matrix-appservice-slack.rtfd.io ([\#273](https://github.com/matrix-org/matrix-appservice-slack/issues/273))

Bugfixes
--------

- Fix migrator bug where it would not find an access token ([\#267](https://github.com/matrix-org/matrix-appservice-slack/issues/267))
- Fix issue where Slack webhooks would not be able to send messages to Matrix. ([\#269](https://github.com/matrix-org/matrix-appservice-slack/issues/269))
- Fix issue where uploading large files will crash the bridge. ([\#264](https://github.com/matrix-org/matrix-appservice-slack/issues/264))
- Lock around avatar updates so it doesn't race. ([\#274](https://github.com/matrix-org/matrix-appservice-slack/issues/274))

Improved Documentation
----------------------

- Update documentation for the bridge to include more information on Docker. Thanks @kingoftheconnors. ([\#168](https://github.com/matrix-org/matrix-appservice-slack/issues/168))
- Added migration instructions for docker users ([\#268](https://github.com/matrix-org/matrix-appservice-slack/issues/268))

1.0.0-rc6 (2019-09-27)
=======================

Bugfixes
--------

- Do not handle slack tombstone messages as edits ([\#262](https://github.com/matrix-org/matrix-appservice-slack/issues/262))
- Fix issue where metrics would not report user activity ages ([\#263](https://github.com/matrix-org/matrix-appservice-slack/issues/263))

1.0.0-rc5 (2019-09-25)
=======================

Bugfixes
--------

- Fix bug where teams would start echoing messages after accepting an oauth request. ([\#260](https://github.com/matrix-org/matrix-appservice-slack/issues/260))
- Fix issue where using RTM on large deployments would trigger Slack to turn off Event subscriptions ([\#261](https://github.com/matrix-org/matrix-appservice-slack/issues/261))

1.0.0-rc4 (2019-09-24)
=======================

Bugfixes
--------

- Fix multi-person DMs being marked with the group (private channel) type rather than the mpim type. ([\#253](https://github.com/matrix-org/matrix-appservice-slack/issues/253))
- Connecting an account via OAuth will no longer barf on the lack of a `puppeting` parameter ([\#254](https://github.com/matrix-org/matrix-appservice-slack/issues/254))
- Don't log stack traces for missing rooms, teams or events ([\#255](https://github.com/matrix-org/matrix-appservice-slack/issues/255))
- Don't log the whole response object when an error occurs when sending slack requests ([\#256](https://github.com/matrix-org/matrix-appservice-slack/issues/256))
- Fix .toUpperCase() errors due to the bridge trying to handle unknown deleted messages ([\#257](https://github.com/matrix-org/matrix-appservice-slack/issues/257))

Internal Changes
----------------

- Update datastore.md with a few more options ([\#239](https://github.com/matrix-org/matrix-appservice-slack/issues/239))
- Fix issue where towncrier would wrongly link to matrix-appservice-slack-issues ([\#251](https://github.com/matrix-org/matrix-appservice-slack/issues/251))
- Towncrier should check against develop for changelog changes ([\#258](https://github.com/matrix-org/matrix-appservice-slack/issues/258))

1.0.0-rc3 (2019-09-24)
=======================

Bugfixes
--------

- Ensure users enter the correct type of token into the link command ([\#243](https://github.com/matrix-org/matrix-appservice-slack/issues/243))
- Fix issue where the bridge will not start if a team cannot connect to RTM. ([\#247](https://github.com/matrix-org/matrix-appservice-slack/issues/247))

Internal Changes
----------------

- Log more information during startup ([\#246](https://github.com/matrix-org/matrix-appservice-slack/issues/246))

1.0.0-rc2 (2019-09-18)
=======================

Features
--------

- Suppport puppeted reactions/redactions ([\#235](https://github.com/matrix-org/matrix-appservice-slack/issues/235))

Bugfixes
--------

- Remove option slack_user_token on link command ([\#236](https://github.com/matrix-org/matrix-appservice-slack/issues/236))
- Messages from puppeted accounts are no longer duplicated over the bridge ([\#237](https://github.com/matrix-org/matrix-appservice-slack/issues/237))
- Do not send messages to slack with no content ([\#238](https://github.com/matrix-org/matrix-appservice-slack/issues/238))

1.0.0-rc1 (2019-09-13)
=======================

**This is the first RC of a major restructure of the bridge's architecture. Please do NOT upgrade production bridges onto this release**

Features
--------

- Add caching option to config to limit the number of stored users in memory ([\#228](https://github.com/matrix-org/matrix-appservice-slack/issues/228))
- The bridge now has support for the RTM API. See the README for more information. ([\#164](https://github.com/matrix-org/matrix-appservice-slack/issues/164))
- Support Postgresql and implement generic Datastores. ([\#186](https://github.com/matrix-org/matrix-appservice-slack/issues/186))
- A datastore migration script is included. ([\#190](https://github.com/matrix-org/matrix-appservice-slack/issues/190))
- Add a /health endpoint. ([\#199](https://github.com/matrix-org/matrix-appservice-slack/issues/199))
- Add support for puppeting Slack accounts. ([\#200](https://github.com/matrix-org/matrix-appservice-slack/issues/200))

Bugfixes
--------

- Fix issue where DMs can race while the DM room is being created. ([\#219](https://github.com/matrix-org/matrix-appservice-slack/issues/219))
- Logging out your personal puppeting token no longer logs out the whole workspace. ([\#220](https://github.com/matrix-org/matrix-appservice-slack/issues/220))
- Correctly add reply fallbacks on messages in threads, and edits in threads. Thanks @Cadair. ([\#169](https://github.com/matrix-org/matrix-appservice-slack/pull/169)
- Correctly bookeep threads when we reply on matrix. Thanks @Cadair. ([\#194](https://github.com/matrix-org/matrix-appservice-slack/pull/194)

Internal Changes
----------------

- The project now uses TypeScript for source code ([\#152](https://github.com/matrix-org/matrix-appservice-slack/issues/152))
- The project now has integration testing! ([\#181](https://github.com/matrix-org/matrix-appservice-slack/pull/181))
- The project now uses towncrier for changelog management. ([\#216](https://github.com/matrix-org/matrix-appservice-slack/issues/216))
- Room storage is now handled in a dedicated class ([\#225](https://github.com/matrix-org/matrix-appservice-slack/issues/225))
- We now use the Slack Node library for calls ([\#185](https://github.com/matrix-org/matrix-appservice-slack/issues/185))
- Add CONTRIBUTING.md ([\#207](https://github.com/matrix-org/matrix-appservice-slack/issues/207))

Changes in 0.3.2 (2019-07-22)
=============================

Bugfixes:
- `this.main` should have just been `main`

Changes in 0.3.1 (2019-07-22)
=============================

Bugfixes:
- Fixed issue where invalid slack ghost ids were being used for pills #167.
- Correctly add reply fallbacks on messages in threads, and edits in threads #169. Thanks @Cadair!
- Fix an issue where webhooks would fail to bridge across messages #165.

Changes in 0.3.0 (2019-07-19)
=============================

No changes since 0.3.0-rc3

Changes in 0.3.0-rc3 (2019-07-12)
=============================
Bugfixes:
- Fix slack -> matrix emote messages
- Stop logging bodies

Changes in 0.3.0-rc2 (2019-07-11)
=============================
Bugfixes:
- Remove call to onSlackReactionRemoved (as it's not used)
- teams.db path should use dbdir #156. Thanks @vrutkovs

Changes in 0.3.0-rc1 (2019-07-05)
=============================

Features:

Special shoutout to @Cadair for this release, who dedicated a lot of his time to these features.

- Implement message deletion #129.
- Add support for edits #130.
- Add support for reactions #131.
- Add support for threading (using replies) #132.
- Support displayname and avatar lookups for Slack bots #141
- Replace channel mentions with canonical aliases for bridged rooms #146.
- Support slack attachments #126 #147. Thanks @umitalp for the inital groundwork and @Cadair for the cleanup.

Bugfixes:

- Fix the discrepancy between nicks and names in pills and mentions #111. Thanks @Cadair!
- Fix an issue where slack thumbnails were always assumed to be JPEGs #123. Thanks @Berulacks

Misc:

- Update README to include instructions on authentication setup #140. Thanks @ineiti.
- Remove duplication of registration path and tidy example config #143. Thanks @Cadair.
- Add a dockerfile #145. Thanks @Cadair.

Changes in 0.2.0 (2018-10-24)
=============================

No changes since rc3

Changes in 0.2.0-rc3 (2018-10-23)
=============================
Bugfixes:
- Fix S->M mentions being accidentally escaped. #109 Thanks @Cadair!

Changes in 0.2.0-rc2 (2018-10-20)
=============================

Bugfixes:
- Users can now log out from their slack account.
- The emoji key name is now sent if the text could not be replaced.

Changes in 0.2.0-rc1 (2018-10-18)
=============================

NOTE: This is the first release of the Slack bridge. 0.1.0 has been the version number
for previous efforts but was never an official release. The list below is all the changes
merged onto the `develop` branch.

Features:

- Support for the Slack Bot API to allow users to bridge their communities with more features than
  using webhooks! #89. Thanks to @perissology for doing the legwork there.
- More provisioning APIs to support the new Bot API bridging methods. #101
- Support triple backtick code syntax #85
- Add support for winston logging through the new bridge component #94
- Allow specifying a dbdir for custom locations of stores #95. Thanks @Cadair!
- Convert Riot Pills to Slack mentions #96. Thanks @Cadair!
- Add support for conversion of snippets to code messages in Matrix #97. Thanks @Cadair!
- Add support for "gitter bridge" style edit messages #98. Thanks @Cadair!
- Implement bridging of Matrix mentions to Slack #99. Thanks @Cadair!

Bugfixes:

- Fallback to userstore for making user pills if the Slack API fails to find a user #84
- Fixed file uploads so they work again #91. Thanks @Cadair!
- Fixed emoji not being substituted on the Matrix side #103.

Misc:

- The bridge now uses matrix-appservice-bridge 1.7.0

repository: matrix-org/matrix-appservice-slack

branch_name: refs/heads/develop

gha_language: TypeScript

repo_name: matrix-org/matrix-appservice-slack


text:
# python is a collection of useful python scripts.
## ct.py - A script to generate code from a code template file.
ct.py scans a .ct file (a code template file) and generates the code as per the templates defines in the code template file.
Here is a sample code template file (`sample.ct`)
```
<template class="Suffix,Type" range="(Int,int) (Int32,int32) (UInt32,uint32)">
// SumOfSuffix is a method which adds two Type and returns their sum.
func SumOfSuffix(v1, v2 Type) Type {
    return v1 + v2
}

</template>
```

when you run ct.py against the above `sample.ct` file like below:
```python ct.py sample.ct```
Then following code will be generated.
```
$ python ct.py sample.ct
// SumOfInt is a method which adds two int and returns their sum.
func SumOfInt(v1, v2 int) int {
    return v1 + v2
}

// SumOfInt32 is a method which adds two int32 and returns their sum.
func SumOfInt32(v1, v2 int32) int32 {
    return v1 + v2
}

// SumOfUInt32 is a method which adds two uint32 and returns their sum.
func SumOfUInt32(v1, v2 uint32) uint32 {
    return v1 + v2
}

```
As you can notice, that the code provided in the template file `sample.ct`, is parsed and processed by substituting the `Suffix` by the first argument from the entries in the template range attribute and by substituting `Type` with the second argument.
This specially helpful for programming languages where built in generics/templates are not supported yet.

Even if the programming language provides the generic data handling through reflections, still this type of generated code is always better and efficient over the reflections.

You can define more than one template in the same file.
A template starts with the `template` tag and contains following attributes:
- class
- range

class attribute contains the comma seperated tokens which needs to be substituted with values when template code is processed.
range attribute contains the values that need to be substituted in template for each token metioned in the class. The values should be grouped within the `(` and `)`. More than one such group can be provided. In such cases when more than one value group is provided, the template body will be processed for each value group mentioned in the range attribute.

repository: vsbpro/python

gha_language: Python

repo_name: vsbpro/python


text:
---
title: RoutingData
---
## ININ.PureCloudApi.Model.RoutingData

## Properties

|Name | Type | Description | Notes|
|------------ | ------------- | ------------- | -------------|
| **QueueId** | **string** | The identifier of the routing queue | |
| **LanguageId** | **string** | The identifier of a language to be considered in routing | [optional] |
| **Priority** | **int?** | The priority for routing | [optional] |
| **SkillIds** | **List<string>** | A list of skill identifiers to be considered in routing | [optional] |
| **PreferredAgentIds** | **List<string>** | A list of agents to be preferred in routing | [optional] |
| **ScoredAgents** | [**List<ScoredAgent>**](ScoredAgent.html) | A list of scored agents for routing decisions. For Agent Owned Callbacks use one scored agent with a score of 100. | [optional] |
| **RoutingFlags** | **List<string>** | An array of flags indicating how the conversation should be routed. Use \"AGENT_OWNED_CALLBACK\" when creating an Agent Owned Callback. | [optional] |
{: class="table table-striped"}

repository: MyPureCloud/platform-client-sdk-dotnet

gha_language: C#

repo_name: MyPureCloud/platform-client-sdk-dotnet


text:
---
title: The cruiser Hoosier V wins
tags:
  - Feb 1920
---

The cruiser Hoosier V wins the 110 mile Bimini - Miami race in 3 hours 55 minutes and 15 seconds.

Newspapers: **Daily Miami Metropolis, The Miami Metropolis (daily), The Daily Metropolis or Miami Daily Metropolis**

Page: **1**, Section: **N/A**


text:
#### Spinnaker Dockerfile GID/UID changes

The Dockerfile of each Spinnaker microservice (except Halyard and Deck) now specifies an explicit GID and UID (10111) for the `spinnaker user`.

**Impact**

This breaking change affects you if you rely on the previous non-deterministically assigned GID and UID. For example, this might have been the case in a custom Kubernetes security context.

**Introduced in**: Armory 2.22

repository: akshayabd/docs

gha_license_id: NOASSERTION

repo_name: akshayabd/docs


text:
---
abstract:
authors:
- L. J. Livermore, C. Scott, I, Bell, P. Plaha, C. Vallance, O. Ansorge
date: "2018-05-18"
doi: ""
featured: false
image:
  caption: 'Image credit: Own Work'
  focal_point: ""
  preview_only: false
projects: []
publication: ''
publication_short: ""
publication_types:
- "2"
publishDate: "2018-05-18"
summary: Demonstrated proof of concept that Raman spectroscopy can be used for rapid, intraoperative glioma genetic classification.  Abstract and Poster - The Internation Society for Clinical Spectroscopy (SPEC2018), Scotland, June 10th - 15th.
tags:
- Source Themes
title: Rapid genetic classification of gliomas using Raman spectroscopy
url_code: ""
url_dataset: ""
url_pdf:
url_poster: ""
url_project: ""
url_slides: ""
url_source: ""
url_video: ""
---

Background:

Raman spectroscopy probes the unique molecular vibrations of a sample to accurately characterise its molecular composition. No sample processing is required allowing for rapid analysis of fresh tissue. The genetic classification of gliomas, particularly isocitrate dehydrogenase (IDH) mutations, is critical for clinical decision-making. With the development of new drugs targeting specific glioma genetic subtypes it will become increasingly important for surgeons to be aware of the genetics of the tumour at the time of operation to inform their surgical strategy. The aim of this study was to use Raman spectroscopy on fresh samples taken straight from the operating theatre and to classify gliomas according to their genetic subtypes. Similar classification models were built using cryosections and formalin-fix paraffin embedded (FFPE) sections.

Methods:

Raman spectra were collected using a Renishaw benchtop RA800 series spectrometer. Parallel sections underwent immunohistochemistry with targeted genetic sequencing when required to confirm the following five glioma subtypes: Glioblastoma, IDH- mutated; glioblastoma, IDH-wildtype; astrocytoma, IDH-mutated; astrocytoma, IDH-wildtype; oligodendroglioma).

Results:

Fresh tissue samples from 50 patients were collected (6 glioblastoma, IDH- mutated; 33 glioblastoma, IDH-wildtype; 6 astrocytoma, IDH-mutated; 1 astrocytoma, IDH- mutated; 3 oligodendroglioma, 1 excluded). A principal component-linear discriminant analysis (PCA-LDA) model demonstrated 80%-95% sensitivity and specificity for predicting the five glioma genetic subtypes. For prediction of IDH mutation alone the model gave a 92% sensitivity and 91% specificity. 86 cryosection and 117 FFPE samples underwent Raman with models demonstrating 87-94% sensitivity and 77-80% specificity for predicting IDH mutations. In the fresh tissue samples, the mean time for spectra collection was 9.5 minutes with the whole process from tumour biopsy to genetic classification taking under 30 minutes.

Conclusion:

These results demonstrate proof of concept that Raman spectroscopy can be used for rapid, intraoperative glioma genetic classification. Further work is being done to refine model building to increase classification performance.

repository: ConnorScott-Ox/Professional-Profile

path: /content/post/Raman Genetic/index.md

repo_name: ConnorScott-Ox/Professional-Profile


text:
# yesod-purescript

Work in progress integration of PureScript (see https://www.purescript.org) into Yesod.

Goals:

- environment for easy PureScript development (with dev flag):
  - auto refresh: sources compiled on demand or when file changes, with cache,
  - convenient display of error messages.
- a way of embedding compiled PureScript into final app binary using
  TemplateHaskell.

## Install

1. Clone repo: `git clone https://github.com/mpietrzak/yesod-purescript.git`
2. Add source to cabal sandbox: `cd yout_project_dir && cabal sandbox add-source path_to_yesod_purescript_clone`.

## Usage

See https://github.com/mpietrzak/yesod-purescript-sample/.

The easiest way is to look at second commit in sample's repo:
https://github.com/mpietrzak/yesod-purescript-sample/commit/6e026b63deac97ac55c710e8fcf1f4e550a07bb3

To use yesod-purescript, you have to:

1. add yesod-purescript dependency to your project's cabal file,
2. add a field in app's data type for PureScriptSite and add instance of
   YesodPurescript typeclass for your app's data type,
3. add subsite route to PureScriptSite,
4. put your purs files in configured subdirectories of your project;
   by default those directories are:
   - `purs` - your code,
   - `bower_components` - dependencies (since most likely you'll use bower to get those).
5. Reference your code in HTML pages.

## Tutorial

See https://github.com/mpietrzak/yesod-purescript-sample/.

Rather verbose step by step instructions follow.

### 1. Dependency

Add `yesod-purescript` to `build-depends` in .cabal file.

### 2. App data and instance

Assuming you have basic project generated by running `yesod init`.

Go to `Foundation.hs`.

First add `Yesod.PureScrtipt` import to this file.

Notice fields in your App data like:

`appLogger :: Logger`

Add similar line for PureScript at the end:

`appPureScript :: PureScriptSite`.

Then add instance of YesodPureScript: `instance YesodPureScript App`.
You can add this after all other instances (order does not really matter).

Go to `Application.hs`:

- add import of `Yesod.PureScript`,
- find `makeFoundation` function,
  - add `appPureScript <- createYesodPureScriptSite def` close to top of this function.

### 3. Add subsite route

Add this line to `config/routes` after auth route definition:

`/purs PureScriptR PureScriptSite appPureScript`

This attaches Yesod PureScript Subsite at /purs.
Opening url http://localhost:3000/purs/Foo.js will try to
find and compile module Foo.

There's also status page at http://localhost:3000/purs which lists
loaded modules and module loading errors (if any).

### 4. Purs files

Put Hello.purs in purs subdirectory:

    module Hello (main)
    where

    import Control.Monad.Eff

    foreign import log
    """function log(s) {
        return function() {
            return window.console.log(s);
        };
    }""" :: forall eff. String -> Eff eff {}

    main = log "hello"

Create empty `bower_components` dir in your project dir.

Start dev server and open http://localhost:3000/purs/Hello.js.

### 5. Reference PureScript in HTML

Open Handler/Home.hs.
Add import: `import Yesod.PureScript (getPureScriptRoute)`.
Change getHomeR to reference your Hello.js script using addScript:

    getHomeR :: Handler Html
    getHomeR = do
        (formWidget, formEnctype) <- generateFormPost sampleForm
        let submission = Nothing :: Maybe (FileInfo, Text)
            handlerName = "getHomeR" :: Text
        defaultLayout $ do
            aDomId <- newIdent
            setTitle "Welcome To Yesod!"
            addScript $ PureScriptR $ getPureScriptRoute ["Hello"]
            $(widgetFile "homepage")

repository: wuzzeb/yesod-purescript

gha_language: Haskell

repo_name: wuzzeb/yesod-purescript


text:
# EWB-USC Website: Ruby Source
## How to run it locally
1. Install Ruby (I recommend rvm https://rvm.io/)
2. Git clone
3. bundle install
4. rackup

## How to make changes
The website is made with a few open source projects and I recommend looking over their documentation:
- Haml (html alternative) http://haml.info/docs.html
- Bootstrap (for responsive design / assets) http://getbootstrap.com/
- Lightbox2 (for picture zoom/animations) http://lokeshdhakar.com/projects/lightbox2/
- Sinatra http://www.sinatrarb.com/documentation.html
- Sinatra Flash (for flash messages after email is sent) https://github.com/SFEley/sinatra-flash
- Sinatra Simple Navigation https://github.com/codeplant/sinatra-simple-navigation

repository: ewbusc/website

repo_name: ewbusc/website


text:
# SamsaraApi.TripsParam

## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**groupId** | **Number** | Group ID to query. |
**vehicleId** | **Number** | Vehicle ID to query. |
**startMs** | **Number** | Beginning of the time range, specified in milliseconds UNIX time. |
**endMs** | **Number** | End of the time range, specified in milliseconds UNIX time. |

repository: samsarahq/samsara-js

repo_name: samsarahq/samsara-js


text:
# Exercise 1

Write a concurrent C program that allocates two buffers of 16 entries, normal and urgent, which will be used as circular buffers for communications between two threads: producer and consumer.

The main thread creates these two threads, and waits for their termination.

The producer thread loops 100 times. At every cycle it:

- sleeps between 1 and 10 milliseconds

- gets in ms the current time in milliseconds (use the function current_timestamp)

- randomly selects the normal or urgent queue with probability p and 1-p, respectively, p is given as an argument of the command line

- prints the information including ms, and 0 or 1, respectively if the selected buffer is normal or urgent

- puts in the selected buffer these values.

The consumer thread loops 100 times

- sleeping 10 milliseconds

- waiting that the producer produces at least an information

- getting an information from the urgent buffer, unless it is empty, otherwise it gets the information from the normal buffer

- printing the information retrieved.

```
long long current_timestamp() {
  str`uct timeval te;
  gettimeofday(&te, NULL); // get current time
  long long milliseconds = te.tv_sec*1000LL + te.tv_usec/1000;
  ret`urn milliseconds;
}
```


text:
Setup
=====

Requirements
-------------

-   Linux Server (Ubuntu 16.04 used in development)
-   Git
-   NodeJS
-   NPM
-   Python 2.7
-   Python Pip
-   Apache Spark
-   PM2 (Production Node Server)

Installation
-----------------

To install git run
```
sudo apt-get install git
```
To install NodeJS and NPM run the following commands
```
sudo apt-get install nodejs

sudo apt-get install npm

sudo ln -s /usr/bin/nodejs /usr/bin/node
```
To install Pip run the following
```
sudo apt-get install python-pip
```
To install Apache Spark follow the following tutorial

<https://www.tutorialspoint.com/apache_spark/apache_spark_installation.htm>

then add the following to \~/.profile
```
export SPARK\_HOME=/usr/local/spark

export PYTHONPATH=\$SPARK\_HOME/python:\$SPARK\_HOME/python/build:\$PYTHONPATH

export PYTHONPATH=\$SPARK\_HOME/python/lib/py4j-0.10.4-src.zip:\$PYTHONPATH
```
To install PM2 run the following command
```
sudo npm install pm2 –g
```
When the above has been completed, create a folder for the application
then navigate into the folder. Then get the application from GitHub by
running the following command.
```
git clone <https://github.com/matthew110395/DataViewer.git>
```
Then run the following command
```
Npm install
```
Then navigate to the Twitter folder and run the following command
```
pip install -r requirements.txt
```
Navigate to the parent directory and run the following command to start
the server
```
Pm2 start server.js
```
To connect to the Twitter API, the app must be registered with Twitter.

1.  Browse to <https://apps.twitter.com/>
2.  Click Create an Application
3.  Enter Information about your application
4.  Click Create Application
5.  Click the Keys and Access Tokens Tab
6.  Click Create my access token at the bottom of the page
7.  Note the consumer key, consumer secret, access token and access
    token Secret
8.  Enter the above details into the configuration screen of the data
    viewer application


text:
# Django REST Framework: ModelSerializer and Generic Views

_Written by masnunon May 14, 2017_

**(This post is a part of a tutorial series on [Building REST APIs in Django](http://polyglot.ninja/django-building-rest-apis/))**

In our last post on Serializers, we learned how to use Serializers with APIViews. In this post we will discuss how ModelSerializer and the Generic views can take things even further.

## Model + Serializer = ModelSerializer

That one line equation is probably enough to explain the concepts of `ModelSerializers`. In our example, we had to define similar fields on both Serializer and the Model class. We had to write codes for the same fields twice. That is 2x the efforts. `ModelSerializers` can help solve that problem. A `ModelSerializer` might remind us of `ModelForm`. The idea is the same. We extend `ModelSerializer` and pass it the model. The serializer inspects the model and knows what fields to use and what their types are.

Let’s refactor our old serializer to be a `ModelSerializer`:

```
from rest_framework import serializers

from .models import Subscriber

class SubscriberSerializer(serializers.ModelSerializer):
    class Meta:
        model = Subscriber
        fields = "__all__"
```

That’s all we need – our new `SubscriberSerializer` now infers the fields from the model (`Subscriber`) we passed to it. We can however choose which fields should be used while serializing / deserializing. In this example we pass the special value “__all__” which means we want to use all fields. But in many cases we would want to selectively use some fields. For example, for Django’s default `User` model, we don’t want to leak the `password` data to public, so we will exclude the `password` field on our User model serializer.

If we try out our API, we would notice everything is working just like before. Except our serializer class is now shorter and more concise. Awesome, right? Let’s move on to our next topic – generic views.

## Generic Views

If you have decent amount of experience with Django, you probably have already come across and used the built in generic views. They provide useful functionality around common database operations. For example, we can use the generic list view and provide it with a queryset and the template, it will do the rest for us.

In the same way, we can pass a queryset and serializer to a `ListAPIView` and it will create the list view for us. Same way we can use `CreateAPIView` to implement the create view. What’s even better, since we’re using class based views, we can use both of them together, cool, no? Let’s refactor old code to use these two classes.

```
from rest_framework.generics import ListAPIView, CreateAPIView

from .serializers import SubscriberSerializer
from .models import Subscriber

class SubscriberView(ListAPIView, CreateAPIView):
    serializer_class = SubscriberSerializer
    queryset = Subscriber.objects.all()
```

Please note how we no longer need to provide the `get` and `post` methods but the API still works. The generic views just know how to deal with those.

There is actually a `ListCreateAPIView` which is the combination of these two as you can probably understand from the class name. We can just use that one.

```
from rest_framework.generics import ListCreateAPIView

from .serializers import SubscriberSerializer
from .models import Subscriber

class SubscriberView(ListCreateAPIView):
    serializer_class = SubscriberSerializer
    queryset = Subscriber.objects.all()
```

As you can see this generic view is quite helpful for generating “collection” resources (`/api/subscriber`) easily. There’s also `RetrieveUpdateDestroyAPIView` which we can use to generate “element” resources. As you can guess from the name, they provide `get`, `put`, `patch` and `delete` handler for single items (`/api/subscriber/12`).

Generic views are very handy for quickly generating resources from our models (querysets actually). This allows rapid API development.

## What’s Next?

We have seen how we can very quickly create working REST APIs using model serializers and generic views. Things will be even more amazing when we learn about `ViewSets`, specially `ModelViewSets`. You will have to wait for our next post for those 🙂

In case you didn’t notice, we have a mailing list where you can subscribe to get latest updates. We don’t spam, only contents we post. Also if you enjoyed reading the post and found it informative, shouldn’t you share it with your friends? 😀

repository: taoteg/restful-python-tutorials

repo_name: taoteg/restful-python-tutorials


text:
# Voximplant Quick Start Demo

Objective-C variant of source code for [Voximplant quickstart](https://voximplant.com/docs/references/articles/quickstart/voximplant-basics)

To run demo run make the following steps:

1. Execute `pod install` in checked out project
2. Open generated .xcworkspace
3. Select target `Example ObjC`
4. Change username and password and remove `#error` in [ViewController.m](ViewController.m#L7-9)
5. Build and run

repository: voximplant/ios-sdk-bitcode-demo

path: /Example ObjC/README.md

gha_language: Objective-C

repo_name: voximplant/ios-sdk-bitcode-demo


text:
# Portfolio Optimization with CQMs

Using Constrained Quadratic Models, we can set an objective function and constraints for a given problem. Here, we will be working on making a program which gives an optimized selection of stocks.

In this exercise, two-year data for 10 stocks are used and their average return rates are calculated using daily closing prices. The stocks that we will consider in this exercise are "T" (AT&T), "SFL" (FSL), "PFE" (Pfizer), "XOM" (Exxon Mobil), "MO" (Altria Group), "VZ" (Verizon Communications), "IBM" (IBM), "TSLA" (Tesla), "GILD" (Gilead Sciences), and "GE" (General Electric). In the folder `data` we have provided CSV files with daily closing prices and monthly returns for each stock in this period of time.

Using available data, we can analyze stocks individually. For example, the figure below shows a 50-day candlestick chart and its moving average over 5-day and 10-day windows for stock GE. However, a much more effective way to optimize a portfolio is to consider a collection of stocks and how they might balance each other out.

![Nice picture](readme_imgs/ge.png "Nice picture")

To effectively optimize a portfolio of stocks, we would like to take into consideration:

   1. average returns,

   2. available budget,

   3. and variance between stocks.

For condition 1, we use average return rates prepared in the CSV file, `monthly_returns.csv`, in order to build a model that will maximize our anticipated returns.

For condition 2, we use the last day's closing price from the file, `lastday_closing_price.csv`, to ensure that we are not exceeding the available budget.

For condition 3, we can compute the covariance between pairs of stocks from the average returns information that is available. Covariance allows us to take into account how similar or different the behavior of the two stocks are. When the covariance is large, the two stocks behave in a similar manner - if one stock value drops then it's likely that the other will as well. We want to minimize the covariance in order to minimize the risk of the portfolio. The covariance is calculated in the exercise program files and provided for use.

## Exercise 1

In exercise 1, we build a basic portfolio of two stocks in order to maximize returns.

Open up the code file `excercise_1.py` file.

   1. Add your API token in the `get_token` function

   2. Define a binary variable named `s_stk` for each stock 'stk', and store the variables in a list called `stocks`, which will be returned by the `define_variables` function

   3. In the `build_cqm` function:

      - Initialize the CQM object called `cqm`, and import any necessary packages

      - Add a constraint to the CQM to choose exactly two stocks. Use the label 'choose k stocks'.

      - Set an objective function in the CQM to maximize returns

   4. In the `sample_cqm` function:

      - Define the sampler to be used. Remember to import any necessary packages.

      - Sample the CQM object and return the SampleSet

## Exercise 2

For exercise 2, we start with the CQM built in exercise 1, and add a constraint for the available budget.

   1. Repeat steps 1 to 4 of exercise 1

   2. In the `build_cqm` function, add a constraint to the CQM that the cost of the purchased stock should be at most our budget. Use the label 'budget_limitation'.

## Exercise 3

For exercise 3, we start with the CQM built in exercise 2, and add an additional objective to minimize variance.

   1. Repeat steps 1 to 2 of exercise 2

   2. In the `build_cqm` function, add "minimize variance" to the objective. Some hints:

      - Determine each objective separately then add them together

      - Variance is computed as a quadratic term: `variance[i][j]*stock[i]*stock[j]`

repository: Rigon-QC/portfolio-optimization

repo_name: Rigon-QC/portfolio-optimization


text:
# OpenMP-Strictly-Diagonally-Dominant
##### More specifically, for a user-given number of threads:

1. The program checks if the A\[N]x\[N] matrix given by the user is [strictly diagonally dominant](https://en.wikipedia.org/wiki/Diagonally_dominant_matrix "wiki") or not
2. If so, it searches for the **max** abs element of the main diagonal of A matrix and prints it
3. Based on **max**, a new matrix A\[N]x\[N] is being created, where:
* `B[i][j] = max–abs(A[i][j]), i!=j`
* `B[i][j] = max, i==j`
4. On _B_ matrix, the **min** element along with its row and column gets found and printed

##### Compiled and executed with:
* `gcc -o main main.c -fopenmp`
* `./main`


text:
---
layout: default
---

# 1996-06-29 - PC-ness of nym.alias.net

## Header Data

From: Rich<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: e66fe0b016b450e7524164919be04eae706007b1d8c5cb18c10bcf38460434d0

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1996-06-29 05:56:11 UTC

Raw Date: Sat, 29 Jun 1996 13:56:11 +0800

## Raw message

```
{% raw  %}From: Rich<EMAIL_ADDRESS>Date: Sat, 29 Jun 1996 13:56:11 +0800
To<EMAIL_ADDRESS>Subject: PC-ness of nym.alias.net
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

-----BEGIN PGP SIGNED MESSAGE-----

On Fri, 28 Jun 1996, Anonymous wrote:

> I would appreciate any information members may have regarding the
> security/safety of the new nym server nym.alias.net (in "alpha" state) who
> posted here about 3 weeks ago. Nym.alias.net reportedly is the same
> machine as anon.lcs.mit.edu.
>
> Specifically, is the individual running the nym _known_ to cypherpunks, or
> is this an unknown about whom I should have serious doubts.

I could tell you who it is, but then I'd have to kill you. So let's just
stick to publicly available information.

According to the root DNS servers, which as we know are controlled by a ZOG
defense contractor, alias.net is an alias for alpha.jpunix.com, and
anon.lcs.mit.edu is indeed the same as nym.alias.net. alias2-dom is said to
get name service from Sameer and company, but that could be a trap.

Obviously, they've infiltrated pretty deep, but thanks to you, we know to
be careful.

 Who
knows?

Somewhat more seriously, wouldn't it be nice if the various remailers signed
each other's keys?

- -rich

-----BEGIN PGP SIGNATURE-----
Version: 2.6.2

iQBVAwUBMdScnJNcNyVVy0jxAQEwFQH/ZXv+9Nj5ZDjk5FpA33T+kw68H39p/SuW
Ab/hRfGGkZX97PIa50C7UVu4YROYE9RYcn7kalsZgFKOsJKAq3JKIw==
=1CQg
-----END PGP SIGNATURE-----

{% endraw %}
```

## Thread

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

+ Return to "["John A. Perry" <perry@alpha.jpunix.com>](/authors/john_a_perry_perry_at_alpha_jpunix_com_)"
+ Return to "[Rich <rich@netbox.com>](/authors/rich_rich_at_netbox_com_)"

+ 1996-06-29 (Sat, 29 Jun 1996 13:56:11 +0800) - PC-ness of nym.alias.net - _Rich<EMAIL_ADDRESS>  + 1996-06-29 (Sat, 29 Jun 1996 21:10:09 +0800) - [Re: PC-ness of nym.alias.net](/archive/1996/06/ef00d3f48c29545c7e2f6d5acaeb988416ad213d3cedcb1ba9bfd103afe04752) - _"John A. Perry"<EMAIL_ADDRESS>


text:
---
layout: post
title: "OsSCYL2"
description: ""
category: genes
tags: [resistance, cell death, R protein]
---

* **Information**
    + Symbol: OsSCYL2
    + MSU: [LOC_Os01g42950](http://rice.uga.edu/cgi-bin/ORF_infopage.cgi?orf=LOC_Os01g42950)
    + RAPdb: [Os01g0616100](https://rapdb.dna.affrc.go.jp/locus/?name=Os01g0616100)

* **Publication**
    + [A conserved clathrin-coated vesicle component, OsSCYL2, regulates plant innate immunity in rice.](http://www.ncbi.nlm.nih.gov/pubmed?term=A conserved clathrin-coated vesicle component, OsSCYL2, regulates plant innate immunity in rice.%5BTitle%5D), 2021, Plant Cell Environ.

* **Genbank accession number**

* **Key message**
    + Although mutants of OsSCYL2 showed additional defects in the photosynthetic system, they exhibited enhanced resistance to bacterial pathogens
    + Here, we show that mutation of OsSCYL2 in rice gave rise to a novel phenotype-hypersensitive response-like (HR) cell death in a light-dependent manner
    + OsSCYL2 interacted with OsSPL28, subunit of a clathrin-associated adaptor protein that is known to regulate HR-like cell death in rice

* **Connection**

[//]: # * **Key figures**


text:
# Paxcounter Data Collector

This is a tiny Node.JS app using TypeScript which is listening to a TTN console to collect data from a sensor and push it towards a NoSQL database. We use a MongoDB Atlas as database.

Each time a node uploads a payload into the TTN console, the collector pushes this payload into a MongoDB Atlas.

For a more detailed instruction, we highgly recommend this Repo, as main parts of the code are coming from there: https://github.com/nicbkw/thingsconf2019

**Thanks to The Thing Network UK & Nic Burkinshaw**

## Dependencies & Start

install dependencies:
`npm install`

start app:
`npm start`

## Environment variables
Setup the environment variables (sessionKey, AppKe, Username, Password etc.) by filling in the blanks in `.envTEMPLATE` file.
Finally, rename the file: `.env`

**note**: If want to publish your work later, your `.env` file wont be published to GitHub due that its mentioned in the `.gitignore` file.

## Troubleshooting
We experienced some small troubles when connecting to MongoDB. Maybe this hints could save you time and nerves:
### 1. speacial characters in env-variables
If you cannot connect to your ttn console, check your credentials.
**There are no special characters within the URI link allowed!**

**Solution:** Use the corresponding Hex value for your special characters instead: [https://ascii.cl/](https://ascii.cl/)
### 2. collection error
If your receive thisTypeError: `C'annot read property 'collection' of null'`this means, that there is no collection with the refered env-name existing

**Solutions:**
* Create the MongoDB collection before you try to connect
* Add your current device ip address to the whitelist (see: [MongoDB Atlas whitelist configuration](https://docs.atlas.mongodb.com/tutorial/whitelist-connection-ip-address/))

### 3. network error
**Solution:** Check whether network allows you to use the port: [http://portquiz.net:27017/](http://portquiz.net:27017/)

repository: Maxscha/paxcounterthf-collector

repo_name: Maxscha/paxcounterthf-collector