text:
deploy_freepbx
=========
[![Build Status](https://travis-ci.org/boxrick/deploy_freepbx.svg?branch=master)](https://travis-ci.org/boxrick/deploy_freepbx)

This role installs Freepbx, Asterisk and all the required mass of packages needed on a CentOS 7.x

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

This module requires Ansible 2.2

Role Variables
--------------

See defaults for variables and descriptions

Description
----------------

The intention of this role is to take everything here and place it into a role, it will basically take a fresh CentOS 7.XX system and deploy asterisk 14 and the latest Freepbx on the same machine.

To test this locally simple move into the 'tests' folder. Have Vagrant, Virtualbox and Ansible installed. Then type

`vagrant up`

Once it has done installing and configuring open a web browser and navigate to http://<IP_ADDRESS>:8080 or https://<IP_ADDRESS>:4443

https://wiki.freepbx.org/display/FOP/Installing+FreePBX+14+on+CentOS+7

Things to be aware of

* No iptables or firewalld configured, this will be an open system. After deploy it will be ready to be configured by the GUI and an IP
* As of 10/09/17 this works fine on a digital ocean Droplet.
* There are a few callouts to scripts in some of the source code, this can be worked around but will need to dissect these scripts and hope the source code doesn't change too much.
* Because much of this is pulling down tarballs and doing configure and make installs, there have been a number of static assumptions made based on the file it creates. This is to prevent 'changed' each time and make the code imutable.

So this is a starting point, my hope is to simplify the install of FreePBX and for people who wish to use it without all the commercial modules but still get the usage of the excellent GUI provided by FreePBX.

Example Playbook
----------------

Example to call:

    - hosts: all
      roles:
         - { role: deploy_freepbx }


text:
---
layout: ballerina-left-nav-release-notes
title: 2201.x.0 (Swan Lake)
permalink: /downloads/swan-lake-release-notes/2201-x-0/
active: 2201-x-0
redirect_from:
    - /downloads/swan-lake-release-notes/2201-x-0
    - /downloads/swan-lake-release-notes/2201.x.0/
    - /downloads/swan-lake-release-notes/2201-x-0-swan-lake/
    - /downloads/swan-lake-release-notes/2201-x-0-swan-lake
    - /downloads/swan-lake-release-notes/
    - /downloads/swan-lake-release-notes
---

### Overview of Ballerina 2201.x.0 (Swan Lake)

2201.x.0 (Swan Lake) is the <first> major release of <2022>, and it includes a new set of features and significant improvements to the compiler, runtime, standard library, and developer tooling. It is based on the <2022R1> version of the Language Specification.

### Update Ballerina

>**Info:** The version format has been revised. `2201.x.0 (Swan Lake)` represents the format of `$YYMM.$UPDATE.$PATCH ($CODE_NAME)`. For further information, see [Ballerina Swan Lake is on the Horizon](https://blog.ballerina.io/posts/ballerina-swan-lake-is-on-the-horizon/).

If you are already using Ballerina, use the [Ballerina update tool](/learn/cli-documentation/update-tool/#using-the-update-tool) to directly update to 2201.x.0 (Swan Lake). To do this:

1. Run the command below to get the latest version of the update tool.

   `bal update`

2. Run the command below to update your Ballerina version to 2201.x.0 (Swan Lake).

   `bal dist update`

#### Troubleshoot

If you already ran the `bal dist update` (or `bal dist pull 2201.x.0`) before the `bal update` command, follow the instructions below to recover your installation.

##### For macOS Users (`.pkg` installations)

1. Run the `rm ~/.ballerina/ballerina-version` command to delete the version configuration.
2. Run the `chmod 755 /Library/Ballerina/distributions/ballerina-2201.x.0/bin/bal` command to provide execute permissions for the `bal` command.
3. Run the `bal dist use 2201.x.0` command to switch to the 2201.0.0 version.

##### For Ubuntu Users (`.deb` installations)

1. Run the `rm ~/.ballerina/ballerina-version` command to delete the version configuration.
2. Run the `chmod 755 /usr/lib/ballerina/distributions/ballerina-2201.x.0/bin/bal` command to provide execute permissions for the `bal` command.
3. Run the `bal dist use 2201.x.0` command to switch to the 2201.0.0 version.

##### For CentOS Users (`.rpm` installations)

1. Run the `rm ~/.ballerina/ballerina-version` command to delete the version configuration.
2. Run the `chmod 755 /usr/lib64/ballerina/distributions/ballerina-2201.x.0/bin/bal` command to provide execute permissions for the `bal` command.
3. Run the `bal dist use 2201.x.0` command to switch to the 2201.0.0 version.

##### For Windows Users (`.msi` installations)

1. Run the `del %userprofile%\.ballerina\ballerina-version` command to delete the version configuration.
2. Run the `bal dist use 2201.x.0` command to switch to the 2201.0.0 version.

### Install Ballerina

If you have not installed Ballerina, then download the [installers](/downloads/#swanlake) to install.

### Migrate from Swan Lake Beta releases
>**Info:** If you have been using Swan Lake Beta releases, delete the `Dependencies.toml` files in your Ballerina packages when migrating to Balelrina 2201.0.0 (Swan Lake).

A few backward-incompatible changes have been introduced during the Swan Lake Beta program, and thereby, some of your existing packages may not compile with Ballerina 2201.0.0 (Swan Lake). Therefore, you need to delete the `Dependencies.toml` file to force the dependency resolver to use the latest versions of your dependencies.

### Language Updates

#### New features

#### Improvements

#### Bug fixes

To view bug fixes, see the [GitHub milestone for 2201.x.0 (Swan Lake)](https://github.com/ballerina-platform/ballerina-lang/issues?q=is%3Aissue+is%3Aclosed+label%3AType%2FBug+label%3ATeam%2FCompilerFE+milestone%3A%22Ballerina+2201.x.0%22).

### Runtime updates

#### Bug fixes

To view bug fixes, see the [GitHub milestone for 2201.0.0 (Swan Lake)](https://github.com/ballerina-platform/ballerina-lang/issues?q=is%3Aissue+is%3Aclosed+label%3AType%2FBug+label%3ATeam%2FjBallerina+milestone%3A%22Ballerina+2201.x.0%22).

### Standard library updates

#### New features

##### `graphql` package

#### Improvements

##### `graphql` package

### Code to Cloud updates

#### Improvements

#### Bug fixes

To view bug fixes, see the [GitHub milestone for 2201.x.0 (Swan Lake)](https://github.com/ballerina-platform/module-ballerina-c2c/issues?q=is%3Aissue+is%3Aclosed+milestone%3A%22Ballerina+2201.0.0%22+label%3AType%2FBug).

### Developer tools updates

#### New features

##### Ballerina Shell

##### Ballerina Update Tool

#### Improvements

##### Ballerina shell

##### Ballerina update Tool

#### Bug fixes

### Breaking changes

To view bug fixes, see the GitHub milestone for 2201.x.0 (Swan Lake) of the repositories below.

- [Language Server](https://github.com/ballerina-platform/ballerina-lang/issues?q=is%3Aissue+milestone%3A%22Ballerina+2201.x.0%22+is%3Aclosed+label%3ATeam%2FLanguageServer)
- [update tool](https://github.com/ballerina-platform/ballerina-update-tool/issues?q=is%3Aissue+milestone%3A%22Ballerina+2201.x.0%22+is%3Aclosed+label%3AType%2FBug)
- [OpenAPI](https://github.com/ballerina-platform/openapi-tools/issues?q=is%3Aissue+label%3AType%2FBug+milestone%3A%22Ballerina+2201.x.0%22+is%3Aclosed)

branch_name: refs/heads/master

extension: md

license_type: permissive


text:
# Akkeris Memcached CLI Plugin

Adds ability to flush cache and get statistics from memcached instances on Akkeris.

## Installation

```bash
aka plugins:install memcached
```

## Usage

Flush a memcached attached to an app:

```bash
aka memcached:flush -a [appname-space]
```

Pull statistics related to a memcached:

```bash
aka memcached -a [appname-space]
```

repository: akkeris/cli-memcached-plugin

gha_language: JavaScript

repo_name: akkeris/cli-memcached-plugin


text:
---
title: 'Getting Secure:  Transferring a domain to AWS and enabling HTTPS under nginx'
author:
  name: 'todd anderson'
date: '2016-02-15'
---
# Introduction
I recently decided to put this site under HTTPS after reading this article/interview with [Anselm Hannemann](https://helloanselm.com/) on __CSS-Tricks__:

> https://css-tricks.com/interview-web-security/

I had already been interested in moving to HTTPS with the advent of an open Certificate Authority, [Let's Encrypt](https://letsencrypt.org/), and my growing fascination with [Service Workers](https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API), which will only work under HTTPS. Not sure if I would ever have a need for offline support for this site, but it never could hurt to mess around.

In any event, I had decided it was time to explore putting custardbelly.com under HTTPS - please don't poke around, it needs a major update - and as I went about trying to set Let's Encrypt up on my current (_now old_) VPS host I was running into road blocks of predetermined OS'es and dependencies that were beyond my control, which can happen if you entrust hosting your domains through a general VPS provider.

To have more control over my environment, I decided to use the Amazon Web Services (__AWS__) knowledge I have gained from working intimately with it in my current job/role and spin up an EC2 instance to dedicate to my site - moving it off the VPS I previously had.

In doing so, I wanted to share my process and experiences to any of you that may be wondering how to do the same. As the title suggests but does not entirely convey, my process involved:

* [Moving a domain to an EC2 instance](#moving-a-domain-to-an-ec2-instance)
* [Transferring DNS records from a VPS to Amazon Route 53](#transferring-dns-records)
* [Setting up nginx to serve my site](#setting-up-nginx)
* [Generating certificates from](#generating-certificates-from-lets-encrypt) [Let's Encrypt](https://letsencrypt.org/)
* [Setting up my site to be served under HTTPS](#setting-up-my-site-to-be-served-under-https)
* [Conclusion](#conclusion)
* [References](#references)

# Moving a Domain to an EC2 Instance
This series of steps is essentially moving any files served by my previous VPS host to an EC2 instance on AWS. Because the site and its blog are all static files, it was a simple matter of moving - or rather pulling - my files to a new server.

## Setting up an EC2 Instance
If you don't already have an Amazon Web Services (AWS) account, you can sign up for one here: https://aws.amazon.com/.

> I wont go into any detail about what AWS is, how to set up an account and the pricing models, so please review all documentation if you are curious.

Once you have signed in:
1. Navigate to the __Compute:EC2__ space
2. Once the _EC2 Dashboard_ select __Launch Instance__

3. Select the __Ubuntu Server 14.04 LTS (HVM)__ instance from the list of AMIs
4. Choose the __t2.micro__ item from the _Instance Type_ selection screen
5. Click __Next: Configure Instance Details__
6. Leave the default form entries and click __Next: Add Storage__
7. Leave the default form entries and click __Next: Tag Instance__
8. From the _Key/Value_ form, enter in the name related to your site into the __Value__ field. In my case, I entered `custardbelly.com`, but it does not have to specifically be your domain name.
9. Click __Next: Configure Security Group__
10. Under _Assign a security group_, select __Create new security group__
    * You will need to create security group with - at least - the following ports available: `22`, `80`, `443`
11. Use the __Add Rule__ button to add protocol types and ports

12. Click __Review and Launch__
13. On the next page, accept the review and click __Launch__
14. If you do not already have a key pair on your system through your AWS account that you want to associated with your site, then __Create a new key pair__; otherwise, __Choose an existin key pair__.

Once accepting the license agreement, you should be redirected to the _EC2 Dashboard:Instances_ page and see your new instance listed - most likely spinning up with an _Initializing..._ note.

We'll wait until that is finished initializing before SSH'ing into it, but before we do that, we can assign an Elastic IP to the instance so that the IP is not potentially change by AWS at any time.

## Defining an Elastic IP
By associating an Elastic IP to an AWS instance, you are essentially reserving a static IP for your instance that won't change as long as it is associated in your account.

> I won't go into detail about Elastic IPs, so please refer to the documentation if interested: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html.

To assign an Elastic IP to your newly launched instance:

1. From the _EC2 Dashboard_ select the __Network & Security: Elastic IPs__ from the left-hand tree menu
2. Select __Allocate New Address__
3. From the modal window, click __Yes, Allocate__
4. Click on the newlly added address in the listing
5. From the _Actions_ button, above the listing_, select __Associate Address__
6. In the _Associate Address_ dialog, start typing the name Value giving to the newly launched instance in the __Instance__ field
7. Once you see the entry for your newly launched instance from the previous section, select it and fill the __Instance__ field value
    * In my case, that is `custardbelly.com`
8. Click __Associate__
9. Upon association of the new Elastic IP, you should see your __Instance__ show up in the listing entry

At this point, if you navigate back to __Instances:Instances__ from the _EC2 Dashboard_, you should see your newly launched instance listed, and the __Public IP__ field should display the associated Elastic IP and appear in blue.

## Site Files
The main site files are hand curated and live in a github repo. The blog site is generated from markdown and has its own github repo, as well; its a bit overblown for its purpose now, but at the time it was used as a tooling system to generate markdown from Wordpress post as described in a previous article.

Using the newly associated IP for the instance and the key generated, I SSH'd into the box and pulled down my site sources. For example:

```
$ ssh ~/.ssh/custardbelly.pem<EMAIL_ADDRESS>```

Since this blog and the main site are static files and all it took was to do some `git clone`'s on my new instance and move some things to their respective places. But first I had to install `git`:

```
$ sudo apt-get update
$ sudo apt-get install git
```

Once I installed __git__ and pulled down my repos, I moved the main site files to `/var/www/custardbelly.com/public_html` and the blog files to `/var/www/blog`. Then I added a sym-link from `/var/www/custardbelly.com/public_html/blog` to `/var/www/blog`, so that whenever I needed to get updates to the blog on my server, I didn't have to fuddle about in the main site's directory.

> This was a rudimentary first pass on getting my site and blog set up. In the future, I will add deployment strategies to these repositories, either in the form of a Continuous Integration server or with tools such as shipit. Props to Kyle Kellogg on opening my eyes to it.

_If you do not maintain your site in a Version Control System (VCS), you may need to go through other avenues to get your site files onto the instance..._

With the site and blog files up on the new instance, it was time to tell the world to look there when they requested it.

# Transferring DNS Records
When defining DNS Records for my website, I had used the administrative control panel provided by my previous VPS host to register my domain; it was pretty straight-forward and allowed me to easily enter in the records to my domain name provider.

Now, when broaching the subject of Domain Name Servers (DNS) and how your browser actually resolves a request with a domain name to an IP, my eyes start to glaze over and the mind wonders. In other words, I am of no authority to actually speak on the topic so I hope you check out some of these articles for a better understanding:

* https://en.wikipedia.org/wiki/Domain_Name_System
* https://webhostinggeeks.com/guides/dns/
* https://pressable.com/blog/2014/12/23/dns-record-types-explained/
* DNS Resolution, Step By Step (video)

That said, with what little I do understand, I know I needed to associate DNS records - specifically NS values - with my domain name purchased from my current Domain Name Provider.

> I use directnic to buy my domains, but I won't go into how you define the DNS values for your domain because I am certain it will differ from provider to provider.

Neverless, I had to go into the administrative console of my Domain Name Provider account and assign the DNS records created in the next sections using __Amazon Route 53__.

## Amazon Route 53
Until I started investigating moving my site to an EC2 Instance so I had more control over how my site is served, I honestly never heard of __Amazon Route 53__. The [dcoumentation for Amazon Route 53](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html) states that it provides three main functions:

* Domain Registration
* Domain Name System (DNS) service
* Health checking

I am only concerned about the DNS service side of the Route 53 as I have already purchased my domain and don't consider my site _critical_ enough to set up CloudWatch for alarms on my site not being available.

> When I went about moving my domain service to Amazon Route 53, I referred to the following documentation: http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html.

I won't rehash the listing of steps for what I performed from the link above, because they are pretty much what I followed. The only difference was I didn't obtain a DNS configuration from my DNS Provider and import it. Instead I:

1. Created a new _Hosted Zone_
2. Upon creation, selected _Create Record Set_
3. Created a Record Set with __Type: A - IPv4 Address__ with a value of the Elastic IP of the AWS Instance set up previously
4. Clicked _Create_
5. Created a Record Set with __Type: CNAME__ with the `www` name and a value of the naked domain
6. Clicked _Create_

I then had a _Hosted Zone_ for `custardbelly.com` with 3 record entries for: __NS__, __A__ and __CNAME__.

After creating a _Hosted Zone_ in Amazon Route 53, I took the auto-generated __NS__ values (there were 4 in total) and set those as the the _Nameserver_ records for my domain on my Domain Name registrar.

## Check with dig
The new DNS for my domain got resolved rather quickly compared to the many times I have done this for domains before; it look about 3 minutes, but I think I got lucky. Anyway, I checked using the `dig` utility to make sure it was up and associated with the Elastic IP I assigned:

```
$ dig custardbelly.com
```

Response:

```
; <<>> DiG 9.8.3-P1 <<>> custardbelly.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58244
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;custardbelly.com.    IN  A

;; ANSWER SECTION:
custardbelly.com. 300 IN  A xxx.xxx.xxx.xxx

;; Query time: 105 msec
;; SERVER: <IP_ADDRESS>#53(<IP_ADDRESS>)
;; WHEN: Wed Feb 10 20:39:01 2016
;; MSG SIZE  rcvd: 50
```

The Elastic IP associated with the AWS Instance I set up for my site is now shown as the __A__ response from a `dig` request - the same I defined in the __A__ field of my _Hosted Zone_ record in Amazon Route 53.

# Setting Up nginx
Even though the DNS resolves the domain to the IP assocated with the AWS Instance, there is nothing - at the moment, during this setup - to be displayed when making a request from a browser.

## Installation
To install __nginx__ on the new box, I ssh'd into the box and issued the following:

```
$ sudo apt-get install nginx
```

That should install __nginx__ and start the service, with its default configuration on port 80. I visited my site again - at [http://custardbelly.com](http://custardbelly.com) - and saw the following page:

In order to point to the files I uploaded for my site, I needed to then add `custardbelly.com` to the _sites-available_ and _sites-enabled_ directories of the __nginx__ configuration install.

## Configuration
By default, __nginx__ sets up the site on port 80 by defining a _default_ configuration defined in __/etc/nginx/sites-available__ and exposed in __/etc/nginx/sites-enabled__. In order to get nginx to point to the site files I uploaded to __/var/www/custardbelly.com/public_html__ in a previous section of this post, I need to add a new file to __/etc/nginx/sites-available__ and sym-link it in __/etc/nginx/sites-enabled__.

To do that, I ssh'd into my box and:

```
$ sudo service nginx stop
$ sudo touch /etc/nginx/sites-available/custardbelly.com
$ sudo vim /etc/nginx/sites-available/custardbelly.com
```

And in __vim__ editor, entered the following:

```
server {
  listen 80 default_server;
  listen [::]:80 default_server;

  server_name custardbelly.com www.custardbelly.com;

  root /var/www/custardbelly.com/public_html;
  index index.html index.htm;
}
```

I wrote and quit out of the __vim__ editor, then removed the _default_ and added _custardbelly.com_ to the __sites-enabled__:

```
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/custardbelly.com /etc/nginx/sites-enabled/custardbelly.com
```

After adding `custardbelly.com` to the enabled site for __nginx__ and exposed on port 80, I restarted __nginx__:

```
$ sudo service nginx start
```

Now navigating in a browser to [http://custardbelly.com](http://custardbelly.com) - or its _www_ domain - resulted in being served up the index page moved to __/var/www/custardbelly.com/public_html/index.html__.

With the non-secure site files setup under __nginx__, it was time to generate a certificate and serve the site under __https__.

# Generating Certificates from Let's Enrypt
[Let's Encrypt](https://letsencrypt.org/) is a relatively recent Certificate Authority (CA) that boasts being free, automated and open. Essentially, it allows you to manage certificates for your site - to be hosted under HTTPS - without having to go through a 3rd-party vendor.

To generate a certificate through [Let's Encrypt](https://letsencrypt.org/) for my domain - both naked and __www__ - I cloned the repo and issued a cert for my "standalone" webserver... but first I stopped __nginx__ again:

```
$ sudo service nginx stop
```

... then:

```
$ git clone https://github.com/letsencrypt/letsencrypt
$ cd letsencrypt
$ ./letsencrypt-auto certonly --standalone --email<EMAIL_ADDRESS>-d custardbelly.com -d www.custardbelly.com
```

><EMAIL_ADDRESS>should be an actual email address at which you want to be notified in case of certificate expiration.

I then verified that the cert for `custardbelly.com` was created by issuing:

```
$ sudo ls /etc/letsencrypt/live/

...

> root root 4096 Feb  10 19:39 custardbelly.com
```

The `custardbelly.com` is a directory with key files to be used in defining how to provide SSL for your server in the configurations, as described in the next section.

## Updating nginx Site Configuration
Now that I generated a cert using [Let's Encrypt](https://letsencrypt.org/) to be able to serve my site under HTTPS, it was time to update the site configuration for __nginx__.

I opened up my __/etc/nginx/sites-available/custardbelly.com__ file and edited it to include a redirect to HTTPS:

```
server {
  listen 80 default_server;
  listen [::]:80 default_server ipv6only=on;

  server_name www.custardbelly.com custardbelly.com;

  return 301 https://www.custardbelly.com$request_uri;
}

server {
  listen [::]:443 ssl;
  listen 443 ssl;

  ssl_certificate /etc/letsencrypt/live/custardbelly.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/custardbelly.com/privkey.pem;

  root /var/www/custardbelly.com/public_html;
  index index.html index.htm;
}
```

Essentially, I am forwarding all requests on port __80__ to __443__. You will also note the entries for `ssl_certificate` and `ssl_certificate_key` which point to the cert generated using [Let's Encrypt](https://letsencrypt.org/).

> This is a very rudmentary example of what your site configuration should look like under nginx, but am keeping the minimum in relation to the task at hand.

I then restarted __nginx__:

```
$ sudo service nginx start
```

Navigating to [https://www.custardbelly.com/blog](https://www.custardbelly.com/blog) in a browser and it showed up! Checked to make sure that the redirect under HTTP request worked as well and, sure enough, my site is now accessible under HTTPS :)

Now the only issue at this point is that a lot of my resources in pages point to HTTP endpoints directly... that is a sore point for a lot of browsers and results in the dreaded Mixed Content.

# Setting up my site to be served under HTTPS
Once you move your site to be served up under HTTPS and then point your favorite browser to your site, you may find that it does not look or function as it did previously - as it did for me. That was because a lot of the resources on the pages of my site were being blocked because the site under HTTPS was trying to make requests for content under HTTPS; such resources were CSS files, Javascript files, images, etc.

If you were to open up Console panel of the developer tools in your browser when pointing to your site under HTTPS, you most likely will see a lot of Mixed Content entries. In my case, Google Chrome was blocking requests over differing protocols, even if I was making calls relative to the page (i.e., not cross-site).

Luckily enough, for me, I was using templates for my blog and only had to change the link references in a single template and regenerate all my posts. Once I had done that, all the pages rendered as they did previously when served under HTTP.

> Read more about Mixed Content and Google Chrome [here](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content).

# Conclusion
Getting this site under HTTPS using using [Amazon Web Services](https://aws.amazon.com/) to host and [Let's Encrypt](https://letsencrypt.org/) to secure was quick and painless - in just a few hours I was up and running!

Hopefully this article will help anyone else out there interested in moving their site from HTTP to HTTPS. Good luck!

> If you do find any content no longer available, please let me know in the comments. Much appreciated!

# References

* [https://https.cio.gov/](https://https.cio.gov/)
* [https://www.smashingmagazine.com/2016/02/breaking-it-down-to-the-bits-how-the-internet-dns-and-https-work/](https://www.smashingmagazine.com/2016/02/breaking-it-down-to-the-bits-how-the-internet-dns-and-https-work/)
* [http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/Welcome.html)
* [http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html](http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/MigratingDNS.html)
* [https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts](https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-14-04-lts)
* [https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-14-04)
* [https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content](https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content)

license: MIT

repository: bustardcelly/blog-to-markdown

repo_name: bustardcelly/blog-to-markdown


text:
Given four integers  `length`,  `width`,  `height`, and  `mass`, representing the dimensions and mass of a box, respectively, return  _a string representing the  **category**  of the box_.

-   The box is  `"Bulky"`  if:
    -   **Any**  of the dimensions of the box is greater or equal to  `10^4`.
    -   Or, the  **volume**  of the box is greater or equal to  `10^9`.
-   If the mass of the box is greater or equal to  `100`, it is  `"Heavy".`
-   If the box is both  `"Bulky"`  and  `"Heavy"`, then its category is  `"Both"`.
-   If the box is neither  `"Bulky"`  nor  `"Heavy"`, then its category is  `"Neither"`.
-   If the box is  `"Bulky"`  but not  `"Heavy"`, then its category is  `"Bulky"`.
-   If the box is  `"Heavy"`  but not  `"Bulky"`, then its category is  `"Heavy"`.

**Note**  that the volume of the box is the product of its length, width and height.

**Example 1:**

**Input:** length = 1000, width = 35, height = 700, mass = 300
**Output:** "Heavy"
**Explanation:**
None of the dimensions of the box is greater or equal to 104.
Its volume = 24500000 <= 10^9. So it cannot be categorized as "Bulky".
However mass >= 100, so the box is "Heavy".
Since the box is not "Bulky" but "Heavy", we return "Heavy".

**Example 2:**

**Input:** length = 200, width = 50, height = 800, mass = 50
**Output:** "Neither"
**Explanation:**
None of the dimensions of the box is greater or equal to 10^4.
Its volume = 8 * 10^6 <= 10^9. So it cannot be categorized as "Bulky".
Its mass is also less than 100, so it cannot be categorized as "Heavy" either.
Since its neither of the two above categories, we return "Neither".

**Constraints:**

-   `1 <= length, width, height <= 10^5`
-   `1 <= mass <= 10^3`

url: https://raw.githubusercontent.com/gurfinkel/leetCode/ba41e63e12bee7cfe4e91966771077cdf765b598/problems/Categorize Box According to Criteria/categorizeBox.md

repository: gurfinkel/leetCode

repo_name: gurfinkel/leetCode


text:
---
title: "Research Design in a Quantitative Perspective"
collection: teaching
type: "Master seminar"
permalink: /teaching/2019-fall-teaching-2
venue: "Lucerne University"
date: 2019-09-01
location: "Lucerne, Switzerland"
---

In this seminar the students are guided through some of the most fundamental  social science methods: the comparative, the statistical, and the experimental method. Class discussions develops around the key topics of inference and measurement, to let students appreciate the full potential of quantitative methods for descriptive, predictive and causal inference. Key problems such as endogeneity, measurement error, and selection bias are also presented and discussed. The course includes applied sessions where students can familiarize with statistical methods using R.


text:
# Twitter-Media-Downloader
Download all the media from twitter account

## Getting Started

1. Clone the repo
	```sh
	https://github.com/ichomchom/Twitter-Media-Downloader.git
	```
2. Install the requirements
	```sh
	pip install -r Twitter-Media-Downloader/requirements.txt
	```
3. Change your consumer_key, consumer_secret, access_key, access_secret

4. Fill out usernames.txt with all the twitter accounts you want to download the medias from.
	Separate them with newline

### Prerequisites

1. Create [Twitter Developer Account](https://developer.twitter.com/en/apply-for-access)

## Authors

* **Huey Phan** - [ichomchom](https://github.com/ichomchom)

## License

This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details

repository: ichomchom/Twitter-Media-Downloader

branch_name: refs/heads/main

repo_name: ichomchom/Twitter-Media-Downloader


text:
---
title: "Road Map for Choosing Between Statistical Modeling and Machine Learning"
author: 'fharrell.com'
date: '2018-04-30'
slug: road-map-for-choosing-between-
link: http://fharrell.com/post/stat-ml/
categories:
- bloglink
tags:
  - machine-learning
  - modeling
  - fharrellcom
---

Data analysis methods may be described by their areas of applications, but for this article I'm using definitions that are strictly[... <i class="fas fa-external-link-alt"></i>](http://fharrell.com/post/stat-ml/)

repository: mkearney/data-scribers

repo_name: mkearney/data-scribers


text:
hkl
===

[![Build Status](https://secure.travis-ci.org/hkl/hkl.png)](http://travis-ci.org/hkl/hkl)

The hkl language

To build right now:

You _should_ only have to do this once.

```bash
$ rake
```

Then as normal:

```
$ make
```

repository: cknadler/hkl

repo_name: cknadler/hkl


text:
---
root: true
name: Beego introduction
sort: 0
---

# What is beego?

Beego is a HTTP framework for developing Go application rapidly. It can be used for developing API, Web app and backend services quickly. It is a RESTful framework.  It is inspired by tornado, sinatra and flask and integrated some Go features such as interface, struct embeddedness.

## The architecture of beego

Here is the architecture of beego:

![](../images/architecture.png)

Beego is build upon 8 independent modules. It's loose coupling framework. Beego is designed for modular programming. You can still use all these modules without using beego's HTTP logic. You can use cache module to handle your cache, you can use logs module for logging and you can use config module for processing file in many format. So you can use all these modules not only in Beego but also in many other applications such as socket games. This is one of the reasons that Beego became popular. If you know Lego you should know all magnificent modles are build of many small pieces. In the philosophy of Beego these modules are small piece of building blocks and the magnificent model is Beego. We will talk about more about the modules later.

## The executing logic of beego

Beego is based on these modules so what's its executing logic? Beego is
a typical MVC architecture. Here is its executing logic:

![](../images/flow.png)

## The project structure of beego

Here is the folder of a typical beego project:

```
├── conf
│   └── app.conf
├── controllers
│   ├── admin
│   └── default.go
├── main.go
├── models
│   └── models.go
├── static
│   ├── css
│   ├── ico
│   ├── img
│   └── js
└── views
    ├── admin
    └── index.tpl
```

We can see the M (models), V (views), C (controllers) folders. `main.go` is the starting file.

>You can use [bee tool to create a new project](../install/bee.md).


text:
# What it is

Extracts a useful name of a given generic (open/closed) type, this is espacially useful for logging scenarios.
E.g. TestClass`2 becomes TestClass<,> for open generic types or TestClass<AnotherTestClass, MoreTestClasses> for closed ones.

repository: bubdm/TypeNameExtractor

repo_name: bubdm/TypeNameExtractor


text:
NSString-JTValidation
====================

A simple Objective-C category on NSString that provides quick validation for common rules, such as alpha, valid email, etc.

repository: jtrivedi/NSString-JTValidation

repo_name: jtrivedi/NSString-JTValidation


text:
# Translations

[Go back to datatables](https://singlequote.github.io/Laravel-datatables/)
-------------------------------------------------------------------

Translating the datatable is easy, create a new file in your language folder `resources/lang/en` with the name `datatables.php` and paste or translate the following :

[Here you can find the full list of translations](https://datatables.net/plug-ins/i18n/)

 ```php
 <?php
return [
    "filter" => "Filter",
    "sEmptyTable" => "No data available in table",
    "sInfo" => "Showing _START_ to _END_ of _TOTAL_ entries",
    "sInfoEmpty" => "Showing 0 to 0 of 0 entries",
    "sInfoFiltered" => "(filtered from _MAX_ total entries)",
    "sInfoPostFix" => "",
    "sInfoThousands" => ",",
    "sLengthMenu" => "Show _MENU_ entries",
    "sLoadingRecords" => "Loading...",
    "sProcessing" => "Processing...",
    "sSearch" => "Search:",
    "sZeroRecords" => "No matching records found",
    "oPaginate" => [
        "sFirst" => "First",
        "sLast" => "Last",
        "sNext" => "Next",
        "sPrevious" => "Previous"
    ],
    "oAria" => [
        "sSortAscending" => " => activate to sort column ascending",
        "sSortDescending" => " => activate to sort column descending"
    ]
];
 ```

repository: singlequote/Laravel-datatables

gha_language: PHP

gha_license_id: MIT

repo_name: singlequote/Laravel-datatables


text:
---
id: remote-execution
title: Remote execution
sidebar_label: Remote execution
---

Reposilite allows you to execute commands through the API under the **POST** `/api/execute` route.
To authenticate the request, you need to pass alias and token with manager permission as a credentials for a [basic method](https://en.wikipedia.org/wiki/Basic_access_authentication). The command to execute should be provided as a request content _(body)_.

If you configured your request properly, you should receive JSON response:

```json
{
  succeeded: true/false
  response: [
    "Multiline response"
  ]
}
```

The `succeeded` property determines the status of executed command.
For instance, in case of missing parameter for a command,
Reposilite returns `false` and usage message.

repository: XiamLiTechnologies/reposilite

gha_language: Kotlin

repo_name: XiamLiTechnologies/reposilite


text:
---
layout: default
---

# 1997-08-19 - Crypto-anarchy and Haydn

## Header Data

From: Robert Hettinga<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Message Hash: a5d877e8b027c772bc3866726df74fd8943ba80d4547fb01c69e318cc74e1a78

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1997-08-19 22:37:57 UTC

Raw Date: Wed, 20 Aug 1997 06:37:57 +0800

## Raw message

```
{% raw  %}From: Robert Hettinga<EMAIL_ADDRESS>Date: Wed, 20 Aug 1997 06:37:57 +0800
To<EMAIL_ADDRESS>Subject: Crypto-anarchy and Haydn
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

--- begin forwarded text

Date: Tue, 19 Aug 1997 17:06:07 -0400 (EDT)
From: Peter F Cassidy<EMAIL_ADDRESS>To<EMAIL_ADDRESS>Subject: Crypto-anarchy and Haydn
Mime-Version: 1.0
Sender<EMAIL_ADDRESS>Precedence: bulk
Reply-To: Peter F Cassidy<EMAIL_ADDRESS>

DCSBers,

I'd like to invite you to the Longwood Symphony Orchestra's summer concert
at the Hatch Shell in Boston on Wed. Aug. 20, 1997 at 7:30. It's free. The
LSO is presenting Mendelsohn's Capricio Briliante Opus 22, the Haydn Cello
concerto and the Haydn Symphony 104, the last movement of which contains a
coded message. Played backwards at twice the normal turntable speed, you
can clearly hear the composer shout, "Burn the mint" in the finale, about
64 bars from the end.

For help on using this list (especially unsubscribing), send a message to
<EMAIL_ADDRESS>with one line of text: "help".

--- end forwarded text

-----------------
Robert Hettinga (rah@shipwright.com), Philodox
e$, 44 Farquhar Street, Boston, MA 02131 USA
"... however it may deserve respect for its usefulness and antiquity,
[predicting the end of the world] has not been found agreeable to
experience." -- Edward Gibbon, 'Decline and Fall of the Roman Empire'
The e$ Home Page: http://www.shipwright.com/

{% endraw %}
```

## Thread

+ Return to [August 1997](/archive/1997/08)

+ Return to "[Robert Hettinga <rah@shipwright.com>](/authors/robert_hettinga_rah_at_shipwright_com_)"

+ 1997-08-19 (Wed, 20 Aug 1997 06:37:57 +0800) - Crypto-anarchy and Haydn - _Robert Hettinga<EMAIL_ADDRESS>


text:
---
layout: default
---

# (Unknown Date) - No Subject

## Header Data

From: Anonymous

To: _N/A_

Message Hash: 010f9e62b2f4c2b6fa44544e709e0492934d60f1f76a9493eb595d643bae074e

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: (Unknown Date)

Raw Date: _N/A_

## Raw message

```
{% raw  %}From: Anonymous
Date: Tue Sep 07 12:37:43 1999
Subject: No Subject
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

Bill Sommerfeld writes:

>For a good time, read the sections from "The Codebreakers" regarding
>what kind of lengths war-time censors went through to foil
>steganography.
>
>In this day & age, rearranging the spacing of messages "just for the
>heck of it" would be a rather obvious equivalent to what they did back
>then (BITNET does things like this today just out of sheer
>perversity).  So would scrambling the low-order bits of a sound file.

Good reminder that the opponents may try to foil (or detect) such schemes.

Fortunately, signing such messages will presumably not be illegal (we
hope!) and so alterations will show up immediately and cause howls of
protest.

-Tim May

--
Timothy C. May         | Crypto Anarchy: encryption, digital money,
<EMAIL_ADDRESS>     | anonymous networks, digital pseudonyms, zero
408-688-5409           | knowledge, reputations, information markets,
W.A.S.T.E.: Aptos, CA  | black markets, collapse of governments.
Higher Power: 2^756839 | Public Key: MailSafe and PGP available.

{% endraw %}
```

## Thread

+ Return to "[Anonymous](/authors/anonymous)"

+ (Unknown Date) (None) - No Subject - _Anonymous_


text:
## [0.1.4] - Release.

- global_network is a package that can be used in any app ranging from small learning apps to large & complex apps in production.
- I observed that when there are multiple screens in an app it is very time consuming to implement network check on individual screen.
- With this package this problem will become much simpler. No need to use network check at individual screen just use this package .

- initially app is in offline mode issue fixed

## [0.1.3]

## features added

- Will be able to display the Bottlesheet, Alert dialog etc.
- Customisable "warning screen" as per your requirements.

gha_language: Dart


text:
# randomuser-json-export

> A randomuser.me command-line utility

This node module gets specific data from the randomuser.me API, places it into a new array
and saves the data in a JSON file. This is ideal if you only want specific data from the API to
use as sample data in a RESTful webapp.

### Getting Started

Install the npm package
```shell
npm install randomuser-json-export
```

Run the utility
```shell
node index.js
```

The output JSON file will be in the root of the package directory. By default, the file name is `data.json`. Currently, the utility only gets 20 results from the API. To change this, edit the HTTP URL in `index.js`.

```javascript
https://randomuser.me/api/?nat=us&results=20
```

Read the [randomuser.me docs](https://randomuser.me/documentation) for more configuration options.

repository: danielyewright/randomuser-json-export

repo_name: danielyewright/randomuser-json-export


text:
# Authenticate an embedded app using session tokens

Session token based authentication comes with significant changes requried. I recommend you to follow this [article](https://shopify.dev/tutorials/authenticate-your-app-using-session-tokens).

This app takes care of the installation and provides middleware that adds a user to a request based on a request header.

I created a [demo app](https://github.com/digismoothie/django-session-token-auth-demo) that uses Hotwire, successor of Turbolinks.

### Instalation

1. Add `shopify_auth` to `INSTALLED_APPS`.

myproject/settings.py
```python
INSTALLED_APPS = [
    ...
    "shopify_auth",
    ...
]
```

2. Configure authentication based on what Views are you using.

#### Plain Django views

myproject/settings.py
```python
MIDDLEWARE = [
    ...
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "shopify_auth.session_tokens.middleware.SessionTokensAuthMiddleware", # This middleware has to be after django.contrib.auth.middleware.AuthenticationMiddleware.
    ...
]
```

#### Django REST Framework

myproject/settings.py
```python
REST_FRAMEWORK = {"DEFAULT_AUTHENTICATION_CLASSES": ["shopify_auth.session_tokens.authentication.ShopifyTokenAuthentication"]}
```

3. Add `path("auth/", include("shopify_auth.session_tokens.urls", namespace="session_tokens")),` to your project's `urls.py`.

4. Create view that supports unauthenticated requests.

```python
import shopify
from django.conf import settings
from django.contrib.auth import get_user_model
from django.contrib.auth.signals import user_logged_in
from django.http import HttpResponse
from django.shortcuts import render
from django.views import generic
from pyactiveresource.connection import UnauthorizedAccess
from shopify_auth.session_tokens.views import get_scope_permission

class DashboardView(generic.View):
    template_name = "myapp/dashboard.html"

    def get(self, request):
        myshopify_domain = request.GET.get("shop")

        if not myshopify_domain:
            return HttpResponse("Shop parameter missing.")
        try:
            shop = get_user_model().objects.get(myshopify_domain=myshopify_domain)
        except get_user_model().DoesNotExist:
            return get_scope_permission(request, myshopify_domain)

        with shop.session:
            try:
                shopify_shop = shopify.Shop.current()
            except UnauthorizedAccess:
                shop.uninstall()
                return get_scope_permission(request, myshopify_domain)

        user_logged_in.send(sender=shop.__class__, request=request, user=shop)

        return render(
            request,
            self.template_name,
            {
                "data": {
                    "shopOrigin": shop.myshopify_domain,
                    "apiKey": getattr(settings, "SHOPIFY_APP_API_KEY"),
                }
            },
        )
```


text:
Recipe Book

    Recipe Book App

    Download
    ·
    Report Bug
    ·
    Request Feature

  Table of Contents

      About The Project

Built With

      Getting Started

Prerequisites

Clone

Usage

Roadmap

Contributing

Contact

Screenshots

## About The Project
Recipe Book app design by flutter, at home page it shows you some foods, also the food of the day. At the bottom you gonna find popular foods. On details page food info with it's chapters.

- [x] Meet your new cooking coach!
- [x] Get step-by-step instructions on how to cook every single recipe.
- [x] Also work on both landscape and portrait mood
- [ ] ADD RECIPES QUICKLY AND EASILY
- [ ] SCAN FROM COOKBOOKS, MAGAZINES AND HANDWRITTEN RECIPES (all-in-one recipe organizer)
- [ ] MAKE SHOPPING SIMPLER (shopping list)
- [ ] TRANSFER YOUR EXISTING RECIPES

### Built With

* [Flutter](https://flutter.dev)
* cupertino_icons
* provider
* flutter_svg
* google_fonts
* url_launcher

## 🚀 Getting Started

### Prerequisites

To run any Android application built with Flutter you need to configure the enviroments in your machine, you can do this following the the tutorial provided by Google in [Flutter website](https://flutter.dev/docs/get-started/install)

- Flutter SDK
- Android Studio (to download Android SDK)
- Xcode (for iOS develop only)
- Any IDE with Flutter SDK installed (ie. IntelliJ, Android Studio, VSCode etc)
- A little knowledge of Dart and Flutter

### Clone

- Clone this repo to your local machine using:

```
git clone https://github.com/YunusEmreAlps/Flutter_Recipe_App.git
```

### Setup

To run the app you need to have an online emulator or a plugged device and run the following command in the root of the application.

#### Android
```
flutter run
```
### iOS (_MAC Only_)

```
flutter run
```

## Roadmap

See the [open issues](https://github.com/YunusEmreAlps/Flutter_Recipe_App/issues) for a list of proposed features (and known issues).

## 🤔 Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.

1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3.  Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request

## 📝 License

Distributed under the MIT License. See `LICENSE` for more information.

## 📌 Contact

- Linkedin at [Yunus Emre Alpu](https://www.linkedin.com/in/yunus-emre-alpu-5b1496151/)

## Screenshots

Home Page                  |  Home Page               | Home Page               |  Home Page
:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/1.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/2.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/3.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/4.png?raw=true)|

Home Page            |  Home Page              | Home Page           | Details Page
:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/5.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/6.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/7.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/8.png?raw=true)|

Details Page            |  Details Page                | Home Page                |  Details Page
:-------------------------:|:-------------------------:|:-------------------------:|:-------------------------:
![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/9.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/10.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/11.png?raw=true)|![](https://github.com/YunusEmreAlps/Flutter_Recipe_App/blob/master/recipe_app/ss/12.png?raw=true)|


text:
# Profession Cooldown v. 1.18
Profession Cooldown (PCD) tracks the cooldown of profession abilities across the characters on your account. It's fairly simple, and mostly consists of a simple overview.
By default, the addon will only track a given profession cooldown when the ability first goes on cooldown. That means, if one is to create a piece of Spellcloth, the addon will track it. Optionally the player can choose to update on spell id (still in beta, not considered 'stable' yet), enabled from the options frame.
Your profession window has to be open, in order to record active cooldowns. Currently it tracks:

- Leatherworking: Salt shaker.
- Alchemy: All transmutes, Northrend Research
- Jewelcrafting: Brilliant Glass, Icy Prism
- Tailoring: TBC cloths, WotLK cloths, Glacial Bag
- Enchanting: Void Sphere
- Mining: Smelt Titansteel
- Inscription: Minor research, Northrend research

## Commands:

- /pcd - toggles the visibility of the window.
- /pcd filters - opens the filtering menu.
- /pcd reset - resets the position of the window.
- /pcd resetalldata - resets all data for the addon.
- /pcd reset charactername - resets the data for the given charactername. Useful if changing professions or deleting a character.
- /pcd options - opens the options window.
- /pcd update - fetches cooldowns based on spell id. Still in development, and not considered stable.

## Feedback
Please leave any feedback you may have in the comments. You are also welcome to create issues on Github.
It also helps if you can DM me a link to pastebin, with the data from the addon. You can find this in:
WorldOfWarcraft\_classic_\WTF\Account\YourAccountName\SavedVariables\ProfessionCooldown.lua

## To do list: Currently no ETA.
- Data broker / titan panel improvements. (color coding)
- Cross-account sync.
- Alerts / notifications.

gha_language: Lua


text:
# data-import-utils

Copyright (C) 2018 The Open Library Foundation

This software is distributed under the terms of the Apache License,
Version 2.0. See the file "[LICENSE](LICENSE)" for more information.

## Introduction

Utilities for DataImport modules.

## Additional information

* See project [MODDATAIMP](https://issues.folio.org/browse/MODDATAIMP)
at the [FOLIO issue tracker](https://dev.folio.org/guidelines/issue-tracker).

* Other FOLIO Developer documentation is at [dev.folio.org](https://dev.folio.org/)

repository: folio-org/data-import-utils

gha_language: Java

repo_name: folio-org/data-import-utils


text:
# Comparables Data Package
## Description

The valuation_data package provides access to the financial comparables data provided by Aswath Damodaran via his website. Specifically, the library generates pandas DataFrames and Series containing a variety of metrics useful when valuing businesses or assessing individual industries.

## Credits
The package simply scrapes data from Aswath Damodaran's website. Thus, all the credits for collecting and integrating the data go to him.

repository: rdowne/compdata

repo_name: rdowne/compdata


text:
# Network Benchmark .NET

*Low Level .NET 6 Networking libraries benchmarked for UDP socket performance*

![Screenshot](./Docs/screenshot.png)

[![Releases](https://img.shields.io/github/release/JohannesDeml/NetworkBenchmarkDotNet/all.svg)](../../releases) [![.NET 6.0](https://img.shields.io/badge/.NET-6.0-blueviolet.svg)](https://dotnet.microsoft.com/download/dotnet/6.0)

## Table of Contents

1. [Description](#description)
2. [Benchmark Setup](#benchmark-setup)
3. [Benchmark Results](#benchmark-results)
4. [Installation](#installation)
5. [Usage](#usage)
6. [Contributions](#contributions)

## Description

NBN is a benchmark for low level networking libraries using UDP and can be used with [Unity](https://unity3d.com) and for [.Net Core](https://en.wikipedia.org/wiki/.NET_Core) standalone server applications. The benchmark focuses on latency, performance and scalability.

### Supported Libraries

* [ENet-CSharp](https://github.com/nxrighthere/ENet-CSharp) (v 2.4.8)
  * Wrapper for [ENet](https://github.com/lsalzman/enet), building a reliable sequenced protocol on top of UDP
  * Max concurrent connections are limited to 4095 due to the protocol
  * Packetsize overhead: 10 bytes
  * [Unity Client Example](https://github.com/JohannesDeml/ENetUnityMobile)
* [LiteNetLib](https://github.com/RevenantX/LiteNetLib) (v 1.0.1)
  * Very feature-rich library
  * Packetsize overhead: 1 byte for unreliable, 4 bytes for reliable
  * [Unity Client Example](https://github.com/RevenantX/NetGameExample)
* [Kcp2k](https://github.com/vis2k/kcp2k) (v 1.34.0)
  * Port of KCP with 100% C# Code, Future Technology for [Mirror-NG](https://github.com/MirrorNG/MirrorNG)
  * Packetsize overhead: 24 byte
  * [Unity Example](https://github.com/vis2k/kcp2k)
* [NetCoreServer](https://github.com/chronoxor/NetCoreServer) (v 6.7.0)
  * Pure C# / .Net library for TCP/UDP/SSL with no additional protocols on top
  * Packetsize overhead: 0 bytes, but you have to invent the wheel yourself
  * [Unity Client Example](https://github.com/JohannesDeml/Unity-Net-Core-Networking-Sockets)

## Benchmark Setup

### Hardware

* Ubuntu VPS
  * Virtual private server with dedicated CPU's running - [Hardware](https://www.netcup.eu/bestellen/produkt.php?produkt=2624)
  * Ubuntu 22.04.2 LTS x86-64 Kernel 5.15.0-48-generic
    ```
    $> hostnamectl
             Chassis: vm
      Virtualization: kvm
    Operating System: Ubuntu 22.04.2 LTS
              Kernel: Linux 5.15.0-48-generic
        Architecture: x86-64
     Hardware Vendor: netcup
      Hardware Model: KVM Server
    ```

* Ubuntu Desktop / Windows Desktop
  * Desktop PC from 2020 - [Hardware](https://pcpartpicker.com/user/JohannesDeml/saved/zz7yK8)
  * Windows 11 Pro x86-64 Build 22621,1485 (22H2)
  * Ubuntu 22.04.2 LTS x86-64 Kernel 5.19.0-38-generic

### Software

* [.NET](https://dotnet.microsoft.com/download/dotnet) 6.0.13 on Ubuntu, 6.0.15 on Windows
* [BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet) 0.13.5

### Procedure
For the two desktop setups, the benchmarks are run on a restarted system with 5 minutes idle time before starting the benchmark. They are run with admin privileges and all unnecessary other processes are killed before running the benchmarks. For Ubuntu VPS, the benchmarks are run through continuous integration on a typical indie server setup with other processes running as well. After the benchmarks are run, a list of all running processes to make them more reproducible. To reproduce the benchmarks, run `sudo sh linux-benchmark.sh` or `win-benchmark.bat` . If you want to execute directly from the compiled program, run `./NetworkBenchmarkDotNet -b Essential`.

## Benchmark Results
The raw data and additional files can be downloaded from the [release section](../../releases).

### Benchmark [PingPongUnreliable](./NetworkBenchmarkDotNet/PredefinedBenchmarks/UnreliablePerformanceBenchmark.cs)

Runs the benchmark with **500** clients, which pingpong **1 message** each with the server with **unreliable** transmission. The benchmark runs until a total of **500,000** messages are sent to the server and back to the clients. Message size is **32 bytes**.
This test is for getting an idea of an average roundtrip time (lower is better).
![PingPong Unreliable .NET Benchmark chart](./Docs/nbn-pingpongunreliable-1.1.0.png)

### Benchmark [PingPongReliable](./NetworkBenchmarkDotNet/PredefinedBenchmarks/ReliablePerformanceBenchmark.cs)

Runs the benchmark with **500** clients, which pingpong **1 message** each with the server with **reliable** transmission. The benchmark runs until a total of **500,000** messages are sent to the server and back to the clients. Message size is **32 bytes**.
This test is for getting an idea of an average roundtrip time (lower is better).
![PingPong Reliable .NET Benchmark chart](./Docs/nbn-pingpongreliable-1.1.0.png)

### Benchmark [PingPongBatchedUnreliable](./NetworkBenchmarkDotNet/PredefinedBenchmarks/UnreliablePerformanceBenchmark.cs)

Runs the benchmark with **500** clients, which pingpong **10 messages** each with the server with **unreliable** transmission. The benchmark runs until a total of **500,000** messages are sent to the server and back to the clients. Message size is **32 bytes**.
This test is for multiplexing / message merging performance (higher is better).
![PingPong Batched Unreliable .NET Benchmark chart](./Docs/nbn-pingpongbatchedunreliable-1.1.0.png)

### Benchmark [SampleEchoSimple](./NetworkBenchmarkDotNet/PredefinedBenchmarks/SamplingBenchmark.cs)

Runs the benchmark with **1** client, which pingpong **10 messages** each with the server. The benchmark runs until a total of **100,000** messages are sent to the server and back to the clients. Message size is **128 bytes**.
This test collects information about generated garbage and CPU times while running the benchmark. Those results can be analyzed with [PerfView](https://github.com/microsoft/perfview) on Windows.

### Overview
This is a comparison between all tests with their message throughput (higher is better).

![Network Benchmark .NET results overview](./Docs/nbn-overview-1.1.0.png)

### Notes

* Ubuntu outperforms windows in almost all tests and libraries.
* The benchmarks are run locally and therefor a lot of processing power is used for simulating the clients. Therefore, this benchmark does not include a CCU comparison, but is sufficient to compare different libraries for the same setup.
* Also the network latency results do not show any costs of the network itself, but only the cost of the application layer in the round trip time. Since multiple clients are run at the same time, this time with be smaller than presented here.
* Creation, Connection and Disconnection and Disposal of the Server and Clients is not included in the performance benchmarks, but is included in the .nettrace files from the Sampling benchmark.
* To access the Sampling results, you can use [PerfView](https://github.com/microsoft/perfview) to open the `.nettrace` files.
* Kcp2k has been recently added and might have some room for improvements. Especially using `Thread.Sleep` on Windows creates [noticeable delays](https://social.msdn.microsoft.com/Forums/vstudio/en-US/facc2b57-9a27-4049-bb32-ef093fbf4c29/threadsleep1-sleeps-for-156-ms?forum=clr). For now it is excluded of the predefined benchmarks, until its execution and cleanup are improved.
* This is not a general purpose benchmark for every and any game type. Different games have different requirements. I hope these benchmarks help you as a smoke test and give you the possibility to quickly test how your hardware handles the different libraries.

## Installation

Make sure you have [.Net 6 SDK](https://dotnet.microsoft.com/download) installed.

Then just open the solution file with Visual Studio/Rider/Visual Studio Code and build it. Note that results of the benchmarks can be very different with a different operating system and hardware.

## Usage
In general there are two different types of benchmarks: Custom and predefined benchmarks. Custom benchmarks and be defined through the [command-line options](#command-line-options). Predefined Benchmarks are set in code and are executed through [BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet). They are used for the statistics presented here and are more accurate and better reproducible then Custom benchmarks. However, they also take a longer time to finish. You can also run the clients and server on different machines to test the libraries over your local network or remotely (see [remote benchmarks](#remote-benchmarks)).

### Custom Benchmarks

You can run custom benchmarks through the command-line. Use can test multiple settings and its combinations in an easy and quick way. The tests will just run once and are not as accurate as running a predefined benchmark. An example for running a benchmark might be `./NetworkBenchmarkDotNet --library ENet --transmission Unreliable --clients 100 --duration 10 `

#### Command-line Options (`./NetworkBenchmarkDotNet --help`)
```
Usage:
  NetworkBenchmarkDotNet [options]

Options:
  -b, --benchmark                          Run predefined benchmarks [default:
  <All|Custom|Essential|Performance|Qui    Custom]
  ck|Sampling>
  -m, --execution-mode                     Control what parts to run [default:
  <Client|Complete|Server>                 Complete]
  -t, --test <Manual|PingPong>             Test type [default: PingPong]
  --transmission <Reliable|Unreliable>     Transmission type [default:
                                           Unreliable]
  -l, --library                            Library target [default: ENet]
  <ENet|Kcp2k|LiteNetLib|NetCoreServer>
  -d, --duration <duration>                Test duration in seconds (-1 for
                                           manual stopping) [default: 10]
  --address <address>                      IP Address, can be ipv4 (e.g.
                                           <IP_ADDRESS>) or ipv6 (e.g. ::1)
                                           [default: ::1]
  --port <port>                            Socket Port [default: 3330]
  --clients <clients>                      # Simultaneous clients [default: 500]
  --parallel-messages                      #Parallel messages per client
  <parallel-messages>                      [default: 1]
  --message-byte-size                      Message byte size sent by clients
  <message-byte-size>                      [default: 32]
  --message-payload <Ones|Random|Zeros>    Message load sent by clients
                                           [default: Random]
  --verbose                                Verbose output of test steps and
                                           errors [default: True]
  --client-tick-rate <client-tick-rate>    Client ticks per second if supported
                                           [default: 60]
  --server-tick-rate <server-tick-rate>    Server ticks per second if supported
                                           [default: 60]
  --use-native-sockets                     Use native Sockets (LiteNetLib only)
                                           [default: True]
  --version                                Show version information
  -?, -h, --help                           Show help and usage information
```

### Predefined Benchmarks

Predefined benchmarks take some time to run, but generate reproducible numbers. The easiest way to run a predefined benchmark is to run `win-benchmark.bat` on windows or `sh linux-benchmark.sh` on windows.

#### Types

* **Quick** (<1min): Runs a quick benchmark with whatever is set in [QuickBenchmark.cs](../../blob/master/NetworkBenchmarkDotNet/PredefinedBenchmarks/QuickBenchmark.cs)
* **Performance** (>15min): High Performance statistical test with all included libraries
* **Sampling** (<1min): Test with all included libraries using cpu sampling and memory allocation statistics
* **Essential** (>15min): Running Performance + Garbage Benchmark

![Run Predefined Benchmark windows command-line screenshot](./Docs/run-predefined-benchmark.png)

### Remote Benchmarks

To test a library remotely, you can use the parameter `--execution-mode Server` and `--execution-mode Client` respectively. This setup requires to first start the server with the correct library (and probably an indefinite execution duration) on your target server, and then the client process. Here is an example:
Server: `./NetworkBenchmarkDotNet --library ENet --transmission Reliable --execution-mode Server --address YOUR_ADDRESS -d -1`
Client: `./NetworkBenchmarkDotNet --library ENet --transmission Reliable --execution-mode Client --address YOUR_ADDRESS --clients 100 -d 10`

If you change the address in `QuickBenchmark.cs`, you can also run a more sophisticated remote benchmark this way.

## Contributions

Your favorite library is missing, or you feel like the benchmarks are not testing everything relevant? Let's evolve the benchmark together! Either hit me up via<EMAIL_ADDRESS>to discuss your idea, or [open an issue](../../issues), or make a pull request directly. There are a few rules in order to not make the benchmark too cluttered.

### Adding a Library

Your new proposed library ...

* works with Unity as a Client
* works with .NET 6 for the server
* uses UDP (additional RUDP would be nice)
* is Open Source (can still be commercial)
* is stable enough not to break in the benchmarks
* is in active development
* adds value to the benchmarks

#### How to add a library

1. Add a new folder inside the NetworkBenchmarkDotNet solution with the name of your library
2. Add a script called `YourLibraryBenchmark.cs` which implements [ANetworkBenchmark](../../blob/master/NetworkBenchmarkDotNet/Libraries/ANetworkBenchmark.cs)
3. Add your library name to the [NetworkLibrary](../../blob/master/NetworkBenchmarkDotNet/Libraries/NetworkLibrary.cs) enum
4. Add your Implementation Constructor to `INetworkBenchmark.CreateNetworkBenchmark()`
5. Use the `-l ` argument (or `BenchmarkSetup.Library`) to test your library and if everything works as expected.
6. Change `[Params(NetworkLibrary.Kcp2k)]` in `QuickBenchmark.cs` to your library and run `./NetworkBenchmarkDotNet -b Quick` to see, if your library works with high CCU and looping benchmarks with BenchmarkDotNet
8. Create a PR including your benchmark results 🎉

## License

[MIT](./LICENSE)

repository: JohannesDeml/NetworkBenchmarkDotNet

gha_language: C#

repo_name: JohannesDeml/NetworkBenchmarkDotNet


text:
nebolsin/bifrost
====================
[![](https://images.microbadger.com/badges/version/nebolsin/bifrost.svg)](https://microbadger.com/images/nebolsin/bifrost)
[![](https://images.microbadger.com/badges/image/nebolsin/bifrost.svg)](https://microbadger.com/images/nebolsin/bifrost)
[![](https://images.microbadger.com/badges/commit/nebolsin/bifrost.svg)](https://microbadger.com/images/nebolsin/bifrost)

A minimalistic Docker image for Stellar Bifrost.

**WIP** This is an experimental repo, don't use it **WIP**

Usage
-----

See [examples](examples) directory.

License
-------

Configuration files and code in this repository are distributed under the
[MIT license](LICENSE).

License information for the software contained in nebolsin/bifrost
Docker image:

* [Stellar Bifrost](https://github.com/stellar/go/blob/master/COPYING)
* [confd](https://github.com/kelseyhightower/confd/blob/master/LICENSE)

repository: nebolsin/docker-bifrost

repo_name: nebolsin/docker-bifrost


text:
# bandaid
Rust macros to patch things up.

In particular, this fixes a common problem where iterators in different arms of `if else` or `match` expressions have incompatible types.

## Examples

The following code would not compile because each conditional branch returns an iterator of a different type:

```Rust
fn mk_iter(foo: i32) -> impl Iterator<Item = i32> {
    if foo < 0 {
        vec![1, 2, 3].into_iter()
    } else if foo < 2 {
        iter::once(4)
    } else {
        iter::empty()
    }
}
```

This can be quickly patched up with `band_aid!`:

```Rust
#[macro_use]
extern crate bandaid;

fn mk_iter(foo: i32) -> impl Iterator<Item = i32> {
    band_aid! {
        if (foo < 0) {
            vec![1, 2, 3].into_iter()
        } else if (foo < 2) {
            iter::once(4)
        } else {
            iter::empty()
        }
    }
}
```

The main caveat is that some extra parantheses need to be introduced around the conditions, as you can see in the example. This is to work around a limitation of Rust macros.

repository: peterjoel/bandaid

repo_name: peterjoel/bandaid


text:
---
layout: page
title: endlesspint
subtitle: Supporting Vis for wBC Data
---

## Winning Percentage Area Chart

**Red line**: USA winning % average pre-2016

**Black line**: USA top winning % pre-2016, 0.76


text:
Allusive Editor
===============

[![Build Status][build_status_img]][build_status_page] [![Stories in Ready][waffle_img]][waffle_status]

**A text editor that implements Neal Stephenson's cipher in Quicksilver**

[![Allusive Editor][allusive.jpg]][allusive.jpg]

Helpful tutorial on building text editors with Tkinter: [Vroom! A Simple DarkRoom Remake in Tkinter](http://effbot.org/zone/vroom.htm). Documentation on event bindings can be found at [Tkinter Events and Bindings](http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm). We're currently having trouble with py2app, and are following [this thread](http://marc.info/?l=pythonmac-sig&m=120024539627774) to see if we can upgrade setuptools and modulegraph to get it to build.

<!-- References -->
[build_status_img]: https://travis-ci.org/bbengfort/allusive-editor.svg?branch=master
[build_status_page]: https://travis-ci.org/bbengfort/allusive-editor
[allusive.jpg]: http://www.paintings-art-picture.com/wallpaper/School%20of%20Athens%20Wallpaper%20Raphael/School-of-Athens-Wallpaper.jpg
[waffle_img]: https://badge.waffle.io/bbengfort/allusive-editor.png?label=ready&title=Ready
[waffle_status]: https://waffle.io/bbengfort/allusive-editor

repository: bbengfort/allusive-editor

repo_name: bbengfort/allusive-editor


text:
---
title: Expressions
---

## Expression With Type Arguments

These are found in certain areas. For example `extends` and `implements` expressions.

### Getting expression

```ts
const expression = expressionWithTypeArgs.getExpression(); // returns: Node
```

### Getting type arguments

```ts
const typeArgs = expressionWithTypeArgs.getTypeArguments(); // returns: TypeNode[]
```

## Call Expressions

Call expressions are statements that call a function:

```ts
doSomething();
```

### Getting call signatures

From a given node, get all the children or descendants that are call expressions.

For example:

```ts
const childCallExpressions = node.getChildrenOfKind(ts.SyntaxKind.CallExpression);
const descendantCallExpressions = node.getDescendantsOfKind(ts.SyntaxKind.CallExpression);
```

### Return type

Use the following:

```ts
const returnType = callExpression.getReturnType();
```

repository: logan-baker/Compodoc

repo_name: logan-baker/Compodoc


text:
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
<!-- Add new changes here -->

## [0.15.0] 2023-05-07

### Changed
- Upgraded to recast 0.23.1 (#544, @ryanrhee)
- Make @babel/preset-env optional (#480, @SimenB)

### Fixed
- Force LF line ending in bin/jscodeshift.sh (#555, @jakeboone02)
- Use transform's exported parser in testUitls (#528, @CrispyBacon12)
- Ensure jscodeshift doesn't load Babel config file (#460, @raon0211)

## [0.14.0] 2022-10-04

### Added
- Added a `defineSnapshotTestFromFixture` test util (#471, @shriuken)
- Added `renameTo` filters for Babel 6+ node types (#412 and #504, @elonvolo and @henryqdineen)
- Added `childNodesOfType` to JSX traversal methods (#415, @j13huang)

### Changed
- Bumped dependency versions
- Allow arguments in `--help` to be listed in an order other than alphabetically, so they can instead be grouped thematically (#507, @elonvolo)
- Allow the `j` shortcut in test utils (#515, @no23reason)

## [0.13.1] 2022-01-10

### Changed

- Switched from `colors` to `chalk` to mitigate a security vulnerability in<EMAIL_ADDRESS>
## [0.13.0] 2021-06-26

### Added

- Added a `--fail-on-error` flag to return a `1` error code when errors were found (#416, @marcodejongh)
- Created `template.asyncExpression` (#405, @jedwards1211)

### Changed

- Removed lodash dependency from tsx parser (#432, @JHilker and @robyoder)

## [0.12.0] 2021-04-21
### Changed
- Allow transform to be a Promise (#237, @rektide)
- Support newer TypeScript syntax by upgrading to newer Babel parser (#410, @wdoug and @mfeckie)

## [0.11.0] 2020-09-01
### Changed
- Updated `recast` to latest

## [0.10.0] 2020-06-01
### Changed
- Updated `flow-parser` to latest, and enabled Flow Enums parsing by default when using Flow parser

## [0.8.0] 2020-05-03
### Changed
- Dropped support for Node versions 6 and 8

## [0.7.0] 2019-12-11
## Added
- Added jest snapshot utils (#297, @dogoku)

### Changed
- Moved from BSD to MIT license

### Fixed
- No longer throw an error when calling jscodeshift on a non-existent path (#334, @threepointone)
- Preserve the original file extension in remote files (#317, @samselikoff)

## [0.6.4] 2019-04-30
### Changed
- Allow writing tests in TypeScript ([PR #308](https://github.com/facebook/jscodeshift/pull/308))
- Better handling of `.gitingore` files: Ignore comments and support `\r\n` line breaks ([PR #306](https://github.com/facebook/jscodeshift/pull/306))

## [0.6.3] 2019-01-18
### Fixed
- Don't throw an error when jscodeshift processes an empty set of files (#295,
@skovhus).
- `renameTo` should not rename class properties (#296, @henryqdineen).
- Custom/unknown CLI parameters are parsed as JSON, just like nomnom used to
do.

## [0.6.2] 2018-12-05
### Changed
- `@babel/register`/`@babel/preset-env` is configured to not transpile any
language features that the running Node process supports. That means if you use
features in your transform code supported by the Node version you are running,
they will be left as is. Most of ES2015 is actually supported since Node v6.
- Do not transpile object rest/spread in transform code if supported by running
Node version.

### Fixed
- Presets and plugins passed to `@babel/register` are now properly named and
  loaded.

## [0.6.1] 2018-12-04
### Added
- Tranform files can be written in Typescript. If the file extension of the
transform file is `.ts` or `.tsx`, `@babel/preset-typescript` is used to
convert them. This requires the `--babel` option to be set (which it is by
default). ( #287 , @brieb )

### Changed
- The preset and plugins for converting the transform file itself via babeljs
have been updated to work with babel v7. This included removing
`babel-preset-es2015` and `babel-preset-stage-1` in favor of
`@babel/preset-env`. Only `@babel/proposal-class-properties` and
`@babel/proposal-object-rest-spread` are enabled as experimental features. If
you want to use other's in your transform file, please create a PR.

### Fixed
- Typescript parses use `@babel/parser` instead of Babylon ( #291, @elliottsj )

### Bumped
- `micromatch` => v3.1.10, which doesn't (indirectly) depend on `randomatic` <
v3 anymore (see #292).

repository: facebook/jscodeshift

repo_name: facebook/jscodeshift


text:
# Radiance libraries

**Radiance** is a collection of libraries for writing modern, elegant and fast Swing applications based on
the [Ephemeral](https://github.com/kirill-grouchnikov/ephemeral) design system. It is built with Java 9, and runs on Java 9 and later.

## General questions

[This document](docs/faq.md) is where you may find answers to some of the general questions on Radiance. If there's anything missing there, [let me know](https://github.com/kirill-grouchnikov/radiance/issues).

## Core Java libraries

### Common

[Common](docs/common/common.md) provides APIs to work with images and text that scale with the display resolution. Radiance icons scale to maintain crisp, pixel-perfect visuals for application icons. Font APIs can be used to render platform-consistent textual content across a variety of supported platforms.

### Animation

[Animation](docs/animation/animation.md) provides powerful and flexible animation APIs that scale from simple, single-property cases to complex scenarios that involve multiple animations. It powers all animations in the Radiance libraries.

### Theming

[Theming](docs/theming/overview.md) provides a comprehensive set of APIs for skinning Swing applications, addressing the most demanding, modern design requirements. It comes with built-in support for all core Swing components, and a flexible API surface for rendering third-party / application components.

### Components

[Components](docs/component/overview.md) provides a robust set of additional Swing components that can be used as building blocks for creating modern, rich Swing applications. In addition to providing the powerful command button and breadcrumb bar components, it packs an Office Command Bar (ribbon) container that hosts complex hierarchies of content on a flexible and adaptive surface.

## Core Kotlin libraries

* [Core Swing extensions](docs/kotlin-ext/swing/swing.md) is a set of Kotlin extensions that expose selected core Swing APIs for idiomatic Kotlin usage.

* [Animation extensions](docs/kotlin-ext/animation/animation-ktx.md) exposes a subset of the API surface of Animation as a concise, focused and approachable Kotlin domain-specific language (DSL). It also provides a number of Kotlin extensions for Animation APIs.

* [Theming extensions](docs/kotlin-ext/theming/theming-ktx.md) is a set of Kotlin extensions that provide a more elegant way of working with scoped Radiance theming APIs.

* [Component extensions](docs/kotlin-ext/component/component-ktx.md) exposes a subset of the API surface of Components as a concise, focused and approachable Kotlin domain-specific language (DSL). It also provides a number of Kotlin extensions for Components APIs.

## Tools

* [Laf Benchmark](docs/tools/laf-benchmark/laf-benchmark.md) provides tools for Swing look-and-feel developers to measure the performance of their libraries.

* [Theming Debugger](docs/tools/theming-debugger/theming-debugger.md) is a visual runtime debugger for Radiance look-and-feel.

* [Scheme Editor](docs/tools/scheme-editor/scheme-editor.md) is a tool for creating and editing color scheme lists.

* [Screenshot](docs/tools/screenshot/screenshot.md) has utilities for taking screenshots for Radiance documentation.

* [Shaper Editor](docs/tools/shape-editor/shape-editor.md) can be used creating and editing files that define custom button shapers.

* [SVG Transcoder](docs/tools/svg-transcoder/svg-transcoder.md) enables usage of vector-based icons in Swing applications. SVG content is transcoded offline to Java / Kotlin classes that use pure Java2D canvas operations that do not require expensive runtime overhead of third-party dependencies.

* [SVG Transcoder Plugin](docs/tools/svg-transcoder/svg-transcoder-gradle-plugin.md) is a Gradle plugin that wraps the SVG Transcoder library to allow build-time transcoding of SVG content into Java / Kotlin classes.

## Demos

[This document](docs/demos.md) lists all major demos and samples that showcase how to use various Radiance APIs.

## Radiance artifacts

Radiance artifacts are available in the central Maven repository under `groupId=org.pushing-pixels`

### Core artifacts

* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-common/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-common)
`radiance-common` for [Common](docs/common/common.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-animation/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-animation) `radiance-animation` for [Animation](docs/animation/animation.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming) `radiance-theming` for [Theming](docs/theming/overview.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-component/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-component) `radiance-component` for [Component](docs/component/overview.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-extras/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-extras) `radiance-theming-extras` for [Theming extras](docs/theming/extras.md)

### Kotlin extension artifacts
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-swing-ktx/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-swing-ktx) `radiance-swing-ktx` for [Swing Kotlin extensions](docs/kotlin-ext/swing/swing.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-animation-ktx/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-animation-ktx) `radiance-animation-ktx` for [Animation Kotlin extensions](docs/kotlin-ext/animation/animation-ktx.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-ktx/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-ktx) `radiance-theming-ktx` for [Theming Kotlin extensions](docs/kotlin-ext/theming/theming-ktx.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-component-ktx/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-component-ktx) `radiance-component-ktx` for [Component Kotlin extensions](docs/kotlin-ext/component/component-ktx.md)

### Tools artifacts

* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-svg-transcoder/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-svg-transcoder) `radiance-svg-transcoder` for [SVG transcoder](docs/tools/svg-transcoder/svg-transcoder.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-svg-transcoder-gradle-plugin/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-svg-transcoder-gradle-plugin) `radiance-svg-transcoder-gradle-plugin` for [SVG transcoder Gradle plugin](docs/tools/svg-transcoder/svg-transcoder-gradle-plugin.md)
* [![Maven Central](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-debugger/badge.svg)](https://maven-badges.herokuapp.com/maven-central/org.pushing-pixels/radiance-theming-debugger) `radiance-theming-debugger` for [Theming debugger](docs/tools/theming-debugger/theming-debugger.md)

### Snapshots

Radiance snapshot artifacts are available in the [Sonatype repository](https://oss.sonatype.org/content/repositories/snapshots/org/pushing-pixels/).

## Building Radiance

[This document](docs/building.md) is an overview of how to build Radiance artifacts locally.

repository: kirill-grouchnikov/radiance

branch_name: refs/heads/sunshine

repo_name: kirill-grouchnikov/radiance


text:
# Slides4Saints User Guide

## Manager - the command central

The S4S Manager can be thought as a file manager for slides4saints. It is an independend program which does barely more the showing you the contents of your data directory and allows you to start other programs which act on your data. It is indeed what any file manager does...

## Song Editor

## Song Presentation

## Sheet Viewer/Editor

license: Unlicense


text:
+++
draft = false
date = "2015-01-04T19:58:37+13:00"
title = "Easier Terminal pasting in Ubuntu"
slug = "easier-terminal-pasting-in-ubuntu"
tags = ["Ubuntu"]
templates = ""
author = ""
+++

Everyone knows about the traditional clipboard where you explicitly
copy the text selection using the application's _Copy_ command, but
few know that there is a second called the _primary selection_ that
always holds the current text selection i.e. you don't have to copy to
it.

<!--more-->

This reduces _select->copy->paste_ to _select->paste_ which I find
incredibly helpful as I spend much of my computer time inside a
terminal am constantly copying and pasting text.

You can paste the primary selection by clicking the middle button on the
mouse. The Terminal application also assigns the _Shift+Insert_
keyboard shortcut to paste the primary selection.

So, if you're in the Terminal and want to paste the text selection to
the cursor just middle-click the mouse or press _Shift+Insert_ (a lot
less tedious than _Ctrl+Shift+C_ plus _Ctrl+Shift+V_).

Here's another tip: Use `xclip(1)` to copy and paste between the
terminal and Desktop applications (first you'll need to install `xclip`
with `sudo apt-get install xclip`).

Example usage:

``` bash
cat pages.html | xclip -sel clip  # Copy file to clipboard.
xclip -sel clip -o > foo.txt      # Write clipboard to file.
```

By default `xclip(1)` uses the primary selection (not the clipboard)
so I've added the following alias in my `~/.bashrc` file:

``` bash
alias xclip='xclip -sel clip'
```

This makes working with the clipboard less verbose:

``` bash
cat pages.html | xclip    # Copy file to clipboard.
xclip -o > foo.txt        # Write clipboard to file.
```

**Bonus tip**: To select text column-wise hold down the _Ctrl_ key then select the
text with the mouse.

repository: srackham/stuarts-notes

repo_name: srackham/stuarts-notes


text:
## What is Mainflux?

Mainflux is modern, scalable, secure open source and patent-free IoT cloud platform written in Go.

It accepts user, device, and application connections over various network protocols (i.e. HTTP,
MQTT, WebSocket, CoAP), thus making a seamless bridge between them. It is used as the IoT middleware
for building complex IoT solutions.

![banner](img/gopherBanner.jpg)

## Features

- Protocol bridging (i.e. HTTP, MQTT, WebSocket, CoAP)
- Device management and provisioning
- Fine-grained access control
- Platform logging and instrumentation support
- Container-based deployment using Docker

repository: yunlong/mainflux

repo_name: yunlong/mainflux


text:
</table><img src="resources/ui/menu/images/logo.png" align="right" height="300" width="300"/>

# OpenNFS

An attempt to recreate the classic Need for Speed Games (1-6), unpacking their original data files into a modern scratch built engine. Extremely early in development, current features include:

  * Reverse engineered asset loaders (tracks, cars, images, music etc) for NFS 1-6 PC and PSX (with the possibility for other systems as well), soon to be separated into LibOpenNFS for the creation of mod tools/converters through a stable API
  * A barebones game engine designed with enough configurability to accurately replicate each titles respective graphics and gampelay
  * Bullet Physics Integration for vehicle dynamics
  * New shaders that allow for dynamic lighting and shadows

![Screenshot](doc/BuildProgress.png)

## Current Loadable Assets

Below is a table better describing the current level of asset load into OpenNFS:

| Game     | Cars | Tracks | Music |
|----------|------|--------|-------|
| NFS6 PC  |      |        |       |
| NFS5 PC  | 40%**| 25%**  |       |
| NFS4 PC  | 90%* | 90%*   |       |
| NFS4 PS1 | 50%* |        |       |
| NFS3 PC  | 100% | 100%   | 95%   |
| NFS3 PS1 | 40%  | 90%    | 95%   |
| NFS2 SE  | 90%* | 90%    |       |
| NFS2 PC  | 90%* | 90%    |       |
| NFS2 PS1 | 90%* | 90%    |       |
| NFS1     |      |        |       |

\*Some titles fail to load in current builds of OpenNFS due to the undertaking of a large parser refactor.

\*\*NFS5 Track formats have been reverse engineered, but a stable parser has not yet been written.

## Planned Features

  * An actual implementation of gameplay that replicates the original titles
  * AI generated through neuroevolution for both the police and racers
  * Custom(izable), modular menus built from moddable configuration files
  * Automated import of game assets from CD, ISO or provided URLs
  * A track editor and automated converter between classic NFS titles, utlilising LibOpenNFS
  * Free Roam of an open world amalgamation of all classic NFS tracks
  * Multiplayer!

## Releases:

OpenNFS does not bundle any EA intellectual property. A copy of the original games must be provided to OpenNFS in order to function, instructions for this are available on the release page.

[View the latest stable feature releases Here](https://github.com/AmrikSadhra/OpenNFS/releases)

### Development builds on CI:

All versions (Windows/Mac/Linux) are built on VSTS, but the current build artifacts only contain the OpenNFS executable. To use these builds, it is recommended to download a Github Release from the 'Releases' page, and replace the OpenNFS executable with that produced by CI. You will most likely also need to update the 'shaders' directory, using the latest available from Git. I will alter my CI scripts soon to produce zips that can be ran without these extra steps.

|Linux|Windows|Mac OS|
|-----|-------|------|
|![Linux](https://type2labs.visualstudio.com/OpenNFS/_apis/build/status/OpenNFS.OpenNFS?branchName=main&jobName=Linux)|![Windows](https://type2labs.visualstudio.com/OpenNFS/_apis/build/status/OpenNFS.OpenNFS?branchName=main&jobName=Windows_gcc)|![Linux](https://type2labs.visualstudio.com/OpenNFS/_apis/build/status/OpenNFS.OpenNFS?branchName=main&jobName=Mac)|

## Keep up to date

#### Github Projects

Check out what I'm working on by looking at the Github Project boards for an upcoming point release [here](https://github.com/OpenNFS/OpenNFS/projects "Github Projects Page").

#### Discord

The project has a dedicated ```#open_nfs``` channel on the "Classic Need for Speed" Discord server, invite [here](https://discord.gg/xndfVZy "Discord Invite").

## Dependencies

The CMake files are currently configured to detect external libraries from within the 'lib' folder at the same level as 'src', just do a 'git submodule update --recursive --remote' to get them.

* GLEW
* GLFW
* GLM
* Bullet3
* Boost

## Thanks

Massive thanks to Denis Auroux, Vitaly 'Necromancer', EdasX, Ian Brownm, Jesper Juul-Mortensen and Arushan for their work on reverse engineering various NFS formats.
Thanks go out to AJ_Lethal for the OpenNFS Logo.

## Legal:
Models, textures, tracks, cars by EA Seattle (C) 1998, 1999, 2002. EA Canada (C) 2000, EA Blackbox (C) 2002.
OpenNFS is not affiliated in any way with EA.

Released under the MIT License.


text:
# Central Intelligence system

## What is it?

A distributed client-server system for communicating between users and machines.

First use case to be covered will be a voice controlled chat bot (https://github.com/mikko/moneypenny) installed in multiple computers and able to answer to several questions related to the context of the user. Like asking the room temperature and answering based on the client location.

## Does this make any sense?

Not yet sure..

repository: ilkka/CentralIntelligence-server

repo_name: ilkka/CentralIntelligence-server


text:
# Search Stack-Overflow
> Search for a Stack-Overflow user, and get his reputation and asked questions

## Installation
1. Clone the repo in a React-Native environment ready computer (https://reactnative.dev/docs/environment-setup).
2. Run ```yarn``` in the project's root folder.
3. Run ```yarn ios``` to run on an iOS simulator or ```yarn android``` to run on a connected Android device.

## Usage
Simply enter a Stack-Overflow user ID in the search field :)

## License
This project is [MIT](LICENSE) licensed.

repository: yossigreen/search-stackoverflow

repo_name: yossigreen/search-stackoverflow


text:
---
title: "Gerrit ESC Meeting Minutes"
tags: esc
keywords: esc minutes
permalink: 2020-09-01-esc-minutes.html
summary: "Minutes from the ESC meeting held on September 1st"
hide_sidebar: true
hide_navtoggle: true
toc: true
---

## Engineering Steering Committee Meeting, September 1, 2020

### Attendees

Ben Rohlfs, Alice Kober-Sotzek, Patrick Hiesel, Luca Milanesio

### Place/Date/Duration

Online, September 1, 12:30 - 13:30 CEST

### Next meeting

The next meeting will be held on October 6, 12:30 CEST.

## Minutes

### CI Results Tab and Composable Submit Rules

Ben and Patrick have met with all interested stakeholders and the
feedback loop is closing this week. Luca will take a final look at
both docs on Friday and approve if no major blockers surface until
then.

### Roadmap

We discussed if the roadmap should include generic items or rather
be very specific. Recent discussions have shown that if it's too
specific adding items triggers discussions that already anticipate
discussions that would usually happen on design docs ("how" and
"why" not "what"). This seemingly discourages contributors from
adding items to the roadmap, which is not what we want.

The roadmap will therefore stay generic and contributors should feel
encouraged to add plans they have.

Items can be backed by tracking bugs if the owner wants that.

### Gerrit 3.3

We discussed plans for the 3.3 release and are targeting a release
in November with branches being cut in October. Luca will drive the
release. Google will check if there are internal resources to support
this effort, which was unclear at the time of the meeting.

Luca would also reach out other maintainers that would be willing to
help with the release.

### New maintainership

The nomination for a new maintainer is progressing well and will
conclude on Thursday.

### Gerrit Event Bus

Luca raised the priority of the redesign of the Gerrit events, which
is not in any of the next release plans. GerritForge is willing to
drive the effort, assuming that there is consensus in supporting the
initiative by Google and other companies contributing to Gerrit.

Alice, who initially raised the issue during the Hackathon 2019 in
Munich, is not currently planning to make progress, but will handover
her notes to Luca so that the effort can be carried over for making
it an official proposal.

Luca will follow up with a list of problems that GerritForge is having
with the current event system.

### Open designs

Besides the CI results tab and Composable Submit Rules, we discussed
deletion of groups. Alice volunteered to write a conclusion. The feature
should be implemented in a plugin so that the auditability of groups
remains intact in core.

repository: GerritCodeReview/homepage

gha_language: HTML

repo_name: GerritCodeReview/homepage


text:
---
layout: default
---

# 1994-04-14 - Re: cypherpunks and politics (Re: USWA)

## Header Data

From<EMAIL_ADDRESS>(Jamie Lawrence)

To<EMAIL_ADDRESS>(Timothy C. May)

Message Hash: c4e5444c05be00a339acf06c1096cc1b19eb6c515250eace3cd7b15602a720a1

Message ID<EMAIL_ADDRESS>Reply To: _N/A_

UTC Datetime: 1994-04-14 23:01:32 UTC

Raw Date: Thu, 14 Apr 94 16:01:32 PDT

## Raw message

```
{% raw  %}From<EMAIL_ADDRESS>(Jamie Lawrence)
Date: Thu, 14 Apr 94 16:01:32 PDT
To<EMAIL_ADDRESS>(Timothy C. May)
Subject: Re: cypherpunks and politics (Re: USWA)
Message-ID<EMAIL_ADDRESS>MIME-Version: 1.0
Content-Type: text/plain

At 11:37 AM 04/14/94 -0700, Timothy C. May wrote:
>Jamie Lawrence wrote:

>The list is what people make of it. Nothing more and nothing less. If
>you have held off on writing 'til now about topics that are of great
>interest to you, then why are you surprised that the topics others
>write about don't match your interests?

First off, don't dismiss  me  as  a whiner.  I personally
could care less about your  personal politics until  they
overlap with crypto. But you misread my post consistently.

Perhaps I did poorly at expressing myself. I haven't been
writing due to time constraints. It is not *my* political
interests being underrepresented here that I was rambling
about. It was the potential loss of other people. Extreme
example- If you started to read a book called _Crypto for
the Masses_ by someone who rambled on for 400 pages about
socialism,  and  then  got  to  the point and made really
valid, cutting observations about  the  state  of crypto,
what are the odds you'd read to that section?

>Nobody's asking you to be "associated with libertarianism," for
>example. That many of us are libertarian-oriented is hardly
>surprising, this being the Net. And the nonlibertarians are welcome,
>but they seldom make persuasive arguments contradiciting the lib.
>views, in my opinion. Certain non-lib (though *I* call him
>libertarian!) folks like Dave Mandl are very welcome here, and make
>their views known.

What  I  was  trying to say  was not that I feel torn between
being on this  list and  my own  views, but that disregarding
what anyone here may or may not believe in, first impressions
are  gonna chase a  lot of people away who otherwise could be
sympathetic to many beliefs that seem to be held as important.

>> The point is that  even if you  think anyone  with a viewpoint
>> opposing yours is automatically stupid and not worth your time
>> (and I don't think  that  too many of you are that bad off ;),
>> aren't they at least  worth  using  to  further  something you
>> believe strongly in? It  might  do  well  to  be   careful  in
>> alienating   potential  allys  by  flip  political  jokes  and
>> comments.

>I don't know if this is a jab at me or not, perhaps for my sin of
>poking fun at Ross Perot.....I felt a satirical, but probably close to
>the truth, point about Perot's authoritarian streak would make my
>point better than a simple statement of my views.

I wasn't replying to you so much as using this thread as a jump point
for (!!) a new topic, specifically that of perceptions of others Re:
this list.

No, it wasn't a jab at you (I think Perot is scary as well)-
sorry if my comments lent themselves to this interpretation.
I do think, however, it would be valid  to say that  a Perot
supporter should be considered a potential  ally- as much as
a libertarian or even a Clinton supporter.

>If you want your brand of politics discussed here, as it relates to
>cryptography, privacy, Clipper, etc., then *discuss* it. You can't
>blame others for making their own comments.

That was not my point.

I do not  blame others for anything.  The goal was  to inform
others of the perceptions of a relative newcomer  to the list
who  differs  significantly in opinion on numerous  points in
relation to a attracting newcomers to the wonderful  world of
crypto. If I thought this list didn't interest me, I wouldn't
be on it.

>--Tim May

-j

{% endraw %}
```

## Thread

+ Return to [April 1994](/archive/1994/04)

+ Return to<EMAIL_ADDRESS>(Jamie Lawrence)](/authors/jamiel_at_sybase_com_jamie_lawrence_)"

+ 1994-04-14 (Thu, 14 Apr 94 16:01:32 PDT) - Re: cypherpunks and politics (Re: USWA) -<EMAIL_ADDRESS>(Jamie Lawrence)_