text:
#### Nr: 838
#### [Back to Main list](index.md)
# SQLSaturday #838 - Brisbane 2019
Start Time (24h)|Speaker|Track|Title
---|---|---|---
09:00:00|Steve Jones|Professional Development|[Branding Yourself for a Dream Job](#sessionid-87579)
09:00:00|Martin Cairney|Enterprise Database Administration  Deployment|[Smart Alerts in SQL DB using Automation and Logic Apps](#sessionid-89258)
09:00:00|David Alzamendi|BI Platform Architecture, Development  Administration|[Your Modern Data Warehouse Journey with Azure](#sessionid-91561)
10:20:00|Greg Low|Professional Development|[Technologies to Watch: A Gaze into Greg's Crystal Ball](#sessionid-90686)
10:20:00|Gilbert Quevauvilliers|Analytics and Visualization|[Power BI Infographic related on the Power BI Eco System](#sessionid-90842)
10:20:00|Martin Catherall|Cloud Application Development  Deployment|[Looking at the Cosmos(DB)](#sessionid-92708)
11:30:00|Manohar Punna|Strategy and Architecture|[Bridging the gap between SSRS and Power BI](#sessionid-89628)
11:30:00|Kevin Kline|Enterprise Database Administration  Deployment|[Performance Baselining and Alerting](#sessionid-90859)
11:30:00|Victor Isakov|Enterprise Database Administration  Deployment|[Understanding Big Data Clusters](#sessionid-92423)
13:30:00|Rob Volk|Enterprise Database Administration  Deployment|[Revenge: The SQL!](#sessionid-88039)
13:30:00|Vikas Rajput|BI Platform Architecture, Development  Administration|[(Humble) Azure Cloud Shell CLI : Demo](#sessionid-88181)
13:30:00|Patrick Flynn|Enterprise Database Administration  Deployment|[Introduction to SQL Server Managed Instances](#sessionid-91337)
14:50:00|Steve Jones|Application  Database Development|[Always Encrypted in SQL Server](#sessionid-87580)
14:50:00|Kevin Kline|Application  Database Development|[5 Critical Considerations When Moving to the Cloud](#sessionid-90854)
14:50:00|Anupama Natarajan|Analytics and Visualization|[Enterprise Big Data Analytics using Azure Data Lake Storage Gen2](#sessionid-91933)
16:00:00|Pio Balistoy|Enterprise Database Administration  Deployment|[SQL Server Deployment Options and When to Use Them (Full Instance vs Managed Instance vs PAAS)](#sessionid-90008)
16:00:00|Craig Bryden|BI Platform Architecture, Development  Administration|[Modern Enterprise BI in Azure](#sessionid-90589)
16:00:00|Hamish Watson|Application  Database Development|[Test Driven Development in SQL Server – how to deploy code safer](#sessionid-91284)
#
#### SessionID: 87579
# Branding Yourself for a Dream Job
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 09:00:00 - Track: Professional Development
## Speaker: Steve Jones
## Title: Branding Yourself for a Dream Job
## Abstract:
### Everyone wants a great job that they enjoy, but few of us know how to take charge of our career. Learn why it's important to raise your profile in today's highly competitive world where there are often more candidates than positions for great jobs. This session will help you build a strong brand that allows you to attract potential employers or clients and start to convince them ahead of time that you are the person they want to hire.
#
#### SessionID: 89258
# Smart Alerts in SQL DB using Automation and Logic Apps
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 09:00:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Martin Cairney
## Title: Smart Alerts in SQL DB using Automation and Logic Apps
## Abstract:
### If you've played with Azure SQL DB, you'll know that there is no SQL Agent provided with the service.

Fortunately there's options available to get over this hurdle such as Azure Automation which can be used as a scheduling engine to run PowerShell or Python scripts to perform your tasks. However, Azure Automation Runbooks can also be triggered from Azure SQL DB alerts.

This session will introduce Azure Automation, from a basic manually executed Runbook to an alert-driven responsive utility that can save you considerable effort.

We'll then take our Alert responses a step further and use them to trigger an Azure Logic App workflow. Azure Logic Apps provide a robust workspace with built-in scalability and retry logic for your workflow along with many connectors which can expand the response to your alert.

Imagine capturing an Alert, performing remedial action, logging the issue  response in your ticketing system and switching on the kettle for a cuppa while Azure does all the work.
#
#### SessionID: 91561
# Your Modern Data Warehouse Journey with Azure
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 09:00:00 - Track: BI Platform Architecture, Development  Administration
## Speaker: David Alzamendi
## Title: Your Modern Data Warehouse Journey with Azure
## Abstract:
### Game on! It’s time to move or create your data warehouse in Azure. What are the options?

Azure offers an endless list of services that will be a good fit for your data warehouse solution. This session covers the main services and classifies them into the various layers of a data warehouse architecture.

I am also going to show you how easy it is to start developing and delivering within the Azure environment and share some tips that can help you start this journey. Azure Data Warehouse, Databricks, Data Lake and Data Factory are some of the services that will be part of this session.
#
#### SessionID: 90686
# Technologies to Watch: A Gaze into Greg's Crystal Ball
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 10:20:00 - Track: Professional Development
## Speaker: Greg Low
## Title: Technologies to Watch: A Gaze into Greg's Crystal Ball
## Abstract:
### Last year, Greg delivered a session on technologies that fascinate a technologist as the keynote for SQL Saturday Auckland. People were raving about it afterwards and wanted to see a longer version of it. This is a longer and updated version of that keynote. Greg dives into technologies that fascinate him, that he thinks will fascinate you, and that he thinks will fundamentally alter the world. He looks into how they are likely to change work as we know it today. Come and be intrigued and inspired.
#
#### SessionID: 90842
# Power BI Infographic related on the Power BI Eco System
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 10:20:00 - Track: Analytics and Visualization
## Speaker: Gilbert Quevauvilliers
## Title: Power BI Infographic related on the Power BI Eco System
## Abstract:
### What actually makes up the Power BI Eco System?

		Have you ever wondered what are all the parts that make up the Power BI Eco System and their features?

		In this session I will cover the area's which make up the Power BI Eco system. This will include Power BI Desktop, Power BI Service (Free, Pro  Premium), Power BI Gateway, Power BI Report Server  Power BI Mobile App.

		The goal of this session will be to give you a better understanding of all the working parts. And once you have a better understanding it will allow you to have the knowledge to know what to do where.

		It will be an insightful journey into how much is actually going on within the world of Power BI in an easy to understand and digest manner.

The most popular blog posts are ones where it is easier concepts and details on how Power BI works.
#
#### SessionID: 92708
# Looking at the Cosmos(DB)
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 10:20:00 - Track: Cloud Application Development  Deployment
## Speaker: Martin Catherall
## Title: Looking at the Cosmos(DB)
## Abstract:
### Azure Cosmos DB is Microsoft’s Globally Distributed, Multi-Model database service.  Transparently scaling across multiple Azure regions, Cosmos DB provides for many API’s including MongoDB, Cassandra, Gremlin and SQL. It offers multiple consistency models and guarantees uptime or 5 9’s.

In this session we’ll take a look at this technology and learn how it might be useful – either now or in the future.
#
#### SessionID: 89628
# Bridging the gap between SSRS and Power BI
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 11:30:00 - Track: Strategy and Architecture
## Speaker: Manohar Punna
## Title: Bridging the gap between SSRS and Power BI
## Abstract:
### Traditionally, SSRS is used for paginated reports which gives flexibility like drill through reports, subscriptions and print formatting. With Power BI the reports are now more interactive and dynamic. There are still few gaps between these two platforms which are built to purpose. This gap is getting smaller as features are ported between these two platforms. In this session I will be going through various features which are bridging these gaps and point out the differences. These are significant and can affect your decision in choosing the right platform which will fit your needs.
#
#### SessionID: 90859
# Performance Baselining and Alerting
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 11:30:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Kevin Kline
## Title: Performance Baselining and Alerting
## Abstract:
### Ensuring peak performance on an instance of Microsoft SQL Server is not easy and requires a lot of work on the part of the DBA. Experienced DBAs know that to maintain the best possible performance, you need to make sure you are monitoring the right performance metrics on a regular basis. Using those metrics, you can determine what normal performance looks like under most workloads. After all, when troubleshooting, how can you tell what is abnormal performance if you don’t know what is normal? But how do you know what performance information to track and how to interpret it? Baseline comparisons can help.

This session describes techniques and procedures to monitor important performance metrics you can use to define as a baseline for “normal” performance. From there, we will show you how to use these baseline metrics to identify and alert on abnormal circumstances. The session includes detailed demos of how to use the native Microsoft tools, plus open-source tools, to run baseline and b
#
#### SessionID: 92423
# Understanding Big Data Clusters
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 11:30:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Victor Isakov
## Title: Understanding Big Data Clusters
## Abstract:
### Starting with SQL Server 2019 preview, SQL Server Big Data Clusters allow you to deploy scalable clusters of SQL Server, Spark, and HDFS containers running on Kubernetes. These components are running side by side to enable you to read, write, and process big data from Transact-SQL or Spark, allowing you to easily combine and analyze your high-value relational data with high-volume big data.
In this session we will explore the technology and business/use cases for using SQL Server Big Data Clusters within your organisation. Welcome to the future of SQL Server.
#
#### SessionID: 88039
# Revenge: The SQL!
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 13:30:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Rob Volk
## Title: Revenge: The SQL!
## Abstract:
### Pop quiz DBA: Your developers are running rampant in production. Logic, reason, and threats have all failed. You're on the edge. What do you do?
Hint: You attend Revenge: The SQL!
This session will show you how to "correct" all those bad practices. Everyone logging in as sa? Running huge cursors? Using SELECT * in ad-hoc SQL? Stop them dead, without actually killing them. Ever dropped a table, or database, or WHERE clause? You can prevent that! And if you’re tired of folks ignoring your naming conventions, make them behave with Unicode…and take your revenge!
Revenge: The SQL! is fun and educational and may even have some practical use, but you’ll want to attend simply to indulge your Dark Side. Revenge: The SQL! assumes no liability and is not available in all 50 states. Do not taunt Revenge: The SQL! or Happy Fun Ball.
#
#### SessionID: 88181
# (Humble) Azure Cloud Shell CLI : Demo
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 13:30:00 - Track: BI Platform Architecture, Development  Administration
## Speaker: Vikas Rajput
## Title: (Humble) Azure Cloud Shell CLI : Demo
## Abstract:
### Azure Cloud Shell has been around for some time (months) now. Let's explore some of the things you can do with it - for free! Especially useful for those midnight side-projects, and maybe, for start-up enthusiasts.
#
#### SessionID: 91337
# Introduction to SQL Server Managed Instances
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 13:30:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Patrick Flynn
## Title: Introduction to SQL Server Managed Instances
## Abstract:
### Azure Managed Instances are one of the newest SQL Server related PAAS offering from Microsoft (Azure SQL Managed Instance GA in September 2018). It can be considered a hybrid of Azure SQL Database and on-premises SQL Server with all the great benefits of Platform as a Service.

In this session we will explore:

What exactly are Azure Managed Instances
The differences between Azure SQL Database, Managed Instances, and SQL Server on an Azure VM
What's good and what could be improved.

We'll investigate:
1. When to consider this option
2. How to "lift and shift" our "production" instances.
3.What Service level to consider and the possible costs.

We will also discuss some of the future directions, in particular the new Hyperscale service tier
#
#### SessionID: 87580
# Always Encrypted in SQL Server
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 14:50:00 - Track: Application  Database Development
## Speaker: Steve Jones
## Title: Always Encrypted in SQL Server
## Abstract:
### Always Encrypted was added to SQL Server 2016 and is being enhanced in SQL Server 2019 to easily allow developers and DBAs to protect their data with strong encryption. Come learn how to design and implement Always Encrypted, including a discussion of the requirements, capabilities, and limitations for your environment. We will discuss the places where this encryption mechanism makes sense while showing the ease with which this can be added to an application while providing the potential architectural issues you may encounter.
#
#### SessionID: 90854
# 5 Critical Considerations When Moving to the Cloud
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 14:50:00 - Track: Application  Database Development
## Speaker: Kevin Kline
## Title: 5 Critical Considerations When Moving to the Cloud
## Abstract:
### Migrating an existing on-premises SQL Server application to the cloud can be a daunting task that consists of many complicated steps. In this webinar, our focus is on what is perhaps the MOST important steps of the process – those that lead up to the actual move to the cloud.
The session takes you on a dive deep into the most critical considerations for moving your data and databases into the cloud, whether you use Microsoft Azure, Amazon, or another cloud provider.
We will cover:
•	The importance of cleansing your data before a major migration
•	Fully documenting your data sources and metadata
•	Choosing from many different tools and techniques to move the actual data
•	How to test data for fidelity
•	Forecasting how much migration will cost
•	How to maintain parallel systems during transitional phases
You also see demos and overviews of native features within SQL Server that enable you to move data, as well as show powerful tools from the SentryOne product set that can make
#
#### SessionID: 91933
# Enterprise Big Data Analytics using Azure Data Lake Storage Gen2
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 14:50:00 - Track: Analytics and Visualization
## Speaker: Anupama Natarajan
## Title: Enterprise Big Data Analytics using Azure Data Lake Storage Gen2
## Abstract:
### Azure Data Lake Storage Gen2 is a highly scalable and cost-effective data lake solution for big data analytics. Data Lake Storage Gen2 makes Azure Storage the foundation for building enterprise data lakes on Azure. Data Lake Storage Gen2 allows you to easily manage massive amounts of data.
In this session you will learn
•	How to ingest structured and unstructured data into Azure Data Lake Storage Gen2?
•	How to access Azure Data Lake Storage Gen2 data with Azure Data Bricks using Spark?
•	How to secure data in Azure Data Lake Storage Gen2?
At the end of the session you will learn how to implement end to end Analytics for a modern Data Warehouse using Azure Data Lake Storage Gen2.
#
#### SessionID: 90008
# SQL Server Deployment Options and When to Use Them (Full Instance vs Managed Instance vs PAAS)
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 16:00:00 - Track: Enterprise Database Administration  Deployment
## Speaker: Pio Balistoy
## Title: SQL Server Deployment Options and When to Use Them (Full Instance vs Managed Instance vs PAAS)
## Abstract:
### With the advent of cloud we now have multiple deployment options for SQL Server. Be it a Full instance on premise or in the cloud, to a managed instance or a Platform as a service in the form of Azure SQL Database - each deployment options have their own use case. In this session, we will explore SQL Server's deployment options to help you decide which path is applicable to which scenarios.
#
#### SessionID: 90589
# Modern Enterprise BI in Azure
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 16:00:00 - Track: BI Platform Architecture, Development  Administration
## Speaker: Craig Bryden
## Title: Modern Enterprise BI in Azure
## Abstract:
### With  lot of BI and Analytics solutions moving to the cloud, you might be asking yourself what a modern, end-to-end BI solution looks like now. There are several different options for how you can implement such a solution. In this session, Craig will discuss and demonstrate how you can implement enterprise BI in Azure. Craig will do so by taking "on-premises" data into Azure SQL Data Warehouse and then surface this in Power BI. Some of the technologies used will include:
- SQL Server
- Azure Data Factory
- Azure SQL Data Warehouse
- Azure Analysis Services
- Power BI
#
#### SessionID: 91284
# Test Driven Development in SQL Server – how to deploy code safer
#### [Back to calendar](#nr-838)
Event Date: 01-06-2019 - Session time: 16:00:00 - Track: Application  Database Development
## Speaker: Hamish Watson
## Title: Test Driven Development in SQL Server – how to deploy code safer
## Abstract:
### Test Driven Development (TDD)  is a design approach which has enabled application developers to write cleaner code.
It is relevant for database development as it ensures that code produced using TDD and unit tests will be of higher quality which means interactions with data will be safer.
TDD is not a new method of unit testing, it is an essential design practice for improving the quality of your deployed code.
In this session it will be shown how we can use TDD to design and write better unit tests using open-source frameworks and industry standard tools. These tools can be run within SQL Server Management Studio which means DBAs can also take advantage of TDD and unit test, to ensure more reliable code is deployed to databases.
TDD can result in code that can be deployed more reliably and faster when using DevOps processes such as Continuous Integration and Continuous Delivery.
A comprehensive DEMO will reveal how Test Driven Development can help you deploy database code safer.

repository: andrekamman/sqlsathistory

repo_name: andrekamman/sqlsathistory


text:
# Tenant CRD reference

## Table of Contents

* [Tenant](#tenant)
  * [TenantSpec](#tenantspec)
  * [Master Secret](#master-secret)
    * [Admin Secret](#admin-secret)
    * [Tenant Secret](#tenant-secret)
  * [TenantStatus](#tenantstatus)

Generated using [github-markdown-toc](https://github.com/ekalinin/github-markdown-toc)

## Tenant

| **Field** | **json field**| **Type** | **Info** |
| --- | --- | --- | --- |
| Spec | `spec` | [TenantSpec](#TenantSpec) | The specfication for Tenant custom resource |
| Status | `status` | [TenantStatus](#TenantStatus) | The status for the Tenant custom resource |

### TenantSpec

| **Field** | **json field**| **Type** | **Info** | **Required** |
| --- | --- | --- | --- | --- |
| Organization Name | `organizationName` | string | Organization Name | Yes |
| Email | `email` | string | Admin email address | Yes |
| Admin Username | `username` | string | Admin credentials: username | Yes |
| Master Account Domain URL | `systemMasterUrl` | string | Master Account URL | Yes |
| Master Account Credentials Secret | `masterCredentialsRef` | object | See [Master Secret](#Master-Secret) for more details | Yes |
| Admin Secret | `passwordCredentialsRef` | object | See [Admin Secret](#Admin-Secret) for more details | Yes |
| Tenant Credentials Secret | `tenantSecretRef` | object | See [Tenant Secret](#Tenant-Secret) for more details | No |

#### Master Secret
Tenants can be managed using master provider account credentials. This secret provides those credentials to the 3scale operator.

The credentials are tipically provided by [APIManager](operator-user-guide.md#Basic-installation)
and stored in the secret name [system-seed](apimanager-reference.md#system-seed).
If this is the case, `masterCredentialsRef` object should look like:

```yaml
masterCredentialsRef:
  name: system-seed
```

Tenant controller will fetch the secret and read the following fields:

| **Field** | **Description** |
| --- | --- |
| *MASTER_ACCESS_TOKEN* | Master provider account access token with *Account Management API* scope and *Read & Write* permission|

If secret needs to be created manually, can be defined in the following way:

```sh
$ cat ecorp-master-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: ecorp-master-secret
type: Opaque
stringData:
  MASTER_ACCESS_TOKEN: <master access token>

$ oc create -f ecorp-master-secret.yaml
secret/ecorp-master-secret created
```

then, `masterCredentialsRef` object should look like:

```yaml
masterCredentialsRef:
  name: ecorp-master-secret
```

#### Admin Secret

Tenant creation requires Admin username, email and password. The password will be provided as a secret and referenced by `passwordCredentialsRef` object.

*IMPORTANT* This *Admin Secret* has to be created *before* **Tenant custom resource** is created. Otherwise, **3scale operator** will complain.

Secret required fields:

| **Field** | **Description** |
| --- | --- |
| *admin_password* | Tenant admin user password value |

Admin secret needs to be created manually, can be defined in the following way:

```sh
$ cat ecorp-admin-secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: ecorp-admin-secret
type: Opaque
stringData:
  admin_password: <admin password value>

$ oc create -f ecorp-admin-secret.yaml
secret/ecorp-admin-secret created
```

then, `passwordCredentialsRef` object should look like:

```yaml
passwordCredentialsRef:
  name: ecorp-admin-secret
```

#### Tenant Secret
When tenant has been created, tenant level credentials will be created to operate on that particular tenant.
Those credentials will be stored by **tenant controller** in a secret.
`tenantSecretRef` in tenant's spec will reference this specific secret.

Fields available in the tenant secret:

| **Field** | **Description** |
| --- | --- |
| *token* | Tenant's provider key |
| *adminURL* | Tenant's admin domain URL |

**Example Secret:**
```
apiVersion: v1
kind: Secret
metadata:
  name: tenant-secret
type: Opaque
stringData:
  adminURL: https://my3scale-admin.3scale.net:443
  token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
```

### TenantStatus

| **Field** | **json field**| **Type** | **Info** |
| --- | --- | --- | --- |
| Admin User ID | `adminID` | string | Internal ID for the admin user |
| Tenant ID | `tenantID` | string | Internal ID for the provider account |
| Tenant Admin Domain URL | `adminURL` | string | Tenant's admin domain URL |

branch_name: refs/heads/master

extension: md

gha_language: Go

license_type: permissive


text:
#The law and light within the most sure rule or light, which sheweth the right use and end of the Scripture, manifested in opposition to several false principles inserted in a book intitled Scripture light the most sure light, by William Bridge, the great pastor and Reverend Father, so accounted, of the Church at Yarmouth in Norfolk / confuted by George Whitehead.#

##Whitehead, George, 1636?-1723.##
The law and light within the most sure rule or light, which sheweth the right use and end of the Scripture, manifested in opposition to several false principles inserted in a book intitled Scripture light the most sure light, by William Bridge, the great pastor and Reverend Father, so accounted, of the Church at Yarmouth in Norfolk / confuted by George Whitehead.
Whitehead, George, 1636?-1723.

##General Summary##

**Links**

[TCP catalogue](http://www.ota.ox.ac.uk/tcp/)  •
[HTML](http://tei.it.ox.ac.uk/tcp/Texts-HTML/free/A65/A65872.html)  •
[EPUB](http://tei.it.ox.ac.uk/tcp/Texts-EPUB/free/A65/A65872.epub) •
[Page images (Historical Texts)](https://data.historicaltexts.jisc.ac.uk/view?pubId=eebo-18216908e&pageId=eebo-18216908e-107196-1)

**Availability**

This keyboarded and encoded edition of the
	       work described above is co-owned by the institutions
	       providing financial support to the Early English Books
	       Online Text Creation Partnership. This Phase I text is
	       available for reuse, according to the terms of Creative
	       Commons 0 1.0 Universal. The text can be copied,
	       modified, distributed and performed, even for
	       commercial purposes, all without asking permission.

**Major revisions**

1. __2004-11__ __TCP__ *Assigned for keying and markup*
1. __2004-12__ __SPi Global__ *Keyed and coded from ProQuest page images*
1. __2005-01__ __Judith Siefring__ *Sampled and proofread*
1. __2005-01__ __Judith Siefring__ *Text and markup reviewed and edited*
1. __2005-04__ __pfs__ *Batch review (QC) and XML conversion*

##Content Summary##

#####Body#####

1. THE Law and Light WITHIN, The most sure Rule or Light, which sheweth the right use and end of the Scripture, MANIFESTED In opposition to several false Principles inserted in a Book Intituled Scripture Light the most sure Light, by William Bridge, the Great Pastor and Reverend Father, so accounted, of the Church at Yarmouth in NORFOLK.

**Types of content**

  * Oh, Mr. Jourdain, there is **prose** in there!

There are 7 **ommitted** fragments!
 @__reason__ (7) : illegible (7)  •  @__extent__ (7) : 1 letter (7)

**Character listing**

|Text|string(s)|codepoint(s)|
|---|---|---|
|General Punctuation|•|8226|
|Geometric Shapes|▪|9642|

##Tag Usage Summary##

###Header Tag Usage###

|No|element name|occ|attributes|
|---|---|---|---|
|1.|__author__|2||
|2.|__availability__|1||
|3.|__biblFull__|1||
|4.|__change__|5||
|5.|__date__|8| @__when__ (1) : 2005-10 (1)|
|6.|__edition__|1||
|7.|__editionStmt__|1||
|8.|__editorialDecl__|1||
|9.|__extent__|2||
|10.|__idno__|6| @__type__ (6) : DLPS (1), STC (2), EEBO-CITATION (1), OCLC (1), VID (1)|
|11.|__keywords__|1| @__scheme__ (1) : http://authorities.loc.gov/ (1)|
|12.|__label__|5||
|13.|__langUsage__|1||
|14.|__language__|1| @__ident__ (1) : eng (1)|
|15.|__listPrefixDef__|1||
|16.|__note__|6||
|17.|__notesStmt__|2||
|18.|__p__|11||
|19.|__prefixDef__|2| @__ident__ (2) : tcp (1), char (1)  •  @__matchPattern__ (2) : ([0-9\-]+):([0-9IVX]+) (1), (.+) (1)  •  @__replacementPattern__ (2) : http://eebo.chadwyck.com/downloadtiff?vid=$1&page=$2 (1), https://raw.githubusercontent.com/textcreationpartnership/Texts/master/tcpchars.xml#$1 (1)|
|20.|__projectDesc__|1||
|21.|__pubPlace__|2||
|22.|__publicationStmt__|2||
|23.|__publisher__|2||
|24.|__ref__|2| @__target__ (2) : https://creativecommons.org/publicdomain/zero/1.0/ (1), http://www.textcreationpartnership.org/docs/. (1)|
|25.|__seriesStmt__|1||
|26.|__sourceDesc__|1||
|27.|__term__|4||
|28.|__textClass__|1||
|29.|__title__|3||
|30.|__titleStmt__|2||

###Text Tag Usage###

|No|element name|occ|attributes|
|---|---|---|---|
|1.|__desc__|7||
|2.|__div__|1| @__type__ (1) : text (1)|
|3.|__g__|48| @__ref__ (48) : char:EOLhyphen (47), char:punc (1)|
|4.|__gap__|7| @__reason__ (7) : illegible (7)  •  @__extent__ (7) : 1 letter (7)|
|5.|__head__|1||
|6.|__hi__|119||
|7.|__p__|46||
|8.|__pb__|9| @__facs__ (9) : tcp:107196:1 (1), tcp:107196:2 (2), tcp:107196:3 (2), tcp:107196:4 (2), tcp:107196:5 (2)  •  @__n__ (7) : 2 (1), 3 (1), 4 (1), 5 (1), 6 (1), 7 (1), 8 (1)  •  @__rendition__ (1) : simple:additions (1)|
|9.|__seg__|1| @__rend__ (1) : decorInit (1)|
|10.|__trailer__|1||


text:
---
id: 5900f5231000cf542c510034
title: "Problem 438: Integer part of polynomial equation's solutions"
challengeType: 5
forumTopicId: 302109
dashedName: problem-438-integer-part-of-polynomial-equations-solutions
---

# --description--

For an n-tuple of integers t = (a1, ..., an), let (x1, ..., xn) be the solutions of the polynomial equation xn + a1xn-1 + a2xn-2 + ... + an-1x + an = 0.

Consider the following two conditions: x1, ..., xn are all real. If x1, ..., xn are sorted, ⌊xi⌋ = i for 1 ≤ i ≤ n. (⌊·⌋: floor function.)

In the case of n = 4, there are 12 n-tuples of integers which satisfy both conditions. We define S(t) as the sum of the absolute values of the integers in t. For n = 4 we can verify that ∑S(t) = 2087 for all n-tuples t which satisfy both conditions.

Find ∑S(t) for n = 7.

# --hints--

`euler438()` should return<PHONE_NUMBER>809.

```js
assert.strictEqual(euler438(),<PHONE_NUMBER>809);
```

# --seed--

## --seed-contents--

```js
function euler438() {
  return true;
}

euler438();
```

# --solutions--

```js
// solution required
```

license: MIT

gha_license_id: MIT


text:
# CascadeJS

[Official Docs](https://bartboy011.github.io/CascadeJS/)

CascadeJS makes it simple to add cascading animations to individual letters or elements, using only vanilla javascript.

## Installation

Installation is easy, you have three options:

```bash
npm install cascadejs
bower install cascadejs
```

or just download from GitHub. Then:

```html
<link href='stylesheet' type='text/css' href='cascade.min.css' />
<script type='text/javascript' src='cascade.min.js' />
```

## Quick Start

CascadeJS comes with default settings, so as long as you've included both the JS and CSS files, it will work right out of the box. Here's an example usage:

```html
<link href='stylesheet' type='text/css' href='cascade.css' />
<script type='text/javascript' src='cascade.js' />

<h1>Ooooohhhh, fancy.</h1>

<script>
  var element = document.getElementsByTagName('h1')[0];
  var cascade = new Cascade(element).flow();
</script>
```

## Usage

CascadeJS works by reading a line of text, splitting that text into spans around each character, and then adding animations to each span (by default). The splitting is modeled after charming.js, a vanilla javascript version of Lettering.js. Cascade requires an element be passed in on initialization:

```javascript
var cascade = new Cascade(element);
```

Cascade has two methods that can be called:

```javascript
var cascade = new Cascade(element);
cascade.fragment();
cascade.flow();
```

Calling `fragment()` will split the text without adding the animations, and must be called on an element with only a text node for a child. Calling `flow()` will first fragment the text, and then animate all children elements in a cascade. I would suggest calling `flow()` whenever possible.

### Usage of `flow()`

Initialize Cascade with an element:

```javascript
var cascade = new Cascade(element);
```

Then call `flow()` with any or none of the following options:

```javascript
cascade.flow({
  tagName: 'span',
  classPrefix: 'cascade char',
  effect: 'fadeUp',
  totalTime: 0.5,
  duration: 1,
  shouldFragment: true,
  shouldAppendTargetClass: true,
  targetClass: 'cascade-container'
});
```

`tagName:` - The tag that will wrap each character, ie `<span>A</span>`. Defaults to 'span'.

`classPrefix:` - The class(es) to be added to the tags, with an increasing number appended at the end, ie `<span class="cascade char1">A</span>`. Defaults to 'cascade char'.

`effect:` - The class name that adds the animation. In this default, 'fadeUp' uses a keyframe animation to fade in text while utilizing translateY to slide it up. Defaults to 'fadeUp'.

`totalTime:` - The amount of time in seconds as a float/integer from the first letter beginning it's animation to the last letter beginning it's animation. Defaults to `0.5`.

`duration:` - How long each letter's animation lasts. If you'd rather specify this in your CSS, just leave this option empty. Defaults to `null` and doesn't add this styling.

`shouldFragment:` - If you've previously called `fragment()` on this node, set this option to false otherwise the fragmentation will run again and throw an error. Defaults to true.

`shouldAppendTargetClass` - Defaults to true, will append a class to the target element after fragmenting.

`targetClass` - The class to be appended to the target element. Defaults to 'cascade-container'. Note: if you've already added the class to the element that you'd like appended, CascadeJS will skip the appending. Example:

```html
<!-- This element will have a class appended to it -->
<h1 class='text-center'>Hello!</h1>

<script>
  var element = document.getElementsByTagName('h1')[0];
  var cascade = new Cascade(element);
  cascade.flow({
    targetClass: 'cascade-container'
  });
</script>

<!-- This element will NOT have a class appended -->
<h1 class='text-center cascade-container'>Hello!</h1>

<script>
  var element = document.getElementsByTagName('h1')[0];
  var cascade = new Cascade(element);
  cascade.flow({
    targetClass: 'cascade-container'
  });
</script>
```

#### Example:

```html
<h1>Hello!</h1>

<script>
  var element = document.getElementsByClassName('cascade-container')[0];
  cascade = new Cascade(element).flow({
    totalTime: 2,
    duration: 1.5
  })
</script>
```

Produces:

```html
<h1 class='cascade-container'>
  <span class='cascade char1 fadeUp' style='animation-delay: 0s; animation-duration: 1.5s;'>H</span>
  <span class='cascade char2 fadeUp' style='animation-delay: 0.4s; animation-duration: 1.5s;'>e</span>
  <span class='cascade char3 fadeUp' style='animation-delay: 0.8s; animation-duration: 1.5s;'>l</span>
  <span class='cascade char4 fadeUp' style='animation-delay: 1.2s; animation-duration: 1.5s;'>l</span>
  <span class='cascade char5 fadeUp' style='animation-delay: 1.6s; animation-duration: 1.5s;'>o</span>
  <span class='cascade char6 fadeUp' style='animation-delay: 2s; animation-duration: 1.5s;'>!</span>
</h1>
```

Use Animate.css? Try this:

```javascript
var element = document.getElementsByClassName('cascade-container')[0];
var cascade = new Cascade(element).flow({
  classPrefix: 'animated char',
  effect: 'bounceInLeft'
});
```

You can also call `flow()` on an element that already has children nodes of any kind and they'll be animated as well:

```html
<div class='container'>
  <div>Element One</div>
  <div>Element Two</div>
  <div>Element Three</div>
  <div>Element Four</div>
</div>

<script>
  var element = document.getElementsByClassName('container')[0];
  var cascade = new Cascade(element);
  cascade.flow({
    shouldFragment: false,
    shouldAppendTargetClass: false
  });
```

### Usage of `fragment()`

`fragment()` will split and wrap your text, but not animate it. Just want to style each letter in an interesting way? Want a vanilla javascript replacement for lettering.js? This is it. `fragment()` accepts all the same options as `flow()`, but only the following will be applied:

```javascript
var cascade = new Cascade(element).fragment({
  tagName: 'span',
  classPrefix: 'cascade char'
});
```

You can then call

```javascript
cascade.flow({
  shouldFragment: false
});
```

When you're ready for some cool animations.


text:
# Panda3DTools 0.1
### Bam exporter for blender 2.8 - 3.0

## Disclaimer

This is not related to the official tools for Panda3D.

## Concept
Tools for working with the Panda3D engine in the Blender modeling package.
It uses the Panda3D game engine under the hood, so it has no limitations.

It has three export modes:

1. Scene, configure, and save the entire scene to a bam file.
2. Object, configure, and save to a bam file.
3. Select, configure,  and save the desired objects to a bam file.

Before installing, read the section:
[Installation](https://github.com/serkkz/Panda3DTools/wiki/Installation)

<!-- ![Image alt](https://github.com/serkkz/res/blob/master/diagram.png)-->

## Supported exporting
| Description            |      Exporting     |     Note     |
|------------------------|:------------------:|:------------:|
| Meshes                 | :heavy_check_mark: |              |
| Texture Coordinates(UV)| :heavy_check_mark: |    multi     |
| Vertex color           | :heavy_check_mark: |    multi     |
| Vertex normal          | :heavy_check_mark: |              |
| Cameras                | :heavy_check_mark: |              |
| Object hierarchy       | :heavy_check_mark: |              |
| Collisions             | :heavy_check_mark: |              |

## Wiki
[Wiki](https://github.com/serkkz/Panda3DTools/wiki)

branch_name: refs/heads/main


text:
## Create a Product

```shell
curl "https://v-factory.omniship.eu/api/portal/v1/products"
  -X POST
  -H "Authorization: Bearer FkihCtzyXWvutSRUaaEupN8hvABcDefgHI6lJKvv"
  -H "Content-Type: application/json"
  -d '{
          "sku": "SKU991",
          "name": "Shoes",
          "barcode": "153485909567",
          "description": "description",
          "weight": 250,
          "length": 10,
          "width": 5,
          "height": 2,
          "sales_rate": 19.81,
          "hs_code": "9876878",
          "country_of_origin": "NL",
          "unlimited_stock": false,
          "minimum_stock_level": 20,
      }'
```

> The above command returns JSON structured like this:

```
HTTP/1.1 201 Created
Content-Type:application/json;charset=UTF-8
```

```json
{
  "product": {
    "id": "a59bd158-2efb-11eb-b2c7-095feaa89723",
    "name": "Shoes",
    "sku": "SKU991",
    "description": "description",
    "barcode": "153485909567",
    "weight": 250,
    "length": 10,
    "width": 5,
    "height": 2,
    "sales_rate": 19.81,
    "hs_code": "9876878",
    "country_of_origin": "NL",
    "active": true,
    "stock": [
      {
        "warehouse": "Main Warehouse",
        "total_stock": 0,
        "reserved": 0,
        "backorders": 0,
        "picklists": 0,
        "free": 0,
        "locations": []
      }
    ]
  }
}
```

### HTTP Request

POST `https://v-factory.omniship.eu/api/portal/v1/products`

### Arguments

Attribute | Type | Description
--------- | ----------- | ----------
name | string | Required Name of the product.
sku | string | Required The Stock Keeping Unit (SKU) of an product. This is unique for every product in the inventory.
description | string | optional Description of the product.
barcode | string | optional Barcode (usually GS1, EAN13 or UPC code).
sales_rate | double | required Sales price of the product.
weight | integer | optional Weight of the product in grams.
length | integer | optional Length of the product in centimeters.
width | integer | optional Width of the product in centimeters.
height | integer | optional Height of the product in centimeters.
hs_code | string | optional HS Code for customs.
country_of_origin | string | optional Country of origin of the product for customs (needs to be ISO 3166 2-char code).


text:
# Emopy-Models

Emotion recognition using facial expression demo.

## How to run demo
### Image demo

```
python -m demo --mtype np --ttype image --path /path-to-image/image-file
```
Where ```--mtype``` is model type. It can be either ```np```(neutral positive classifier) , ```ava```(basic seven emotion classifier including neutral, from image and dlib key points attributes of image) or ```ava-ii``` (basic seven emotion classifier from image pixel values). ```--ttype``` is type of of demo either ```image``` , ```video``` or ```webcam```. ```--path``` is full path to image.

### video demo
```
python -m demo --mtype np --ttype video --path /path-to-video/video-file
```
### web demo
```
python -m demo --mtype np --ttype webcam
```

### Dependancies

* tensorflow >= 1.0
* keras >= 2.0
* opencv >= 3.0
* dlib
* numpy

* [shape_predictor_68_face_landmarks.dat][sp]

#### N.B

* **opencv should be compiled with ffmpeg support.**
* **Conda virtual environment can be created using the following command.**

 ```
 conda env create -f requirements.yml -n emopy_2
 ```
* **shape_predictor should be inside root directory of this project. Shape predictor can be downloaded to project using the following script.**
```
cd /path-to-project
wget "http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2"
bzip2 -d shape_predictor_68_face_landmarks.dat.bz2
```

 [sp]: http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

repository: dagiopia/Emopy-Models-New

repo_name: dagiopia/Emopy-Models-New


text:
# go-piparser
[![Build Status](https://travis-ci.org/dmigwi/go-piparser.svg?branch=master)](https://travis-ci.org/dmigwi/go-piparser)
[![ISC License](https://img.shields.io/badge/license-ISC-blue.svg)](http://copyfree.org)
![GitHub top language](https://img.shields.io/github/languages/top/dmigwi/go-piparser.svg?color=green&style=popout)

go-piparser is tool that parses [Politeia](https://proposals.decred.org) proposals votes data stored in github.
It adds a timestamp field obtained from the commit history. The tool makes use of the git commandline interface to clone
and query the politeia votes data. Github repository updates are fetched at intervals of 1hr after setting up the
environment. [politeia doc](https://docs.decred.org/advanced/navigating-politeia-data/#voting-and-comment-data)

Check out the full doc at [godoc.org](https://godoc.org/github.com/dmigwi/go-piparser/proposals) or code navigation on [sourcegraph.com](https://sourcegraph.com/github.com/dmigwi/go-piparser/-/blob/proposals/parser.go)

## Table of Contents

- [Requirement](#requirement)
- [Installation](#installation)
- [Import go-piparser](#import-go-piparser)
- [Initialize the Parser instance](#initialize-the-parser-instance)
- [Fetch the Proposal's Votes](#fetch-the-proposal's-votes)
- [Fetch new updates via a trigger channel](#fetch-new-updates-via-a-trigger-channel)
- [Full Sample Program](#full-sample-program)
- [Test Client](#test-client)

## Requirement

- git -  The tool requires a functional git commandline installation.
To install git visit [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)

    - A git version of `v1.5.1` released on [April 4th 2007](https://github.com/git/git/releases/tag/v1.5.1) or one after is needed.

- go - Golang installation is needed.
    - go1.11 or one after is required.

## Installation

```bash
    go get -u github.com/dmigwi/go-piparser/proposals
```

## Import go-piparser

```go
    import "github.com/dmigwi/go-piparser/proposals"
```

## Initialize the Parser instance

```go
    repoOwner := ""
    repoName  := ""
    cloneDir  := "/path/to/root/clone/directory"

    parser, err := proposals.NewParser(repoOwner, repoName, cloneDir)
    if err != nil {
		log.Fatalf("unexpected error occured: %v", err)
    }
```

- `repoOwner` - defines the owner of the repository where the Politeia votes are to be queries from. If not set, it defaults to `decred-proposals`
- `repoName` - defines the name of the repository holding the Politeia votes. If not set, it defaults to `mainnet`.
- `cloneDir` - defines the directory where the said repository will be cloned into. If not set, a tmp folder is created and set.

## Fetch the Proposal's Votes

```go
    // Decred Integration for IDAX Exchange Proposal token.
    // https://proposals.decred.org/proposals/60adb9c0946482492889e85e9bce05c309665b3438dd85cb1a837df31fbf57fb
    proposalToken := "60adb9c0946482492889e85e9bce05c309665b3438dd85cb1a837df31fbf57fb"

    // ProposalHistory returns votes data only associated with the set proposal token.
    data, err := parser.ProposalHistory(proposalToken)
	if err != nil {
		log.Fatalf("unexpected error occured: %v", err)
    }

    ...
```

## Fetch new updates via a signal channel
- The one hour interval at which the update signal is sent starts to count immediately
after the `proposals.NewParser(repoOwner, repoName, cloneDir)` is invoked.

```go
    // Updates trigger signal is sent hourly after which retrieval of the newly
    // fetched updates can commence.
    proposalUpdatesSignal := parser.UpdateSignal()
    for range  proposalUpdatesSignal{
        // set the since time value
        since, err := time.Parse(time.RFC3339,"2019-03-05T00:59:18Z")
        if err != nil {
            log.Fatalf("unexpected error occured: %v", err)
        }

        // Fetch the proposal updates since 2019-03-05T00:59:18Z.
        data, err = parser.ProposalHistorySince(proposalToken, since)
        if err != nil {
            log.Fatalf("unexpected error occured: %v", err)
        }
    }
```

## Full Sample Program

```go
    package main

    import (
        "log"

        "github.com/dmigwi/go-piparser/proposals"
    )

    func main() {
        cloneDir := "/path/to/root/clone/directory"

         // Set the Proposal token
        proposalToken := "60adb9c0946482492889e85e9bce05c309665b3438dd85cb1a837df31fbf57fb"

        // Create a new Parser instance
        parser, err := proposals.NewParser("", "", cloneDir)
        if err != nil {
            log.Fatalf("unexpected error occured: %v", err)
        }

        // Retrieve the proposal token's votes data.
        data, err := parser.ProposalHistory(proposalToken)
        if err != nil {
            log.Fatalf("unexpected error occured: %v", err)
        }

        ...

        // Retrieve proposal updates after they happen.
        proposalUpdatesSignal := parser.UpdateSignal()
        for range  proposalUpdatesSignal{
            // set the since time value
            since, err := time.Parse(time.RFC3339,"2019-03-05T00:59:18Z")
            if err != nil {
                log.Fatalf("unexpected error occured: %v", err)
            }

            // Fetch the proposal updates since 2019-03-05T00:59:18Z.
            data, err = parser.ProposalHistorySince(proposalToken, since)
            if err != nil {
                log.Fatalf("unexpected error occured: %v", err)
            }

            ...
        }
    }

```

## Test Client

Find a complete test go-piparser implementation [here](https://github.com/dmigwi/go-piparser/tree/master/testutil)

license: ISC

repository: dmigwi/go-piparser

gha_license_id: ISC

repo_name: dmigwi/go-piparser


text:
# Kepware Configuration API SDK for Python

[![PyPI version](https://badge.fury.io/py/kepconfig.svg)](https://badge.fury.io/py/kepconfig)

This is a package SDK to create Python modules to conduct operations with the Kepware Configuration API. This package is designed to work with all versions of Kepware that support the Configuration API including Thingworx Kepware Server (TKS), Thingworx Kepware Edge (TKE) and KEPServerEX (KEP).

## Prerequisites

The client libraries are supported on Python 3.6 or later. All HTTP communication is handled by the [urllib](https://docs.python.org/3.6/library/urllib.html#module-urllib) Python standard library.

## Features

- Supports both HTTP and HTTPS connections with certificate validation options

SDK allows for *GET*, *ADD*, *DELETE*, and *MODIFY* functions for the following Kepware configuration objects:

| Features      | TKS/KEP       | TKE           |
| :----------:  | :----------:  | :----------:  |
| **Project Properties**
 *(Get and Modify Only)* | Y | Y |
| **Connectivity**
 *(Channel, Devices, Tags, Tag Groups)* | Y | Y |
| **IoT Gateway**
 *(Agents, IoT Items)* | Y | Y |
| **Datalogger**
 *(Log Groups, Items, Mapping, Triggers, Reset Mapping Service)* | Y | Y |
| **Administration**
 *(User Groups, Users, UA Endpoints)* | Y* | Y |

Note (*) - UA Endpoints supported for Kepware Edge only

Driver specific features:

| Driver          | Features       |
| :----------:  | :----------:  |
|GE Ethernet Global Data|Exchanges, Ranges and Name Resolutions|

Methods to read the following logs:

| Logs          | TKS/KEP       | TKE           |
| :----------:  | :----------:  | :----------:  |
| **Event Log** | Y | Y |
| **API Transaction Log** | Y | Y |

Configuration API *Services* implemented:

| Services      | TKS/KEP       | TKE           |
| :----------:  | :----------:  | :----------:  |
| **TagGeneration**
 *(for supported drivers)* | Y | Y |
| **ReinitializeRuntime** | Y* | Y |

Note (*) - Reinitialize service was implemented for Kepware Server v6.8+

Generic REST methods are provided to use for functions not developed in SDK package. These are found in the Server Class in [connection.py](/kepconfig/connection.py)

## Known Limitations

- Other property configuration for more complex drivers with objects besides channels, devices, tags and tag groups are not explicitly defined
- Other supported plug-ins (EFM Exporter, Scheduler, etc) are not defined
- When using hostnames (not IP addresses) for connections, delays may occur under certain network configurations as the connection may attempt IPv6 connections first. IPv6 is not supported by Kepware servers at this time.

## Installation

Package can be installed with `pip` using the following:

```cmd
    pip install kepconfig
```

## Key Concepts

NOTE: Samples can also be found in the [samples](samples) folder.

### Create server connection

```python
import kepconfig.connection

server = connection.server(host = '<IP_ADDRESS>', port = 57412, user = 'Administrator', pw = '')

# For HTTPS connections:
server = connection.server(host = '<IP_ADDRESS>', port = 57412, user = 'Administrator', pw = '', https=True)

```

For certificate validation, the SDK uses the OS/systems trusted CA certificate store. The connection uses the "create_default_context()" function as part of urllib as described at the following links:

- [ssl.create_default_context](https://docs.python.org/3/library/ssl.html#ssl.create_default_context)
- [ssl.SSLContext.load_default_certs](https://docs.python.org/3/library/ssl.html#ssl.SSLContext.load_default_certs)
- [set_default_verify_paths](https://docs.python.org/3/library/ssl.html#ssl.SSLContext.set_default_verify_paths)

For Windows OSes, the Kepware server's instance certificate can be loaded into the hosts "Trusted Root Certificate Authorities" store.

### Create an object

Objects such as channels or devices can be created either singularly or with children included.

### Ex: Add Single channel

```python
from kepconfig.connectivity import channel

channel_data = {"common.ALLTYPES_NAME": "Channel1","servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator"}
result = channel.add_channel(server,channel_data)
```

### Ex: Add Multiple tags

```python
from kepconfig.connectivity import tag

tag_info = [
    {
            "common.ALLTYPES_NAME": "Temp",
            "servermain.TAG_ADDRESS": "R0"
    },
    {
            "common.ALLTYPES_NAME": "Temp2",
            "servermain.TAG_ADDRESS": "R1"
    }
]
tag_path = '{}.{}.{}'.format(ch_name, dev_name, tag_group_path)
result = tag.add_tag(server, tag_path, tag_info))

```

## Need More Information

**Visit:**

- [Kepware.com](https://www.kepware.com/)
- [Configuration API Info](https://www.kepware.com/en-us/products/kepserverex/features/configuration-api/)
- [PTC.com](https://www.ptc.com/)


text:
## IoX runtime

The Internet of everything interconnection runtime (IoX) is a .NET based cross platform message processing system based on HTTP
and JSON to define a multivendor runtime for IoT. Vendors can develop modules quickly while the runtime ensure some degree of
isolation and filtering on the messages to enforce privacy and security.

IoX has been developed with F# and the Suave Web server library. It is very lightweight and has been validated on Linux, Windows,
and also on the Dell Networking OS 10 running on the control plane of a Dell Networking switch S6000-ON and controlling it using
the CPS interface.

We implemented a fingerprint-based door lock system with two nodes partecipating in the process.

## Status

This is the very first version of the runtime. We will soon post instructions to build and run the hello world module example.
There are several missing features that we are adding (authentication, filtering, utilities, etc.)

Join us in trying to define an open source lightweight runtime for the future of IoT.

# Build and run
If you use Visual Studio simply build the main solution and the Hello World module example.
You should get in bin/$(Configuration)/ all the files including IoX.exe which is the program.

When you start it simply browse to http://localhost:8080, access the menu and select "manage modules".
Load the hello world module and then access with your browser

    http://localhost:8080/hw/helo
    http://localhost:8080/hw/chat?msg=YourName
    ...
    http://localhost:8080/hw/chat?msg=As+many+as+you+want
    http://localhost:8080/hw/bye

try to access helo URL while chatting, it will be ignored.
Hope you like it and will to contribute!

repository: yukibonji/IoX

repo_name: yukibonji/IoX


text:
{{{
  "title": "Partner Cloud Integration: Deleting Azure Customer Accounts",
  "date": "06-29-2018",
  "author": "Kevin Quaintance",
  "attachments": [],
  "contentIsHTML": false
}}}

### Overview

Partner Cloud Integration allows an Cloud Application Manager user to create Microsoft Azure Customer Accounts or transfer an existing one into Lumen's care. If you want to stop usage and completely shut down that Azure Customer Account, you must do more than delete the provider in Cloud Application Manager. You will also need to tell Lumen to turn off the actual Azure account via a Lumen support ticket and Lumen will assist to make sure the account is removed properly.  Not following this process could cause unexpected billing charges to continue.

### Audience

All Cloud Application Manager Customers with ARM Providers supported by Lumen

### Prerequisites

You will need to have followed optimized a Microsoft Azure customer account at some point already.

You will need to delete the associated Azure provider at some point, before or after submitting the request described below.

If you are moving to another CSP partner, please review the article from [Microsoft](https://docs.microsoft.com/en-us/azure/cloud-solution-provider/customer-management/switch-subscription-to-different-csp-partner) and complete the form as much as you are able. Depending on which country you are located, some of the information from CenturLink will vary.

### Important Information

Submit a support request to remove your Azure Customer Account. To submit a support request, you may do so via the following methods:

* Call at the following numbers:
    * United States: 1-888-638-6771 (This is a US domestic toll free number)
    * Canada: 1-866-296-5335
    * EMEA: 00800 72884743
    * Asia Pacific: +65 6768 8099
* Email<EMAIL_ADDRESS>* Submit a support request via the Managed Services Portal. https://managedsupport.ctl.io

Please provide the following information for the delete:

* Your first and last name (must be a user registered with Lumen for the account)
* Your company's name
* Your request to delete your Azure Customer account and your reason for the request.
* If you are not transferring to a new CSP and expect to pay Microsoft directly, you will be required to transfer resources to new Subscriptions. After you create one new subscription outside the CSP for each that is inside the CSP, please provide a mapping of how you want the resources to transfer.
* If you are not transferring to a new CSP and expect to pay Microsoft directly, please provide contact information for whomever your Lumen TAM should work with to ensure that all the resources have migrated.
* If you are transferring to a new CSP, request that Lumen provide the following information so that you can complete the form.

CSP Partner name
CSP Microsoft ID
Country/Region
Address Line 1
Address Line 2
City
State/Province
Zip/Postal code
Email address
Contact name (last and first name)
Phon
Fax

repository: AnthonyHakim/PublicKB

path: /Cloud Application Manager/Cloud Optimization/partner-cloud-integration-azure-deleteCustomerAccount.md

gha_license_id: NOASSERTION

repo_name: AnthonyHakim/PublicKB


text:
## Supported Formats

The information below is based of dfWinReg version 20200415

### Windows Registry file types

* REGF (Requires: [libregf/pyregf](https://github.com/libyal/libregf))

gha_language: Python


text:
# Alchemist

Release: 0.3.1b (Beta Release 3 with Documentation)

A pure-Ruby DSL for use in casting, transforming or translating data and objects.

### Current Status

This library has basic functionality, though it is in a beta state. This means that the API for examining operations in tests as well as the DSL is subject to change and expansion as we continue to implement the feature set.

## Rationale

Casting complex objects from one type to another can be an uncomfortable process to express well. Objects that we use on a daily basis are not always in our control, and, even when they are, some don't lend themselves to simple construction. Remote service communication objects or complex data structures from libraries we use in our applications can result in large piles of casting code.

This circumstance often produces large swaths of procedural code, even if split up into separate function calls. This code can be not only difficult to understand, but difficult to test if an object requires a great deal of set up. Field or method assignments midway through can change and break the entire operation.

The goal of this project is to provide a method of defining easily digestible specifications for object translation that are also easily testable and changeable. **The project focuses on writing specifications for transformations and not doing direct mutation in the recipes.** The result is something that should seem somewhat functional, but also exceedingly separable.

## Basic Usage

Alchemist "transmutes" objects from one type to another using recipes that describe all of the separate operations needed to communicate the data from start to finish. The simplest example of a recipe would be transferring a single field between two different classes.

### Simple Example

````ruby
class User
  attr_accessor :name
end

class Admin
  attr_accessor :full_name
end

Alchemist::RecipeBook.write User, Admin do
  result do
    Admin.new
  end

  transfer :name, :full_name

end

user = User.new
user.name = "Shannon"

admin = Alchemist.transmute(user, Admin)
admin.full_name # => "Shannon"
````

There are two major components to this:

* The Recipe definition from the Alchemist::RecipeBook.write call
* The invocation of the recipe by Alchemist.transmute

Alchemist will automatically detect what class your object is an instance of and attempts to match it to an appropriate recipe for transmuting. There are currently five primary DSL functions available inside of a recipe as well as optional traits that can be applied the a given transmutation if you so desire them.

### Rituals (DSL Operations)

#### Result

**This method will be subject to change soon. The desire behavior is of a .new call on the result class by default if no block is specified, as well as a better syntax for creating the instance without direct access to the source object's pointer.**

The result ritual is what provides your recipe with the object you are going to be transmuting *into*. This could be as simple a creating a new instance of the object or performing a database query via your favorite ORM. Below is an example of fetching a result by ActiveRecord query.

````ruby
Alchemist::RecipeBook.write User, Admin do

  result do |source|
    Admin.where(full_name: nil).first
  end

end
````

#### Guard

The guard ritual is a form of validation for your source object. You can use guards to ensure that your source is sane before Alchemist will begin performing destructive operations on your result. Each guard operation will give you access to the value of a method on your source with which you can create a boolean expression. If the result of your block is not truthy, then the guard will fail and raise an exception. (Exceptions are detailed further down the README.)

````ruby
Alchemist::RecipeBook.write User, Admin do

  result do |source|
    Admin.new
  end

  guard :name do
    name != "Bob Smith"
  end

end
````

#### Transfer

The transfer ritual is the most basic form of conveying data. It takes the value of a given method on your source objects and passes it to a method or field assignment on your result object with optional translation. It has an optional second field argument and optional block to mutate the data in-route to the result.

````ruby
Alchemist::RecipeBook.write User, Admin do

  result do |source|
    Admin.new
  end

  transfer :name

  transfer :name, :full_name

  transfer :name do |user_name|
    user_name.strip
  end

  transfer :name, :full_name do |user_name|
    user_name.strip
  end

end
````

* When called with a single field, the operation assumes the method has the same name on both source and result
* When called with two, the operation calls the first on the source and passes it to the second on the result
* If a block is given in any case, the block will be used to get the final value passed to the result
* Transfer is smart enough to know if your object is Hash-like so syntax does not change for transfering to and from fields on a hash.

#### Aggregate Onto

The aggregation ritual is an N to 1 translation from methods on the source object to a single method on the result. The field list is defined using the `from` function. The accompanying `with` call accepts a block that has the method values available as locals of the same name and, like translate, will assign the result of the block to the field defined in the initial `aggregate_onto` call.

````ruby
Alchemist::RecipeBook.write User, Admin do

  result do |source|
    Admin.new
  end

  aggregate_onto :full_name do

    from :first_name, :last_name

    with do
      "#{first_name} #{last_name}"
    end

  end

end
````

#### Distribute From

The distribution ritual is the inverse of aggregate: 1 to N. The distribute_from makes the value of the given method on the source available in each target block as a local. Each field stipulated on a given `target` call will receive the results of the block.

````ruby
Alchemist::RecipeBook.write Admin, User do

  result do |source|
    Admin.new
  end

  distribute_from :full_name do

    target :first_name do
      full_name.split(' ').first
    end

    target :last_name, :maiden_name do
      full_name.split(' ')
    end

  end

end
````

#### Traits

Traits can be given to recipes to stipulate special behavior. Recipes with traits will override any operations on the base, un-traited recipe if one is defined. Using this, you can apply traits to all recipes, or have common functionality in the un-traited recipe and any special instructions that differ from the common-case in the traited recipe.

Traited recipes will only override or add functionality. All operations defined on an un-traited recipes that are not replaced will be executed as well.

````ruby
Alchemist::RecipeBook.write User, Admin do

  result do |source|
    Admin.new
  end

  transfer :name, :full_name

end

Alchemist::RecipeBook.write User, Admin, :from_database do

  result do |source|
    Admin.where(full_name: nil).first
  end

end

user = User.new
user.name = "Shannon"

# Invoke the "common" recipe

admin = Alchemist.transmute(user, Admin)
admin.full_name # => "Shannon"

# Invoke the recipe with the alternate result call

admin = Alchemist.transmute(user, Admin, :from_database)
admin.full_name # => "Shannon"
````

## Testing Recipes

Recipes can currently be tested with two primary methods: full execution or specific operation.

### Full Execution

This method is executing the entire recipe on a fully realized instance of your source and asserting about the qualities of the result. It requires the most cumbersome set up, but allows you to ensure the entire scope of what you're doing is valid.

#### Recipe Example

````ruby
Alchemist::RecipeBook.write SomeClass, SomeOtherclass do

  result do |source|
    SomeOtherClass.new
  end

  transfer :some_field do |some_field_value|
    some_field_value.to_i
  end

end
````

#### RSpec Example

````ruby
require 'spec_helper'

describe 'SomeClass to SomeOtherClass recipe' do

  let(:source) { SomeClass.new }
  let(:result) { Alchemist.transmute(source, SomeOtherClass) }

  let(:expected_some_field) { "expected value" }

  subject { result }

  its(:some_field) { should eq(expected_some_field) }

end
````

### Testing Specific Operations

**This method does not yet have a fully formed API, but it does, at least, have a functional one. This bit of functionality is subject to change very soon (or at least being superseded by something easier to use).**

There are methods for each DSL operation provided on an instance of a recipe. These methods can be used to locate a specific operation and execute it such that you may then test the results of its operation in isolation from the rest of the recipe.

#### Recipe Example

````ruby
Alchemist::RecipeBook.write SomeClass, SomeOtherClass do

  result do |source|
    SomeOtherClass.new
  end

  guard :field1 do |field1_value|
    field1_value < 10
  end

  transfer :field1
  transfer :field2, :field_two

  aggregate_onto :aggregate_field do
    from :field1, :field2

    with do
      field1 + field2
    end
  end

  distribute_from :array_field do
    target :element_one { array_field[0] }
    target :element_two { array_field[1] }
  end

end

Alchemist::RecipeBook.write SomeClass, SomeOtherClass, :some_trait do

  result do |source|
    SomeOtherClass.new(optional_attribute: true)
  end

end
````

#### RSpec Example

````ruby
require 'spec_helper'

let(:source) { SomeClass.new }

describe 'SomeClass to SomeOtherClass' do

  let(:recipe) { Alchemist::RecipeBook.lookup(SomeClass, SomeOtherClass, :some_trait) }

  let(:context) { Alchemist::Context.new(source, result) }
  let(:result)  { operation.call(context) }

  describe 'guard for field1' do

    let(:operation) { recipe.guard_for(:field1) }

    it 'fails if field1 is greater than 10' do
      expect { result }.to raise_error(Alchemist::Errors::GuardFailure)
    end

  end

  describe 'transfer for field1' do

    let(:operation) { recipe.transfer_for(:field1) }

    it 'populates field1' do
      expect(result.field1).to eq(source.field1)
    end

  end

  describe 'transfer for field2 to field_two' do

    let(:operation) { recipe.transfer_for(:field2, :field_two) }

    it 'populates field_two' do
      expect(result.field_two).to eq(source.field2)
    end

  end

  describe 'aggregation for aggregate_field' do

    let(:operation) { recipe.guard_for(:field1) }

    let(:expected_value) { source.field1 + source.field2 }

    it 'populates aggregate_field' do
      expect(result.aggregate_field).to eq(expected_value)
    end

  end

  describe 'distribution for array_field' do

    let(:operation) { recipe.guard_for(:field1) }

    it 'populates element_one' do
      expect(result.element_one).to eq(source.array_field[0])
    end

    it 'populates element_two' do
      expect(result.element_two).to eq(source.array_field[1])
    end

  end

end

describe 'SomeClass to SomeOtherClass with :some_trait' do

  let(:recipe) { Alchemist::RecipeBook.lookup(SomeClass, SomeOtherClass, :some_trait) }

  describe 'result ritual' do

    let(:operation) { recipe.result_ritual }
    let(:result)    { operation.call(source) }

    it 'returns an instance of SomeOtherClass with optional_attribute set to true' do
      expect(result.optional_attribute).to be_true
    end

  end

end
````

## Errors

#### Alchemist::Errors::GuardFailure

This is the exception raise in the event a guard call fails on a recipe.

#### Alchemist::Errors::InvalidSourceMethod

This exception is raised when a method is defined for any ritual, and that method does not exist in the public API of the source object.

#### Alchemist::Errors::InvalidResultMethod

This exception is raised when a method is defined for any ritual, and that method does not exist in the public API of the result object.

#### Alchemist::Errors::InvalidTransmutationMethod

This is raised when the parameters given to Alchemist.transmute or Alchemist::RecipeBook.lookup cannot produce a valid recipe from the definitions required into ruby.

#### Alchemist::Errors::NoTargetReceived

This is not currently used, but will be implemented as part of no valid result instance being produced.

#### Alchemist::Errors::TransmutationError

This is the base exception type that will never be raised directly. If you ever have need to catch exceptions from normal use of this library, this is what you should rescue.

## Rails Integration

Rails integration does not yet exist at this time. Recipes will need to be required manually through whatever method you desire. A Railtie file, as well as lazy-loading conventions for recipes, is on the requirement list for the 1.0 release.

## Authors

* [James Christie](https://github.com/jameschristie)
* [Alex Williams](https://github.com/robovirtuoso)

## License

Copyright (C) 2013 Acumen Brands, Inc.

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

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

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

repository: DOOM-SQUAD/alchemist

repo_name: DOOM-SQUAD/alchemist


text:
# Jupiter Scripts

The main task run on Jupiter is scraping the wiki.

Main driver:

* `push_wiki.py` - This is the main entrypoint. This script will
  first scrape pages for links and edits and populate
  that information in MongoDB. It will then compile a CSV file
  for data visualization and commit that to the data repo at
  <https://git.charlesreid1.com/data/charlesreid1-data>

Main functions:

* `wiki_history.py` - Create a database containing page history
  data for the charlesreid1.com wiki

* `wiki_graph.py` - Create a graph database with link data
  for the charlesreid1.com wiki

MediaWiki:

* `user-config.py` - configuration for pywikibot

* (notes on [family file](https://www.mediawiki.org/wiki/Manual:Pywikibot/Use_on_third-party_wikis))

Graphs:

* `graph.py` - Graph object, useful for dealing with page graphs.

* `mongo_graph.py` - extended Graph object that has additional
  methods for serializing the graph into something that can be
  stored in a MongoDB database table.

* `graph_algorithms.py` - Graph algorithms useful for analyzing the
  wiki page graph.


text:
# docs

## doc site

Formatted doc is [here](http://appium.io/documentation.html?lang=en).

## doc translation

At the moment we are focusing on improving the english documentation. When it
is done we are planning to setup proper i18n l10n processes so that it is
easier for people to help in translating the documentation.

## Bump supported NodeJS version

- Refer to https://nodejs.org/en/download/releases/ if current supported version is EOL
- Example to bump supported NodeJS version: https://github.com/appium/appium/pull/15000

repository: anjinwoong/appium

gha_language: JavaScript

repo_name: anjinwoong/appium


text:
---
layout: kanji
v4: 248
v6: 263
kanji: 先
keyword: before
elements: before, cow, human legs
strokes: 6
image: E58588
on-yomi: セン
kun-yomi: さき、ま.ず
permalink: /rtk/先/
prev: 告
next: 洗
---

1) [gaijinda] 20-10-2007(232): I've never seen a cow with human legs before!

2) [romanrozhok] 9-6-2008(158): Nasty story but it keeps the meaning true to the kanji. "BEFORE you stick it in a COW and SPREAD the legs (the bottom stroke of this cow looks like two legs) make sure she has HUMAN LEGS"-------------sorry, I'll remove if I get enough reports, but will keep if I get more stars.

3) [LorenPaul] 28-7-2009(67): Before Human Beings Existed.. Minotaurs Ruled The Earth! Their Top Half A Cow And Their Bottom Half Human Legs! Also: Using Minotaur as a primitive can make stories a doddle!

4) [dwhitman] 8-12-2007(65): I've never seen a cow with human legs before! (from gaijinda) I keep mixing this up with in front (#290 前). Remember that before sounds like "beef or", so it must be the one with the cow in it.

5) [Katsuo] 7-12-2007(30): Note: If you are confusing "before" 先 with "in front" 前 , then note that "before" sounds like "beef or", so that must be the one with the cow in it.


text:
# Open in External Browser

This project contains a Visual Studio extension (2010-2013) which alters the behavior of
Ctrl+Click in the editor to launch an external web browser instead of using the default
in-process browser.

repository: sam-artup/OpenInExternalBrowser

repo_name: sam-artup/OpenInExternalBrowser


text:
# KoboCloud
A set of scripts to synchronize a kobo reader with popular cloud services. At the moment Owncloud and Dropbox are supported

## Installation
Run the script `make-KoboRoot`. This will create a KoboRoot.tgz archive. Copy said archive in the `.kobo` directory of your reader (it is a hidden directory, so you might want to enable the visualization of hidden files) and restart your Kobo.

## Configuration
After restarting, plug your kobo back into the computer. Navigate to the .add directory. A new kobocloud directory should have appeared. Inside, edit the file kobocloudrc to add the links to the cloud services (one per line).
Notice: No subdirectories are supported at the moment, so be sure that your books are all in the same directories that you are sharing. **Important:** make sure that there are no spaces before or after the link on the line.

### Nextcloud (Owncloud)
To add a nextcloud (owncloud) link, open your nextcloud website in a browser and select the folder that you want to share. Click on "Share" and select "Share with link". Copy the link into the kobocloudrc file.
Please note that you need a recent Nextcloud version. Owncloud is at the moment not tested, but should also work.

### Dropbox
To add a Dropbox link, open your dropbox in a browser. Select the folder that you want to share and click "Share" and "Send link". Copy the link that appears into the kobocloudrc file.

### pCloud
Files added into a subfolder of the *public* folder of pCloud are also supported. Add the public link to the containing folder (starting with https://filedn.com/) to the kobocloudrc file.

### Google Drive
Google Drive is supported. Use the "link sharing" option on a Google Drive folder and select the option "anyone with the link can view." Copy-paste the link in the kobocloudrc file. *Note:* Folders with many files might not work.

### Restart
Restart your Kobo after making changes to kobocloudrc to make them effective.

## Usage
The new files will be downloaded when the kobo connects to the Internet for a sync.

## Uninstallation
To properly uninstall KoboCloud, edit the kobocloudrc file so that it contains the word `UNINSTALL` in a single line (all capital, no spaces before or after). Restart your Kobo. The next time the Kobo is connected to the Internet, the program will delete itself.
The directory .add/kobocloud will not be deleted: after connecting the ereader to a computer, you should move the files from the Library subfolder in order not to lose your content, and delete the whole kobocloud directory manually.

## Troubleshooting
KoboCloud keeps a log of each session in the .add/kobocloud/get.log file. If something goes wrong, useful information can be found there. Please send a copy of this file with every bug report.

## Known issues
* No subdirectories are supported
* Some versions of Kobo make the same book appear twice in the library. This is because it scans the internal directory where the files are saved as well as the "official" folders. To solve this problem find the `Kobo eReader.conf` file inside your `.kobo` folder and make sure the following line (which prevents the syncing of dotfiles and dotfolders) is set in the `[FeatureSettings]` section:
```
  ExcludeSyncFolders=\\.(?!kobo|adobe).*?
```

## Acknowledgment
Thanks to the defunct SendToKobo service for the inspiration of the project and for the basis of the scripts.
Curl for Kobo was downloaded from here: https://www.mobileread.com/forums/showthread.php?p=3734553 . Thanks to NiLuJe for providing it!
Thanks to Christoph Burschka for the help in updating this tool to the recent versions of kobo and nextcloud.

repository: felix-egli/KoboCloud

gha_language: Shell

repo_name: felix-egli/KoboCloud


text:
# Whispers

Smooch allows you to reach out to your users at scale so that you can start conversations with them about anything that matters to your app, even if they aren't in need of service or support. We call this feature "Whispers" and it allows you to automatically send a message to a targeted group of users at exactly the right time.

To help get you started, we've built in 5 basic templates and also allow you to create your own using any custom metadata that you're capturing with the `Smooch User` API.

 * _Welcome Whisper_ : Welcome new users to your app by starting a conversation where you can answer pressing questions and get initial feedback.

 * _Re-Engage Users_ : Send a message to users who were last seen using the app at least 7 days ago.

 * _Announcement_ : Send a message to all users when they launch the app.

 * _Ask for app rating_ : Send a message to all users who have signed up at least 5 days ago, prompting them to rate your app in the app store.

 * _Auto-response_ : Inform users of when to expect an answer, when they send their first message.

 You can start from any of these templates and customize it to meet your needs. You can also create a custom Whisper from scratch and go beyond these templates. You can use Whispers to ask for reviews from your most engaged users at the right time, you can notify users of older versions of your app about new versions, and more.

<aside class="notice">To prevent conflicts, when an [Office Hours](#office-hours) message is sent the `Auto-response` whisper will not trigger.</aside>

## How Whispers work

You create Whispers from within the [Smooch dashboard](https://app.smooch.io) by specifying which users should receive your message, the message you'd like to send to your users and the event that should trigger delivery of this message. For example, to create a Whisper that would check in to see how users are doing 2 days after installing an app, you'd create a custom Whisper with these settings:

![Whisper creation form](/images/create_whisper.png)

### Targeting a group of users

You can target your users based on any information that you've stored using the `Smooch User` API. We also provide several built-in properties that you can use without instrumenting your app with calls to `Smooch User` class.

 * _All users_ : Send the Whisper to *everyone* that has your app. Whispers that target everyone must be [linked to an event](#when-are-whispers-sent).

 * _Signed Up_ : Send the message before/after a specified number of days. For example, you can use this to send a message to all users who've been using your app for less than a day or more than a week. See [here](#setting-the-signed-up-date) for more information.

 * _Last Seen_ : Send the message based on when the user last interacted with your app. This value is updated automatically each time a user launches your app.

 * _App Version_ : Send the message to users who are using (or not using) a specific version of your app. The value for this property is taken from the CFBundleShortVersionString key in your app's info.plist file, and is updated each time the user launches your app.

In order to create Whispers based on properties you've defined using the `Smooch User` class, you'll need to run your app and ensure that at least 1 of your users was tagged with the property you want to base your Whisper on. Alternatively, you can make a HTTP request to the `PUT /appusers` route of the [Smooch REST API](/rest). For more information on using custom properties, read our [documentation on the subject](#user-data).

It's possible to add multiple conditions to a Whisper, allowing you to filter out users based on their properties. In the example below, you can see a Whisper that will be sent only if the platform of the user is iOS and if the user has signed up less than 7 days ago:

![Whisper with conditions](/images/whisper_conditions.png)

### Personalizing the message text

You can personalize the message that's being sent with the first or last name of the user. To do this, simply use the syntax `{{ firstName || fallback }}` when creating your message. If the user's firstName hasn't been set by your code through the `Smooch User` class then the placeholder will be replaced with the string specified as `fallback`.

repository: heatheratsmooch/smooch-docs

branch_name: refs/heads/integration

repo_name: heatheratsmooch/smooch-docs


text:
# RomajiTable

> RomajiTable - This is a util to convert english or maybe translited word to kana (Hiragana, Katakana)
> Lib for Python 3+

## Installing

```bash
pip install romajitable
```

Update

```bash
pip install --upgrade romajitable
```

## Example

```python
import romajitable

word = "My name is Mikhail"
result = romajitable.to_kana(word)

hiraganed = result.hiragana
# むゆ・なめ・いす・みくはいる

katakaned = result.katakana
# ムユ・ナメ・イス・ミクハイル

```

repository: KotRikD/romajitable

repo_name: KotRikD/romajitable


text:
# Access to electricity and basic health needs and how they affect the neonatal mortality rate in rural Sub-Saharan Africa

### Description

According to UNICEF, progress in reducing neonatal mortality in the world has been slower than for other children. Thus,
the first 28 days of life are the most vulnerable time for a child's survival.
The following visualization explores how energy and access to basic needs have affected this phenomenon in the context of rural Africa.
In order to do so, the following variables where taken into consideration:

1. Access to electricity
2. Access to clean fuels and technologies for cooking
3. Access to improved water sources
4. Access to sanitation facilities

The main component of the visualization consists of a dashboard that gets updated with the corresponding information
of the points mentioned above. The user has the opportunity to compare the data from 2010 and 2015 in order to evaluate
the performance of a specific country.

### Visualization
[link](https://alonsoag86.github.io/mstudio1/un_project/)

### Sketch

![Sketch](sketch.jpg)

### Sources

1. [World Bank](http://www.worldbank.org/en/topic/energy/publication/Global-Tracking-Framework-Report)
2. [Our World in Data - Oxford University](https://ourworldindata.org/about)
3. [UNICEF](https://data.unicef.org/children-sustainable-development-goals/)

### Acknowledgements

The following project was made possible thanks to the ongoing partnership between the [UNDP Regional
Bureau for Africa](http://www.africa.undp.org/content/rba/en/home.html) and the MS Data Visualization Program at
[Parsons School of Design](https://www.newschool.edu/parsons/ms-data-visualization/).


text:
---
## The title of your page
title: "RStan installation on a Windows 10/11 or a WURclient computer"
## An optional subtitle that will be displayed under the title
subtitle: ''

## A one-sentence summary of the content on your page.
##   The summary can be shown on the homepage and can also benefit your search
##   engine ranking.
summary: 'Instructions on how to install RStan on Windows 10/11.'

## Add the short URL slug containing keywords
slug: rstan-installation

## Display the authors of the page and link to their user profiles if they exist.
authors:
  - admin

## Tagging your content helps users to discover similar content on your site.
##   Tags can improve search relevancy and are displayed after the page content
##   and also in the Tag Cloud widget.
tags:
  - Installation
  - R
  - RStan
  - Windows 10
  - Windows 11
  - WURclient

##   Categories can improve search relevancy and display at the top of a page
##   alongside a page’s metadata.
categories:
  - R
  - RStan
  - Windows 10
  - Windows 11
  - WURclient
  - WUR

## The RFC 3339 date that the page was published.
date: '2023-08-27T16:19:00+0200'
##   Dates can now be hidden from pages by adding show_date: false in page front
##   matter or by automatically applying it to all pages in a collection using
##   Hugo's cascade:>show_date: false in the _index.md file.
show_date: true

## The RFC 3339 date that the page was published.
##   You only need to specify this option if you wish to set date  in the future
##   but publish the page now, as is the case for publishing a journal article
##   that is to appear in a journal, etc.
# publishDate: '2023-08-27T16:19:00+0200'

## The RFC 3339 date that the page was last modified.
##   If using Git, enable enableGitInfo in `config.yaml` to have  the page
##   modification date automatically updated, rather than manually specifying
##   lastmod.
lastmod: '2023-08-27T16:19:00+0200'

## By setting `featured: true`, a page can be displayed in the Featured widget.
##   This is useful for sticky, announcement blog posts or selected publications,
##   etc.
featured: false

## By setting `draft: true`, only you will see your page  when you preview your
## site locally on your computer.
draft: false

## Featured image
##   To use, add an image named `featured.jpg/png` to your page's folder.
##   Placement options: 1 = Full column width, 2 = Out-set, 3 = Screen-width
##   Focal point options: Smart, Center, TopLeft, Top, TopRight, Left, Right,
##   BottomLeft, Bottom, BottomRight
image:
  caption: 'Image credit: [**_Panos Sakalakis_ on Unsplash**](https://unsplash.com/photos/AwDVMJKMjlU)'
  focal_point: 'Center'
  # placement: 2
  preview_only: false
  # alt_text: An optional description of the image for screen readers.

## Projects
##   Associate this post with one or more of your projects.
##   Simply enter your project's folder or file name without extension.
##   E.g. `projects = ["internal-project"]` references
##   `content/project/internal-project/index.md`.
##   Otherwise, set `projects = []`.
projects: []

## Page resources
##   Buttons can be generated in the page header to link to associated resources.
##   The example below shows how to create a Twitter link for a project and
##   how to create a link to a post that was originally published on Medium:
# links:
#   - icon: twitter
#     icon_pack: fab
#     name: Follow
#     url: 'https://twitter.com/Herb_hewang'
#   - icon_pack: fab
#     icon: medium
#     name: Originally published on Medium
#     url: 'https://medium.com'   # (required)

## The following parameters can be added to the front matter of
##   a page (such as a blog post) to control its features:
##
## Show estimated reading time?
reading_time: true
## Show social sharing links?
share: true
## Show author profile?
profile: true
## Allow visitors to comment?
## Supported by the Page, Post, and Docs content types.
commentable: false
## Allow visitors to edit the page?
## Supported by the Page, Post, and Docs content types.
editable: false

## To enable LaTeX math rendering for a page, you should include `math: true` in
## the page’s front matter.
##   Not necessary if globally enabled `math.enable: true` in
##   `config/_default/params.yaml`
math: true

## Enable a Markdown extension for diagrams by toggling the diagram
##   option in your `config/_default/params.toml` file or by adding
##   `diagram: true` to your page front matter.
diagram: true
---

{{% toc %}}

## Motivation
Whether working or studying everybody uses various sorts and types of software on their computer. Students taking [Statistical Courses, as taught by the Mathematical and Statistical Methods group at Wageningen University & Research](https://www.wur.nl/en/Research-Results/Research-Institutes/plant-research/biometris/Education/BSc-and-Master-Courses.htm), will most likely use R. Students enrolled in [MAT34806 Bayesian Data Analysis](https://wur.osiris-student.nl/#/onderwijscatalogus/extern/cursus?cursuscode=MAT34806&collegejaar=huidig) will use RStan as well as basic R. Therefore, they will need to install RStan.

RStan is an implementation of [Stan](https://mc-stan.org/) in [R](https://www.r-project.org/). Stan is a state-of-the-art platform for statistical modeling and high-performance statistical computation. Thousands of users rely on Stan for statistical modeling, data analysis, and prediction in the social, biological, and physical sciences, engineering, and business.

Users specify log density functions in Stan’s probabilistic programming language and get:

- full Bayesian statistical inference with MCMC sampling (NUTS, HMC)

- approximate Bayesian inference with variational inference (ADVI)

- penalized maximum likelihood estimation with optimization (L-BFGS)

Stan’s math library provides differentiable probability functions & linear algebra (C++ autodiff). Additional R packages provide expression-based linear modeling, posterior visualization, and leave-one-out cross-validation.

{{% callout note %}}
This post will show how to install Rtools on a **privately owned** computer running Windows 10/11, or a **WURclient** desktop or laptop computer.
{{% /callout %}}

## Requirements for RStan installation

Prior requirements for installing RStan:

- [x] R properly installed:
  - [x] [R installed on Windows 10/11](/post/2020/04/06/r-installation-windows-10/)
  - [x] R installed on a WURclient via Software Center, or
  - [x] [R installed on a WURclient using a custom installation](/post/2021/01/24/r-installation-wurclient/)

- [x] [Rtools installed on a Windows 10/11 or a WURclient computer](/post/2022/07/05/rtools-installation/)

Without having R and Rtools installed on your desktop or laptop computer, it makes no sense to try to install RStan. RStan needs to be able to compile from source within R, making R and Rtools indispensable.

Not required, however, highly recommended:

- [ ] RStudio installed:

  - [ ] [RStudio installed on Windows 10/11](/post/2020/04/13/rstudio-installation-on-windows-10/)
  - [ ] RStudio installed on a WURclient via Software Ceneter, or
  - [ ] [RStudio installed on a WURclient using a custom installation](/post/2021/06/17/rstudio-installation-wurclient/)

## Installation

The RStan installation, described here, assumes usage of **R version 4.2.x or above**. It uses the latest development version (v2.26.x) of the RStan package, because of incompatibility of the current RStan package on CRAN (v2.21.x) for R versions above v4.2.x, as mentioned on [The Stan Blog: Stan & R 4.2 on Windows](https://blog.mc-stan.org/2022/04/26/stan-r-4-2-on-windows/).

To install RStan:

1. Start either **RStudio**, or the default **R GUI**. RStudio being the recommended interface!

2. Remove, if present, the existing installation of the packages `StanHeaders` and `rstan` by executing at the R prompt:

```r
remove.packages(pkgs = c("StanHeaders", "rstan"))
```

3. Install the latest development version of `StanHeaders` and `rstan` by executing at the R prompt:

```r
install.packages(pkgs = c("StanHeaders","rstan"),
                repos = c("https://mc-stan.org/r-packages/",
                getOption("repos")))
```

{{% callout note %}}
Congratulations, :satisfied:, you now have RStan installed on your personal Windows 10/11 or WURclient computer!
{{% /callout %}}

## Verifying the RStan installation

To verify the RStan installation run the RStan example/test model at the R prompt:

```r
example(stan_model, package = "rstan", run.dontrun = TRUE)
```
The model should then compile and sample.

If the example model fails with the error:

```r
Error in compileCode(f, code, language = language, verbose = verbose) :
  C:\rtools43\x86_64-w64-mingw32.static.posix\bin/ld.exe: file327c377a3dae.o:file327c377a3dae.cpp:(.text$_ZN3tbb8internal26task_scheduler_observer_v3D0Ev[_ZN3tbb8internal26task_scheduler_observer_v3D0Ev]+0x1d): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file327c377a3dae.o:file327c377a3dae.cpp:(.text$_ZN3tbb10interface623task_scheduler_observerD1Ev[_ZN3tbb10interface623task_scheduler_observerD1Ev]+0x1d): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file327c377a3dae.o:file327c377a3dae.cpp:(.text$_ZN3tbb10interface623task_scheduler_observerD1Ev[_ZN3tbb10interface623task_scheduler_observerD1Ev]+0x3a): undefined reference to `tbb::internal::task_scheduler_observer_v3::observe(bool)'C:\rtools42\x86_64-w64-mingw32.static.posix\bin/ld.exe: file327c377a3dae.o:file327c377a3dae.cpp:(.text$_ZN3tbb10interface
Error in sink(type = "output") : invalid connection
```

Verify that the packages `StanHeaders` and `rstan` installed are of version 2.26.x. Executing the following commands will show the installed versions:

```r
packageVersion(pkg = "StanHeaders")
packageVersion(pkg = "rstan")
```

When the installed versions differ from version 2.26.x, then repeat steps 2. and 3. as described in the section [Installation](#installation).

## Loading the package
The package name is `rstan` (all lowercase), to load the package execute:

```r
library("rstan") # observe startup messages
```

As the startup message says, when using `rstan` locally on a multicore machine and the system has plenty of RAM to estimate the model in parallel, at this point execute at the R prompt:

```r
options(mc.cores = parallel::detectCores())
```

In addition, execute the second startup message at the R prompt:
```r
rstan_options(auto_write = TRUE)
```
which allows to automatically save a bare version of a compiled Stan program to the hard disk so that it does not need to be recompiled (unless after changing the program). These commands will need to be run, each time the `rstan` library is loaded load in R.

Finally, when using Windows as operating system, there will be a third startup message saying **not** to use `--march=native` compiler flag. This warning can be ignored, if the steps above have been followed and a `Makevars.win` file on your system does not contain this flag. When the file name `Makevars.win` does not ring any bells, this probably means it doesn't exist in your system.

## Installing the 'brms' package

In the course [MAT34806 Bayesian Data Analysis](https://wur.osiris-student.nl/#/onderwijscatalogus/extern/cursus?cursuscode=MAT34806&collegejaar=huidig) the `brms` package will be used. This package extends RStan for Bayesian regression modeling. The package abbreviation `brms` stands for Bayesian Regression Models using 'Stan'.

When the installation of RStan has been completed successfully, install the `brms` package by executing at the R prompt the following command:

```r
install.packages(pkgs = "brms")
```

repository: mverouden/blogdown-academic

repo_name: mverouden/blogdown-academic