text:
# Todo list microservices architecture application

## Table of contents

- [Todo list microservices architecture application](#Todo-list-microservices-architecture-application)
  - [Table of contents](#Table-of-contents)
  - [Description](#Description)
  - [Project structure](#Project-structure)
  - [Cloning repository](#Cloning-repository)
  - [Prerequisites](#Prerequisites)
  - [Generating interfaces](#Generating-interfaces)
  - [Generating diagrams](#Generating-diagrams)
  - [Running tests](#Running-tests)
    - [Running integration tests](#Running-integration-tests)
    - [Running end2end tests](#Running-end2end-tests)
  - [Technology stack](#Technology-stack)
    - [User service technology stack](#User-service-technology-stack)
    - [Todo service technology stack](#Todo-service-technology-stack)
    - [Gateway API service technology stack](#Gateway-API-service-technology-stack)
    - [End2end tests technology stack](#End2end-tests-technology-stack)
  - [Diagrams](#Diagrams)
    - [Deployment diagram](#Deployment-diagram)
    - [Login user sequence diagram](#Login-user-sequence-diagram)
    - [Register user sequence diagram](#Register-user-sequence-diagram)
    - [Create todo sequence diagram](#Create-todo-sequence-diagram)
    - [Get todo sequence diagram](#Get-todo-sequence-diagram)
    - [Delete todo sequence diagram](#Delete-todo-sequence-diagram)
    - [Update todo sequence diagram](#Update-todo-sequence-diagram)
    - [List todo sequence diagram](#List-todo-sequence-diagram)

## Description

This project demonstrates microservices architecture based application.

Main application features:

- gRPC APIs
- SSL encryption between client and backend
- users can login and register accounts
- JWT token authorization
- gateway API
- logged users can create, get, list, update and delete todo list entries
- services use MySQL databases
- services are running in Docker containers

Application consists of three services:

- Gateway API service - SSL encryption, JWT token verification, authorization and orchestration
- User service - registering users, managing user accounts, authentication and JWT token generation
- Todo service - creating, updating, deleting and querying todos

## Project structure

```
.
├── gateway - directory with gateway service
│   ├── inc
│   │   └── gateway - directory with header files
│   ├── src - directory with source code files
│   └── third_party - external dependencies (libraries)
│       └── jwt-cpp
├── protos - directory with gRPC interfaces
│   ├── todo - directory with gRPC interface for todo service
│   └── user - directory with gRPC interface for user service
├── test - directory with end2end tests
│   └── certs - directory with test certificates
├── todo - directory with source code and tests for todo service
│   ├── tests
│   │   └── integration - directory with integration tests for todo service
│   │       └── certs - directory with test certificates
│   └── todo - package with todo service code
└── user - directory with source code and tests for user service
    ├── tests
    │   └── integration - directory with integration tests for user service
    │       └── certs - directory with test certificates
    └── user - package with user service code
```

## Cloning repository

```bash
git clone --recursive https://github.com/rsitko92/todo-app-microservices.git
```

## Prerequisites

- [Docker](https://www.docker.com)
- [Docker Compose](https://www.docker.com)
- [PlantUML](http://plantuml.com) (if you want to generate diagrams)

## Generating interfaces

Being in root directory of project run:

```bash
sudo protos/run.sh
```

Generated interfaces definitions will be placed in `protos/.gen` directory. It is sufficient to generate they only one time.

## Generating diagrams

Being in root directory of project run:

```bash
docs/diagrams/generate.sh
```

Generated images with diagrams will be placed in `docs/diagrams/out` directory.

## Running tests

Before running any kind of tests (integration or end2end) generate the gRPC client and server interfaces from .proto service definitions files. See section [Generating interfaces](#generating-interfaces).

### Running integration tests

- User service:

  Being in root directory of project run:

  ```bash
  sudo user/tests/integration/run.sh
  ```

- Todo service:

  Being in root directory of project run:

  ```bash
  sudo todo/tests/integration/run.sh
  ```

### Running end2end tests

Being in root directory of project run:

```bash
sudo test/run.sh
```

## Technology stack

### User service technology stack

- Python3
- Docker
- gRPC Python
- SQLAlchemy
- PyJWT
- MariaDB (MySQL relational database management system)

### Todo service technology stack

- Python3
- Docker
- gRPC Python
- SQLAlchemy
- PyJWT
- MariaDB (MySQL relational database management system)

### Gateway API service technology stack

- C++
- Docker
- gRPC C++ with SSL
- jwt-cpp
- CMake

### End2end tests technology stack

- Python3
- Docker
- gRPC Python
- PyJWT

## Diagrams

### Deployment diagram

![Deployment diagram](/docs/diagrams/out/deployment_diagram.png?raw=true)

### Login user sequence diagram

![Login user sequence diagram](/docs/diagrams/out/login_user_sequence.png?raw=true)

### Register user sequence diagram

![Register user sequence diagram](/docs/diagrams/out/register_user_sequence.png?raw=true)

### Create todo sequence diagram

![Create todo sequence diagram](/docs/diagrams/out/create_todo_sequence.png?raw=true)

### Get todo sequence diagram

![Get todo sequence diagram](/docs/diagrams/out/get_todo_sequence.png?raw=true)

### Delete todo sequence diagram

![Delete todo sequence diagram](/docs/diagrams/out/delete_todo_sequence.png?raw=true)

### Update todo sequence diagram

![Update todo sequence diagram](/docs/diagrams/out/update_todo_sequence.png?raw=true)

### List todo sequence diagram

![List todo sequence diagram](/docs/diagrams/out/list_todo_sequence.png?raw=true)

repository: r-sitko/todo-list-app-microservices

repo_name: r-sitko/todo-list-app-microservices


text:
# Statistical-Simulation-Using-R
Simulation Study: Significance of Regression, Using RMSE for Selection, Simulation Study Power

This is an individual statistical project I have conducted and submitted for STAT 420 course at UIUC.

# Web

 https://sheikhbahman.github.io/Statistical-Simulation-Using-R/

# Author
Bahman Sheikh

# Programming Language
R programming

RMarkdown (RMD file)

Html report file is provided

# Overview
Please see the web for more detailes.

• Three Simulation Studies 1. Significance of Regression 2. Using RMSE for Selection? 3. Power

• Introduction: This section fully provides background to each simulation such that a reader understands the purpose and goal of the simulation study.

• Methods: This section will contain the bulk of the R code that is used to generate the results.

• Results: This section contains numerical or graphical summaries of the results as they pertain to the goal of each study.

• Discussion: This section provides a full discussion of the results. It includes my observations and analysis that tie the Introduction, Methods, and Results together.

Note: The R and RMarkdown usage address the needs of the Methods section and produces what is displayed in the Results section.
Neatness and Organization of the Report and Rmd files.

# Sample figures from the project
![GitHub Logo](/IMG/2.png)
![GitHub Logo](/IMG/1.png)

license: MIT

repository: yadevi/Statistical-Simulation-Using-R

branch_name: refs/heads/master

extension: md

license_type: permissive

repo_name: yadevi/Statistical-Simulation-Using-R


text:
---
title: Conditionally loading build-time plugins
order: 30
---

You can choose to load your build-time plugin conditionally based on run-time data.

To do so, you need to create a `condition` method that will determine whether the
plugin will be loaded. This method receives the complete settings object and should
return `true` if the plugin is to be loaded, and `false` if it should not be loaded.

```js
const condition = settings => {
  if (settings) {
    // Remember, settings contains:
    // settings.options => The user's options
    // settings.measurements => The measurements
    return true  // Load the plugin
  }
  else return false // Do not load the plugin
}
```
You pass your plugin and condition method as a third parameter to the Design constructor
with the `plugin` and `condition` keys respectively.

Let's look at a complete example to illustrate this:

```js
import freesewing from '@freesewing/core'
import plugins from '@freesewing/plugin-bundle'
import myConditionalPlugin from '@freesewing/plugin-bust'

const myConditionalPluginCheck = (settings = false) =>
  settings &&
  settings.options &&
  settings.options.draftForHighBust &&
  settings.measurements.highBust
    ? true
    : false

const Pattern = new freesewing.Design(
  config,
  plugins,
  {
    plugin: myConditionalPlugin,
    condition: myConditionalPluginCheck
  }
)
```

Our condition method will return `true` only if the following conditions are met:

 - A `settings` object is passed into the method
 - `settings.options` is _truthy_
 - `settings.options.draftForHighBust` is _truthy_
 - `settings.options.measurements.highBust` is _truthy_

This is a real-world example from our Teagan pattern. A t-shirt pattern that can be
drafted to the high bust (rather than the full chest circumference) if the user
choses so.

But that feat is handled auto-magically by `plugin-bust` which is a build-time plugin.
So whether to load this plugin or not hinges on the user settings, which is why we
load this plugin conditionally.

repository: freesewing/markdown

branch_name: refs/heads/develop

gha_language: HTML

gha_license_id: MIT

repo_name: freesewing/markdown


text:
# vue.js + typescript project template for vue-cli

![](https://i.imgur.com/4aNZrAs.png)

This is a starter project for vue-typescript using webpack and bootstrap

This seed repo comes with all you need to start building a vuejs project using typescript.

Packages included:

- vue
- vue-router
- webpack (and all the loaders and utilities necessary)
- bootstrap 3
- jquery 2.2.4

## Usage

```
npm install -g vue-cli
vue init danielschmitz/vue-typescript-template myProject
cd myProject
npm install
```

## Scripts

`npm run dev` - will start a local dev server at localhost:8080

`npm run build` - will build your project into the /dist folder

`npm run clean` - will delete the dist folder

repository: binaryta/vue-typescript-template

repo_name: binaryta/vue-typescript-template


text:
---
layout: page
title: Smallseed Review
permalink: /reviews/smallseed/
nowrap: true
---
Smallseed can be purchased at smallseed.cc. Claims to be:

Waterproof

Fireproof

Corrosion Resistant

Hacker-proof

Smallseed has preformed their own extensive stress tests that you can watch here.

## Setup

Super straightforward center punch setup process.

## Heat Stress Test

No data loss.

## Corrosion Stress Test

While the legibility of the letters and numbers has dissapeared, you can reconstruct the seed by counting the rows and columns out. No data loss.

## Crush Stress Test

No data loss.

repository: jlopp/metal-bitcoin-storage-reviews

gha_license_id: NOASSERTION

repo_name: jlopp/metal-bitcoin-storage-reviews


text:
# Case64AR
## Cryptography - Easy
| author | prereq chals | first blood | solves | final points |
| --- | --- | --- | --- | --- |
| k3v1n | none | **MikeCAT** from **Team MikeCAT** | 26 | 190 |

### prompt
Someone script kiddie just invented a new encryption scheme. It is described as a blend of modern and ancient cryptographic techniques. Can you prove that the encryption scheme is insecure by decoding the ciphertext below?

**Ciphertext**: OoDVP4LtFm7lKnHk+JDrJo2jNZDROl/1HH77H5Xv

### original specification
Simple encryption on flag with format sdctf{content...}. First apply base64, then apply a Caesar shift on the base64 alphabet. Easily crack-able by brute force once you know how this cipher works

**flag**: `sdctf{OBscUr1ty_a1nt_s3CURITy}`
### writeups
- https://hackmd.io/@ptr-yudai/BJ3BCl8dd#Case64AR
- https://qiita.com/mikecat_mixc/items/5a0c45751b15c8a8513b#case64ar
- https://github.com/wnfldchen/ctf/blob/main/sdctf21/case64ar.md

branch_name: refs/heads/main


text:
---
title: "Developer"
date: 2021-06-19
draft: false
weight: 5
description: "Manage integrations and other development related settings."
---

## JavaScript Snippet

The snippet for the [website integration]({{< ref "get-started/frontend-integration.md" >}}). This is just here for your convenience.

## Resetting the Identifcation Code

The identification code is used for the JavaScript snippet which must be embedded on your page if you decide to use the [website integration]({{< ref "get-started/frontend-integration.md" >}}). Usually, you don't need to change it, but should your identification code get hijacked, you can reset it here. Note that you need to update all pages containing the snippet should you reset it.

## Clients

Clients are used to access the [Pirsch API]({{< ref "api-sdks/_index.md" >}}). You will need one if you decide to use the [backend integration]({{< ref "get-started/backend-integration.md" >}}) or to access your data from an external application.

To create a new client, click *Add Client*, enter a description and select scopes. Scopes define what capabilities the client has. You can create a client with read-only access by unchecking all the write operations for example.

![Clients](/dashboard/create-client.png)

The dialog popping up will show the unique client ID and secret, which you need to save. Treat the secret like a password. Once the dialog is closed, there is no way to view the secret again. Clients](/dashboard/settings-client.png)

repository: sid-r-singh/docs

repo_name: sid-r-singh/docs


text:
# JMX Receiver

<!-- status autogenerated section -->
| Status        |           |
| ------------- |-----------|
| Stability     | [alpha]: metrics   |
| Distributions | [contrib], [observiq], [splunk], [sumo] |
| Issues        | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Areceiver%2Fjmx%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Areceiver%2Fjmx) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Areceiver%2Fjmx%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Areceiver%2Fjmx) |
| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner)    | [@rmfitzpatrick](https://www.github.com/rmfitzpatrick) |

[alpha]: https://github.com/open-telemetry/opentelemetry-collector#alpha
[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib
[observiq]: https://github.com/observIQ/observiq-otel-collector
[splunk]: https://github.com/signalfx/splunk-otel-collector
[sumo]: https://github.com/SumoLogic/sumologic-otel-collector
<!-- end autogenerated section -->

### Overview

The JMX Receiver will work in conjunction with the [OpenTelemetry JMX Metric Gatherer](https://github.com/open-telemetry/opentelemetry-java-contrib/blob/main/jmx-metrics/README.md)
to report metrics from a target MBean server using a built-in `otel` helper-utilizing Groovy script.

### Details

This receiver will launch a child JRE process running the JMX Metric Gatherer configured with your specified JMX
connection information and target Groovy script.  It then reports metrics to an implicitly created OTLP receiver.
In order to use you will need to download the most [recent release](https://repo1.maven.org/maven2/io/opentelemetry/contrib/opentelemetry-java-contrib-jmx-metrics/)
of the JMX Metric Gatherer JAR and configure the receiver with its path.  It is assumed that the JRE is
available on your system.

# Configuration

Note: this receiver is in alpha and functionality and configuration fields are subject to change.

Example configuration:

```yaml
receivers:
  jmx:
    jar_path: /opt/opentelemetry-java-contrib-jmx-metrics.jar
    endpoint: my_jmx_host:12345
    target_system: jvm
    collection_interval: 10s
    initial_delay: 1s
    # optional: the same as specifying OTLP receiver endpoint.
    otlp:
      endpoint: mycollectorotlpreceiver:4317
    username: my_jmx_username
    # determined by the environment variable value
    password: ${env:MY_JMX_PASSWORD}
    resource_attributes: my.attr=my.value,my.other.attr=my.other.value
    log_level: info
    additional_jars:
      - /path/to/other.jar
```

### jar_path (default: `/opt/opentelemetry-java-contrib-jmx-metrics.jar`)

The path for the JMX Metric Gatherer uber JAR to run. This must represent a released version 1.9+ of the jar,
which can be downloaded from [github](https://github.com/open-telemetry/opentelemetry-java-contrib/releases).
If a non-released version is required, you can specify a custom version by providing the sha256 hash of your
custom version of the jar during collector build time using the `ldflags` option.

```bash
go build -ldflags "-X github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver.MetricsGathererHash=<sha256hash>" ...
```

### endpoint
The [JMX Service URL](https://docs.oracle.com/javase/8/docs/api/javax/management/remote/JMXServiceURL.html) or host
and port used to construct the Service URL the Metric Gatherer's JMX client should use. Value must be in the form of
`service:jmx:<protocol>:<sap>` or `host:port`. Values in `host:port` form will be used to create a Service URL of
`service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi`.

When in or coerced to `service:jmx:<protocol>:<sap>` form, corresponds to the `otel.jmx.service.url` property.

_Required._

### target_system

The built-in target system (or systems) metric gatherer script to run.
Must be a subset of: `"activemq"`, `"cassandra"`, `"hbase"`, `"hadoop"`,  `"jetty"`, `"jvm"`, `"kafka"`, `"kafka-consumer"`, `"kafka-producer"`, `"solr"`, `"tomcat"`, `"wildfly"`.

If additional target systems must be supported (because of a custom JMX metrics gatherer jar configured using the
`MetricsGathererHash` build time config), they can be added with another build time flag.

```bash
go build -ldflags "-X github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver.MetricsGathererHash=<sha256hash>
       -X github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jmxreceiver.AdditionalTargetSystems=newtarget,othernewtarget" ...
```

Corresponds to the `otel.jmx.target.system` property.

### collection_interval (default: `10s`)

The interval time for the Groovy script to be run and metrics to be exported by the JMX Metric Gatherer within the persistent JRE process.

Corresponds to the `otel.jmx.interval.milliseconds` property.

### initial_delay (default: `1s`)

Defines how long this receiver waits before starting.

### username

The username to use for JMX authentication.

Corresponds to the `otel.jmx.username` property.

### password

The password to use for JMX authentication.

Corresponds to the `otel.jmx.password` property.

### otlp.endpoint (default: `<IP_ADDRESS>:<random open port>`)

The otlp exporter endpoint to which to listen and submit metrics.

Corresponds to the `otel.exporter.otlp.endpoint` property.

### otlp.timeout (default: `5s`)

The otlp exporter request timeout.

Corresponds to the `otel.exporter.otlp.metric.timeout` property.

### otlp.headers

The headers to include in otlp metric submission requests.

Corresponds to the `otel.exporter.otlp.metadata` property.

### keystore_path

The keystore path is required if SSL is enabled on the target JVM.

Corresponds to the `javax.net.ssl.keyStore` property.

### keystore_password

The keystore file password if required by SSL.

Corresponds to the `javax.net.ssl.keyStorePassword` property.

### keystore_type

The keystore type if required by SSL.

Corresponds to the `javax.net.ssl.keyStoreType` property.

### truststore_path

The truststore path if the SSL profile is required.

Corresponds to the `javax.net.ssl.trustStore` property.

### truststore_password

The truststore file password if required by SSL.

Corresponds to the `javax.net.ssl.trustStorePassword` property.

### truststore_type

The truststore type if required by SSL.

Corresponds to the `javax.net.ssl.trustStoreType` property.

### remote_profile

Supported JMX remote profiles are TLS in combination with SASL profiles: SASL/PLAIN, SASL/DIGEST-MD5 and SASL/CRAM-MD5.
Should be one of: `"SASL/PLAIN"`, `"SASL/DIGEST-MD5"`, `"SASL/CRAM-MD5"`, `"TLS SASL/PLAIN"`, `"TLS SASL/DIGEST-MD5"`,
or `"TLS SASL/CRAM-MD5"`, though no enforcement is applied.

Corresponds to the `otel.jmx.remote.profile` property.

### realm

The realm, as required by remote profile SASL/DIGEST-MD5.

Corresponds to the `otel.jmx.realm` property.

### additional_jars

Additional JARs to be included in the java command classpath. This is currently only used for support for `wildfly`, where the Additional Jar should be a version of the jboss-client jar found on your wildfly installation.

### resource_attributes

List of resource attributes that will be applied to any metrics emitted from the metrics gatherer.

Corresponds to the `otel.resource.attributes` property.

### log_level

SLF4J log level for the JMX metrics gatherer. Must be one of: `"trace"`, `"debug"`, `"info"`, `"warn"`, `"error"`, `"off"`. If not provided, will attempt to match to the current log level of the collector.

Corresponds to the `org.slf4j.simpleLogger.defaultLogLevel` property.

gha_language: Go


text:
---
layout: page
title: PSY5101 The Neurobiology of Engrams
permalink: /PSY5101/
---
Instructor: Paul Frankland<EMAIL_ADDRESS>
## Overview

Memories are thought to be encoded as enduring physical changes, or ‘engrams’, in the brain. Karl Lashley was among the first to use an empirical systematic approach in an attempt to localize an engram. Famously, his search proved unsuccessful, and his conclusion—that the engram is elusive—became widely influential.  From today’s perspective, we appreciate that this elusivity is, at least in part, due to the sparse, distributed and dynamic nature of memory representations in the brain, making engrams challenging to identify and ‘pin down’ using traditional neuroscientific methods.  However, new mouse genetic tools have recently been developed which provide unprecedented opportunities to visualize and manipulate defined brain regions and specific cell populations. The goal of this course is to discuss to what extent these contemporary studies have brought us closing to finding the engram.

## Classes

Tuesdays 2-4 pm in Sidney Smith Hall, room 560A

![alt](/img/psy5101sched.png)

## Format

Students will present and discuss recent ‘engram’ papers. For each class, 2 papers have been selected. For each paper a presenter will be assigned, as well as a discussant. The presentation should be 30-40 minutes followed by 10-15 minutes of discussion.

Non-presenters will read the papers before the class and submit a 0.5-1 page summary of each paper, including 3-4 discussion points/comments/questions. These are to be emailed to the instructor<EMAIL_ADDRESS>no later than 11:59 pm on Monday evening.

## Evaluation

1) **Presentations** (30%). Student will get to present twice during the course. Each presentation is worth 15% of the final grade.

2) **Participation in class discussions** (40%). This grade will be based on the weekly summaries (20%) as well as ability to lead and participate in class discussions (20%).

3) **Assignments** (30%). There will be two assignments. Students will write “New and Views” style commentaries (~1000 words) on recent engram papers. The first is due during reading week. The second is due at the end of term. Both contribute 15% to the final grade.

## Detailed schedule

**Week 1,  January 12**: Frankland lecture FINAL (Frankland), course organization

Historical overview of engram studies focusing on the work of Semon, Lashley and Penfield

**Week 2,  January 19**:  Seeing the engram, immediate early genes

[Guzowski et al](/pdfs/Guzowski-et-al.pdf), [Reijmers et al](/pdfs/Reijmers-et-al.pdf)

**Week 3,  January 26**:  Seeing the engram, replay

[Singer et al], [Tambini et al]

**Week 4,  February 2**:  Erasing the engram

[Zhou et al], [Nabavi et al]

**Week 5,  February 9**:  Reorganizing the engram

[Tayler et al], [Denny et al]

**Reading week,  February 16**:  Assignment 1

**Week 6,  February 23**:  Distributed engrams

[Tanaka et al], [Wheeler et al]

**Week 7, March 1**: Erasing pathological engrams

[Ramirez et al (2015)], [Hsiang et al]

**Week 8,  March 8**:  Artificially expressing the engram

[Liu et al], [Kim et al]

**Week 9,  March 15**:  Creating false engrams

[ramirez et al (2013)], [de Lavilleon et al]

**Week 10,  March 22**:  Allocation

[Han et al], [Yiu et al]

**Week 11,  March 29**:  Interacting engrams

[Tse et al (2007), Tse et al (2011)], [Richards et al]

**Week 12, April 5**:  Assignment 2

repository: jf-lab/jflab

repo_name: jf-lab/jflab


text:
---
title: "Cypress Timeouts"
date: "2020-02-12"
description: Cypress offers several different timeout values based on the type of command.
category: Cypress
---

[Cypress Timeouts]( https://docs.cypress.io/guides/core-concepts/introduction-to-cypress.html#Timeouts)

Almost all commands can time out in some way.
All assertions, whether they’re the default ones or whether they’ve been added by you all share the same timeout values.

#### Applying Timeouts
You can modify a command’s timeout. This timeout affects both its default assertions (if any) and any specific assertions you’ve added.

Remember because assertions are used to describe a condition of the previous commands - the timeout modification goes on the previous commands not the assertions.

#### Example #1: Default Assertion
```
// because .get() has a default assertion
// that this element exists, it can time out and fail
cy.get('.mobile-nav')
```
Under the hood Cypress:
•	Queries for the element .mobile-nav
✨and waits up to 4 seconds for it to exist in the DOM✨

#### Example #2: Additional Assertions
```
// we've added 2 assertions to our test
cy
  .get('.mobile-nav')
  .should('be.visible')
  .and('contain', 'Home')
```
Under the hood Cypress:
•	Queries for the element .mobile-nav
✨and waits up to 4 seconds for it to exist in the DOM✨
✨and waits up to 4 seconds for it to be visible✨
✨and waits up to 4 seconds for it to contain the text: ‘Home’✨

The **total** amount of time Cypress will wait for all of the assertions to pass is for the duration of the cy.get() timeout (which is **4 seconds**).
Timeouts can be modified per command and this will affect all default assertions and any assertions chained after that command.

#### Example #3: Modifying Timeouts
```
// we've modified the timeout which affects default + added assertions

cy
  .get('.mobile-nav', { timeout: 10000 })
  .should('be.visible')
  .and('contain', 'Home')
```
Under the hood Cypress:
•	Gets the element .mobile-nav
✨and waits up to 10 seconds for it to exist in the DOM✨
✨and waits up to 10 seconds for it to be visible✨
✨and waits up to 10 seconds for it to contain the text: ‘Home’✨

Notice that this timeout has flowed down to all assertions and Cypress will now wait up to **10 seconds total** for all of them to pass.

#### Default Values
Cypress offers several different timeout values based on the type of command. We’ve set their default timeout durations based on how long we expect certain actions to take. For instance:

•	**cy.visit()** loads a remote page and does not resolve until all of the external resources complete their loading phase. This may take awhile, so its default timeout is set to **60000ms**.

•	**cy.exec()** runs a system command such as seeding a database. We expect this to potentially take a long time, and its default timeout is set to **60000ms**.

•	**cy.wait()** actually uses 2 different timeouts. When waiting for a routing alias, we wait for a matching **request** for **5000ms**, and then additionally for the **server’s response** for **30000ms**. We expect your application to make a matching request quickly, but we expect the server’s response to potentially take much longer.

That leaves most other commands including all **DOM based commands** to time out by default after **4000ms**.

repository: taislu/mobilelu-starter-blog

gha_language: JavaScript

repo_name: taislu/mobilelu-starter-blog


text:
---
title: Working with Data
page_title: Working with Data
description: Read this article explaining how you can load, display and manage data in RadGridView - Telerik's {{ site.framework_name }} DataGrid.
slug: gridview-working-with-data
tags: working,with,data
published: True
position: 2
---

# Working with Data

In this article we will discuss the following topics:

* [Loading Data](#loading-data)

* [Displaying Data](#loading-data)

* [Managing Data](#loading-data)

## Loading Data

You can load data in six distinct ways to be displayed in __RadGridView__ :

* [Using in-memory Data]({%slug gridview-in-memory-date%})

* [From XML]({%slug gridview-loading-data-from-xml%})

* [From WCF Services]({%slug gridview-loading-data-from-wcf-services%})

* [From ADO.NET Services]({%slug gridview-loading-data-from-adonet-services%})

{% if site.site_name == 'Silverlight' %}

* [From RIA Services]({%slug gridview-loading-data-from-ria-services%})

* [From Web Services]({%slug gridview-loading-data-from-web-services%})
{% endif %}

## Displaying Data

After you've acquired your data, you have to set it as the __ItemsSource__ of your RadGridView instance. The ItemsSource property recognizes any collection that implements **IEnumerable**.

>For RadGridView to correctly respond to changes in your collection when you add or remove items through code-behind, and update the UI accordingly, you must ensure that the source collection implements the **INotifyCollectionChanged** interface.

#### __[C#] Example 1: Setting RadGridView's ItemsSource__

	{{region cs-gridview-working-with-data_0}}
	this.RadGridView.ItemsSource = SampleData.GetData();
{{endregion}}

#### __[VB.NET] Example 1: Setting RadGridView's ItemsSource__

	{{region vb-gridview-working-with-data_1}}
	Me.RadGridView.ItemsSource = SampleData.GetData()
{{endregion}}

Once you set the __ItemsSource__ , RadGridView displays the data in columns, which  are auto-generated by default. If you want, you can set RadGridView's **AutoGenerateColumns** property to **False** and [manually create them]({%slug gridview-columns-defining-columns%}#manual-columns-definition). You can find more information regarding RadGridView columns in [the following topic]({%slug gridview-columns-defining-columns%}).

If you don't want to display all the data in one row you can use RadGridView's [Row Details]({%slug radgridview-row-details-overview%}) functionality to display additional information.

If the data you want to display is hierarchical you can display it in nested __RadGridViews__. You can learn more about creating a **Hierarchical GridView** in [the following topic]({%slug gridview-hierachy-overview%}).

>important Resetting the __ItemsSource__ collection will cause __RadGridView's__ horizontal scrollbar to be set to the top. You can keep track of the scrollbar's **VerticalOffset** and reposition the scrollbar after the collection update to keep the original appearance.

## Managing Data

RadGridView comes with out-of-the-box support for __Insert__, __Update__ and __Delete__ operations, as well as for [data validation]({%slug gridview-managing-data-validation%}).

You can find more information about [managing data]({%slug gridview-managing-data-overview%}) in the following topics:

* [Adding New Entries]({%slug gridview-managing-data-add-new-entries%})

* [Updating an Entry]({%slug gridview-managing-data-updating-entry%})

* [Deleting an Entry]({%slug gridview-managing-data-deleting-entry%})

* [Data Validation]({%slug gridview-managing-data-validation%})

## See Also

 * [Getting Started]({%slug gridview-getting-started2%})

 * [Building Hierarchical Grid View]({%slug gridview-building-hierarchical-grid-view%})

repository: telerik/xaml-docs

repo_name: telerik/xaml-docs


text:
#### To better understand the VSCode extension AP we cloned a spell checker extension.
#### We chose this extension because it demonstrates how to use the API to to underline errors.
#### These notes were gathered from this processes.

##### Import the  VSCode extension API

```
import * as vscode from 'vscode';
```

##### This was called in the extension.ts file.
##### All it does in instantiate and call a class the holds the core code.

```
export function activate(context: vscode.ExtensionContext): void {
	let linter = new SpellProvider();

	linter.activate(context);
}
```

##### This is the public facing method this is called by the extension.ts file.
```
public activate(context: vscode.ExtensionContext) {

let subscriptions: vscode.Disposable[] = context.subscriptions;

// Attaches calls to check the file for spelling errors to file changes.
vscode.workspace.onDidChangeTextDocument(this.TriggerDiffDiagnostics, this, subscriptions)

// Here is where promiseKeeper would be called.

}
```

##### Called the check the file when the file changes.
```
private TriggerDiffDiagnostics(event: vscode.TextDocumentChangeEvent) {
	this.TriggerDiagnostics(event.document);
}
```

##### The code for getting the file's text.
```
// document = event.document
document: vscode.TextDocument
let docToCheck = document.getText();
```

##### Code for underlining code in the file.
```
let lineRange = new vscode.Range(problem.startLine, problem.startChar, problem.endLine, problem.endChar);
let loc = new vscode.Location(document.uri, lineRange);

let diag = new vscode.Diagnostic(lineRange, problem.message, this.convertSeverity(problem.type));
```

repository: pwatrous/vscode-promise

gha_language: TypeScript

repo_name: pwatrous/vscode-promise


text:
Pattern: Non-lowercase control keyword

Issue: -

## Description

Ensures all control structure keywords are lowercase.

## Further Reading

* [PHP_CodeSniffer - Squiz.ControlStructures.LowercaseDeclaration](https://github.com/squizlabs/PHP_CodeSniffer/blob/master/src/Standards/Squiz/Sniffs/ControlStructures/LowercaseDeclarationSniff.php)

repository: Adroiti/docs-for-code-review-tools

repo_name: Adroiti/docs-for-code-review-tools


text:
# Parcel

The small bundler give us a fast building and development envoirement.
Here you found a simple example of a project with HTML, SASS and JS

package.json
```
    "devDependencies": {
        "cssnano": "^4.1.8",
        "sass": "^1.16.0"
    }
```

# Install

We need [Node.js](https://nodejs.org/en/) for the NPM (Node Package Manager)

And install [Parcel](https://parceljs.org/) global
```
npm install -g parcel-bundler
```

You can download this project, run `npm install` after path change and start it directly.
Or create a Project folder and open your Terminal, to switch in the project folder.
```
cd /Users/username/project/path/
```
Clone the repo to your local envoirement, for clone you need [Git](https://git-scm.com/) or [Download](https://github.com/prod3v3loper/parcel-html-sass-javascript/archive/master.zip)
```
git clone https://github.com/prod3v3loper/parcel-html-sass-javascript.git /Users/username/Projects/
```
And now install all Dev Dependencies in package.json with the command
```
npm install
```

# Usage
We added commands in our package.json to run with npm instead of npx

package.json
```
    "scripts": {
        "watch": "parcel watch public/index.html",
        "dev": "parcel public/index.html",
        "build": "parcel build public/index.html"
    },
```

And this we use in which we npm run and our command names.
This command start the Server with the hotmodule.
```
npm run dev
```
This command build the dist folder with the end product.
```
npm run build
```

# Contribute

Please [file an issue](https://github.com/prod3v3loper/parcel-html-sass-javascript/issues) if you
think something could be improved. Please submit Pull Requests when ever
possible.

# Authors

* **Samet Tarim** - *All works* - [prod3v3loper](https://www.tnado.com/author/prod3v3loper/)

# License

[MIT](https://github.com/prod3v3loper/parcel-html-sass-javascript/blob/master/LICENSE)


text:
# b4dis
[JDA](https://github.com/DV8FromTheWorld/JDA) [Brigadier](https://github.com/Mojang/brigadier) Parser Plugin.

```
We want to thank the Concordia University Part-time Faculty Association for the Professional Development Grant that allows us to develop/contribute to the open source community.
```

Following is the typical ping pong example for the Discord API. Command registration works essentially the same way as on Minecraft Forge (which is why this package was developed).

## Ping Pong Example

```java
DiscordBrigadier discordBrigadier = new DiscordBrigadier();

discordBrigadier.register(
    DiscordBrigadier
        .literal("ping")
        .executes(context -> {
            context
                .getSource()
                .getTextChannel()
                .sendMessage("pong")
                .queue();
            return 1;
            }
        )
    );

try {
    JDA jda = JDABuilder.createDefault("Discord_Bot_Token_Here").build();

    jda.addEventListener(discordBrigadier);

    jda.awaitReady();
} catch(Exception e) {}
```


text:
# Multilevel-Marketing

It is all about the whole business model with different role and different functionalities.

-This is final project so it is all about the whole business model with different role and different functionalities.
-I have created a MultiLevel Marketing Portal for business.
-All the requirements are fulfilled as follows:
-All the Entities are created.
-They have been related to one another using either OneToOne, OneToMany or ManyToMany relationships.
-A new jdbcRealm Security Realm in Glassfish with your User and Group tables.
-Three security roles for your application have been defined: admin,customers and members.
-One web-resource-collections and auth-constraints to protect some or all of your application.
-An auth-config that specifies Forms-Based Authentication using your security realm.
-Mapping of roles to users and groups using glassfish-web.xml
-CSS and Foundation is used for layout the application.
-All the code used in this project are based on "Instructor's Example"

Design

  -This is a final project regarding the whole functionality and security provided to business model.
  -As I created a MultiLevel Marketing type of business model for CRM business, so in my project I have given three       roles: admin,customers and members.
  -Customers can login and see their details and see the all products which are available and make a purchase it.
  -Members can login and see their details and see the all products which are available and make a purchase it in         addition they can manage their marketing tree.
  -Admin can login and see the all functionality of the portal and can make change or create new functionalists also.
  -There are only three portal, which shows a login page and when user enter the details of login then they get           admin,customer or member portal and there is a link to logout at the top of the page, there is username also at top    of dropdown and the can click the logout button and the user will be logged out and redirect to login page.
  -I did some extra credits which all are in code itself.

Development Insights

  -It has been great experience working on this project.
  -I loved the way we create database and add the data in it. How easy it is to create tables and add data to it and      create foreign key relationships without even writing the sql queries.
  -I liked the way we give security to different roles and restrict them from accessing the secure parts on our           website.
  -I like working with persistence and the security layers.
  -I like to work with JSF and thinking to use in future fr better prospect.

Requirements (Installation, Compile, Runtime, etc)

  -Open the project in Netbeans.
  -Created database named "itmd4515" and create a user named "itmd4515" with password "itmd4515" and give access to the    database "itmd4515" just created.
  -Go to your database and add a connection to the database "itmd4515".
  -Add persistence unit "jsharma3PU" and use the database connection added in previous step.
  -Create JDBC connection pool named "itmd4515Pool" and JDBC connection resource named "jdbc/itmd4515DS" and use the      pool created.
  -Now you can run the project.
  -The Tools used in the project is "NetBeans IDE version 8.0.2"
  -The libraries used are persistence, security, util,javax,facelate composite component ejb, etc.


text:
# Image Scale Template

This template requires react code to be transpiled to normal javascript, so it requires you to have [node.js](https://nodejs.org/en/) installed.

## Developing

For the very first time running the project, you need to install the dependencies by running `npm install`.

For subsequent runs, you simply need to run `npm start`.

## Build

Please remove all the content from folder `dist` and run `npm run build`. This will generate the HTML necessary for your HTML NFT on folder `dist`.

## Gotchas

- The reason you should remove the contents of the folder before you run `npm run build` is so you only end up with the necessary files for your NFT since the assets are hashed on every run.
- Please make sure the exported HTML also doesn't have references to the files with `./filename.jpg` or `/filename.jpg` but `filename.jpg`.

## Publishing

All HTML content needs to be minted in a zip file. You can have multiple files inside your zip, however there are a few requirements you can't miss.

1. The HTML file can only be called index.html
2. The file should have a thumbnail image to be displayed until the user clicks to interact on your OBJKT. The image can be png, jpg or a gif. you just need to update the <metadata> reference inside the HTML file.
3. At the moment calls to external sites are being blocked, even if they seem to work locally when you are testing. So any dependency needs to be included locally in the zip.

Regardless of what content you want to display (three.js, pixi.js, canvas, p5.js, shaders etc), it should always be full width and full height (window.innerWidth and window.innerHeight) so please dont forget to include your own resize function.

## Customisation

If you want to create OBJKT's with different seeds, you can access the creator and viewer wallet ids. This values will only be injected once the piece has been minted
they will not work locally.
if the user is not sync, the viewer comes in as false

```javascript
const creator = new URLSearchParams(window.location.search).get('creator')
// if the viewer is not authenticated to a wallet, this value will be false
const viewer = new URLSearchParams(window.location.search).get('viewer')
```

Hope you guys enjoy!
Hicetnunc team

repository: ngons/hicetnunc

repo_name: ngons/hicetnunc


text:
## Disable xdmf reader caching

`vtkXdmfReader` now releases the memory of the `XdfmGrid`, after creating the output `vtkDataObject` out of it.
This way caching is disabled, which is useful for large datasets, because otherwise you can run out of memory.

This MR resolves issue https://gitlab.kitware.com/paraview/paraview/-/issues/19633.

repository: vtker/VTK

repo_name: vtker/VTK


text:
# CUBA Charts Add-on

[![license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)
[![Build Status](https://travis-ci.org/cuba-platform/charts.svg?branch=master)](https://travis-ci.org/cuba-platform/charts)
[![Documentation](https://img.shields.io/badge/documentation-online-03a9f4.svg)](https://doc.cuba-platform.com/charts-latest)

Charts Add-on provides integration with AmCharts and GoogleMaps for applications based on CUBA Platform.

For more information see [github.com/cuba-platform/cuba](https://github.com/cuba-platform/cuba).

## Build and install

In order to build the add-on from source, you need to install the following:
* Java 8 Development Kit (JDK)
* [CUBA Gradle Plugin](https://github.com/cuba-platform/cuba-gradle-plugin)
* [CUBA](https://github.com/cuba-platform/cuba)

Let's assume that you have cloned sources into the following directories:
```
work/
    cuba/
    cuba-gradle-plugin/
    charts/
```

Open terminal in the `work` directory and run the following command to build and install the plugin into your local Maven repository (`~/.m2`):
```
cd cuba-gradle-plugin
gradlew install
```

After that, go to the cuba directory and build and install it with the same command:
```
cd ../cuba
gradlew install
```

Finally, go to the charts directory and build and install it with the same command:
```
cd ../charts
gradlew install
```

repository: cuba-platform/charts

gha_language: Java

repo_name: cuba-platform/charts


text:
---
title: Homework 6
header-includes:
    - \usepackage{fancyhdr}
    - \pagestyle{fancy}
    - \fancyhead[CO,CE]{ECE 387}
    - \fancyfoot[CO,CE]{\thepage}
    - \fancyfoot[LE,RO]{Robots are cool!}
---

**Integrity:** Your honor is extremely important.  This academic security policy is designed to help you succeed in meeting academic requirements while practicing the honorable behavior our country rightfully demands of its military.  Do not compromise your integrity by violating academic security or by taking unfair advantage of your classmates.

**Authorized Resources:** You can **ONLY** seek help from the instructor. Homework
is an individual exercise.

# Image Processing

All work for this assignment will be done in a `jupyter notebook`. Grab the
template from the class website and modify it. When you are done, print out
the notebook and turn it in.

1. Using the camera on your laptop, grab an image of yourself and display it
using `plt.imshow()`. Remember to convert the image from BGR to RGB colorspace.
Also, print out the size of the image in pixels
1. Take your color image and split it into the red, blue, and green channels,
create a 1x3 subplot (three side by side). Title each image according to its
color channel
1. Create a 1x2 subplot (two images side by side) of your image. Have the left
image rotated counter clockwise 90 degrees and the right image inverted (flipped).
1. Make a copy of your original image and on the copy, write your name and date
on the image. Write your name in blue and the date in green.
1. Crop the image so it only shows your face (*hint:* use an ROI) and then plot
it.
1. Take your original RGB image and resize it so the image is 100x100 pixels (like
a thumb nail) and plot it.

gha_language: Jupyter Notebook


text:
---
layout: post
title: Overview
date:   2014-10-31 12:38:28
position: 1
categories: walkthrough
summary: An overview of rapidcloud.io services and how you can use rapidcloud.io simplify the deployment and management of your application in the cloud.
---
Rapidcloud.io is a cloud management and continuous delivery service for Java web applications. Our service works by provisioning and managing server instances within your personal account with AWS (Amazon Web Services), Digital Ocean or Rackspace.

Once provisioned you can

 1. Deploy your application from GitHub or BitBucket
 1. Install various tools (ex: Redis, Memcache)
 1. Upload your public SSH key for remote SSH login
 1. Perform system functions (changing passwords, restarting application, etc)
 1. Build and manage networks
 1. Define environment variables

We'll go into each of these topics in greater detail, to show you how rapidcloud.io can make deploying your Java web application an easy, intuitive experience.

extension: markdown


text:
##Managing Your Program

程式管理

Working within a Visual Programming process can be a powerful creative activity, but very quickly the Program Flow and key user inputs can be obscured by complexity and/or layout of the Workspace. Let's review some best practices for managing your program.

使用視覺化程式編輯可唯一具有創造性的事情，但隨著專案推進，工作室很快就會變得複雜，使程式難以理解。接下來我們來預習如何管理程式。

###Alignment

對齊

Once we have added more than a few Nodes to the Workspace, we may want to re-organize the layout of the Nodes for clarity's sake. By selecting more than one Node and right-clicking on the Workspace, the pop up window includes an **Align Selection** menu with justification and distribution options in X and Y.
當我們加入一些節點後，我們可能想要調整節點使他的架構清晰一些。選擇兩個以上的節點並於工作區按下右鍵，將會跳出擁有**對齊選擇**選項的菜單。

![Align](images/3-4/00-Align.png)
> 1. Select more than one Node
選擇一個以上的節點。
2. Right-click on the Workspace
對工作區按下右鍵
3. Use the **Align Selection** options
使用**對齊選擇**選項

###Notes
注釋

With some experience, we may be able to "read" the Visual Program by reviewing the Node Names and following the Program Flow. For users of all experience levels, it is also good practice to include plain language labels and descriptions. Dynamo has a **Notes** Node with an editable text field to do so. We can add Notes to the Workspace in two ways:
熟悉使用方式後，我們可以藉由節點名稱以及程式流程來“讀”視覺化程式。對所有用戶來說，用簡明的話敘述正在做的事情是很好的習慣。為此Dynamo提供了**Notes**節點，可以編輯節點內部內容。其添加方式有兩種：

![Notes](images/3-4/01-Notes01.png)
> 1. Browse to the menu File > Create Note
1.編輯選單→建立注釋
2. Use the keyboard shortcut Ctrl+W
2.使用快捷鍵Ctrl+W

Once the Note is added to the Workspace a text field will pop up allowing us to edit the text in the Note. After they are created, we can edit the Note by double-clicking or right-clicking the Note Node.
當注釋添加到工作區後，一個文本輸入區就會出現，雙點擊或著右鍵點擊便可編輯修改內容。

![Notes Edit](images/3-4/02-Notes02.png)

###Grouping
群組

When our Visual Program gets big, it is helpful to identify the larger steps that will be executed. We can highlight larger collections of Nodes with a **Group** to label them with a colored rectangle in the background and a title. There are three ways to make a Group with more than one Node selected:
當程式越來越大，我們可以用**群組**來組織節點。有三種方式可以組建：

![Groups](images/3-4/04-Groups01.png)
> 1. Browse to the menu File > Create Group
1.編輯→建立群組
2. Use the keyboard shortcut Ctrl+G
2.快捷鍵Ctrl+G
3. Right-click on the Workspace and select "Create Group"
3.右鍵空白區域選擇"創建群組"

Once a Group is created we can edit its settings, such as the title and color.當群組建立完成，我們可以編輯裡面的設定，如標題、顏色等。

![Group Settings](images/3-4/05-Groups02.png)

> Tip: Using both Notes and Groups is an effective way to annotate your file and increase readability.
訣竅：同時使用注釋與群組可提升程式的可讀性。

Here's our program from Section 2.4 with Notes and Groups added:
下面是在2.4節程式中添加注釋和群組後的程式：

![Grouping Example](images/3-4/03-Groups00.png)

> 1. Note: "Grid Parameters"
1.注釋："Grid Parameters"
2. Note: "Grid Points"
2.注釋："Grid Points"
3. Group: "Create a Grid of Points"
3.群組："Create a Grid of Points"
4. Group: "Create an Attractor Point"
4.群組： "Create an Attractor Point"
5. Note: "Calibrate Distance Values"
5.注釋："Calibrate Distance Values"
6. Note: "Variable Grid of Circles"
6.注釋："Variable Grid of Circles"

repository: alarickuo/DynamoPrimer

gha_language: CSS

repo_name: alarickuo/DynamoPrimer


text:
# About the project - census2020

[Project Proposal for the City of San Jose](https://drive.google.com/open?id=1CvBMkS9AF18NR5vTeiFQrdssHQHXV5xpwWCXEp4cTFE)

Website to inform community members about the Census 2020

Census 2020 Kiosks Project!

We need a team of people to assist the city of San Jose and Santa Clara County with an outreach project surrounding the 2020 Census. The goal is increase participation by creating a website that explains why and how to fill out the 2020 Census, and link to the Federal Census site.

This website will be made available through kiosks at community centers and libraries, as well as online. The content will be text and videos answering questions and concerns about the census.

We need a simple, robust design with an efficient and attractive interface that meets ADA accessibilty guidelines. It should also allow easy navigation to the translated content (provided by the city).

We need team members with the following skills:
- User Interface and User Experience Design
- Copywriting/Marketing
- Media Design/Video Creation
- Community Outreach
- Javascript/HTML/Responsive Design
- Usability Testing
- Site Analytics
If you are interested in helping with this exciting and vital civic project, join the #census2020 Slack channel.

# Development Information

**About**

This project mainly uses React (JavaScript), Node (JavaScript), and SASS (css).

**Getting Started**

(1) Install Node / NPM (when you install Node, it will install NPM as well)

- I am using Node 10.9.0

(2) Nagivate to the project directory in your terminal. For example:

```
cd census2020
```

(3) Configure the app

Copy the [.example.env](./.example.env) file to a new file in the same directory called `.env`. Adjust any configuration variables you want--if you're just working on the frontend, there's nothing you need to do, these variables are mostly around connecting to the IMAP server to send emails from the contact form.

(4) Install the node modules (libraries) needed to develop on the application

```
npm install
```

(5) In one terminal run this command.

- This process will build the project.
The process is ongoing until you CONTROL-C to quit the process.
The dev server will rebuild the project anytime a file in the `client` directory changes.

```
npm start
```

(6) Open localhost:3000 in your web browser

**Internationalization**

This project supports internationalization (translating text and formatting numbers and dates for different languages and cultures). See the [wiki page](https://github.com/codeforsanjose/census2020/wiki/Internationalization-(i18n)) for an in-depth description of how this works.

To aid development, there is a script you can run to automatically translate text using Google Translate. To use this, you will need to provide credentials for a Google Cloud API Project. See [here](https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application) for instructions on how to set it up; you can set the `GOOGLE_APPLICATION_CREDENTIALS` environment variable in your .env file for convenience. Once that's done, run `node i18n/translate-strings.js`.

Note that this automatic translation is intended *only* for development purposes; it is not guaranteed to be completely accurate, and will likely result in some incorrect translations. For deployment to a production version, use an actual, human translator.

**Other notes**

Some people using Windows find that `npm start` doesn't launch the server; this should get fixed, but in the meantime you can explicitly run `npm run start:development` to get the server running.

branch_name: refs/heads/staging


text:
Ti=Copyright License

sec=The {_Licensor} grants {_You} a copyright license for the {_Software} to do everything {_You} might do with the {_Software} that would otherwise infringe the {_Licensor}'s copyright in it for any permitted purpose.  However, {_You} may only make changes or new works based on the software according to {License.NewWork.Xref}, and {_You} may not distribute copies of the {_Software}.

=[G/Z/ol/Base]

repository: CommonAccord/Cmacc-Org

repo_name: CommonAccord/Cmacc-Org


text:
# Cryptocurrency Valuation Tool

This is a simple project that aims to provide tools to help users create their own rules to evaluate cryptocurrency assets (alt coins) and organize their assets.

- Max price is an initial info based on BTC market cap (dominant coin) and the target coin supply. Basically: What would be the price if this coin had the same market cap as BTC?
- Potential growth is the difference between max price and current price
- The user can create custom valuation settings
- Once a coin is tracked it's possible to rate it based on the valuation settings previously defined. These rules will affect the potential growth to generate the expected price and expected growth

##### It works by accessing [cryptocurrency_valuation_api](https://github.com/fredmp/cryptocurrency_valuation_api)

##### The data comes from the public [CoinMarketCap](https://coinmarketcap.com) API. It's updated every 15 minutes and respects the usage limits.

##### Once yarn is installed you can run, build and deploy it by using:

```
yarn dev
yarn build
yarn deploy
```

## Next (possible) steps

- Add unit tests
- Add e2e tests
- Apply some refactoring to extract code to specific components
- Improve assets page to allow the user to register not only the amount but also when a coin is bought or sold and associated costs. That will provide a more accurate overview as well as information such as mean price
- Create an initial page to show in the root path. It could display news and useful graphs for example

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request

## Legal

Cosmos Tecnologia © 2017-2018

[@fredmp](https://twitter.com/fredmp)

[Licensed under the MIT license](https://opensource.org/licenses/mit-license.php)

gha_language: Vue


text:
# gogrep
A simple and probably faster replacement of GNU grep command written in GO

Gogrep searching plain-text data sets for lines that match a specified pattern.

# Speed test

Test were performed on MacBook 2,8 GHz Intel Core i5 with SSD disk

Running gogrep in parallel mode:

    time gogrep --p=true "LineProfiler" ~/workspace  84.83s user 61.87s system 213% cpu 1:08.58 total
    time gogrep --p=true "LineProfiler" ~/workspace  83.33s user 62.78s system 207% cpu 1:10.25 total
    time gogrep --p=true "LineProfiler" ~/workspace  85.08s user 61.91s system 214% cpu 1:08.62 total

Running gogrep in serial mode:

    time gogrep "LineProfiler" ~/workspace  23.79s user 59.87s system 50% cpu 2:46.41 total
    time gogrep "LineProfiler" ~/workspace  24.24s user 65.92s system 50% cpu 2:57.76 total
    time gogrep "LineProfiler" ~/workspace  24.33s user 66.59s system 50% cpu 3:00.90 total

Running GNU grep:

    time grep -R "LineProfiler" ~/workspace   295.22s user 65.64s system 82% cpu 7:17.82 total
    time grep -R "LineProfiler" ~/workspace   291.46s user 68.22s system 81% cpu 7:20.85 total
    time grep -R "LineProfiler" ~/workspace   295.80s user 69.85s system 81% cpu 7:31.33 total

# Installation

## Install binary (MacOS and Linux):

    curl -s -L https://github.com/kgantsov/gogrep/releases/download/v0.1/setup.sh | sh

## Install from the source:

First of all `github.com/fatih/color` library needs to be installed.

    go get github.com/fatih/color

Then it can be easily compiled:

    go build

# Usage

To get some help run program with `--help` flag

    gogrep --help
    Usage: gogrep [flags] [pattern] [file]

    Flags:
    -exclude-dir string
            List of coma separated dirs (default ".bzr,CVS,.git,.hg,.svn")
    -include string
            Include pattern (default "*")
    -p	Run gogrep in parallel

# Some examples

Run gogrep excluding `.bzr, CVS, .git, .hg, .svn, env` directories:

    gogrep --exclude-dir=".bzr,CVS,.git,.hg,.svn,env" "import" ~/workspace/

Search only in `.py` files:

    gogrep --include="*.py" "import" /Users/koss/workspace/iconik

Pipling output from other commands:

    cat main.go | gogrep "func "
    func findWordInBuffer(pattern, path string, scanner *bufio.Scanner) {
    func findWordInFile(pattern, path string) {
    func printFile(include, pattern string, excludeDir []string) filepath.WalkFunc {
    func addToQueue(jobs chan string, path string) {
    func worker(id int, pattern string, jobs chan string, wg *sync.WaitGroup) {
    func walkParrallel(dir, pattern string) {
    func main() {

repository: kgantsov/gogrep

repo_name: kgantsov/gogrep


text:
# Memory Game Project

This is a memory game project created in pure JavaScript, created for my third project in the Udacity Front End Nanodegree Program.

## Table of Contents

* [How to Play](#how-to-play)
* [Contributing](#contributing)
* [To Do](#to-do)

## How to Install the Game Locally
Clone the repository by running:
`git clone https://github.com/ysarasaiki/fend-project-memory-game.git`

## Required Dependencies
fontawesome, Google Fonts, FlatIcon Picnic and Barbeque icons

## How to Play

Click on the cards to reveal the symbol. Match the symbols in as few moves, and as little time, as possible!

## Contributing

Feel free to contribute - please see [CONTRIBUTING.md](CONTRIBUTING.md) for details.

## To Do
Future functionality:
* Leaderboard
* Store game state using local storage
* Keyboard shortcuts
* Update UI

## Contributions

## About the Author
Yuna is an aspiring Front End Web Developer, based in San Francisco!

## License Information
This project is licensed under the MIT License.

repository: ysarasaiki/fend-project-memory-game

repo_name: ysarasaiki/fend-project-memory-game


text:
# DoctorTalkingBox
 Lab Project for CZ3005 Artificial Intelligence at Nanyang Technological University.

 To run the command line version, type

 ```
 swipl InteractorPrologOnly.pl
 ```

And then type

```
?- start.
```

Similarly, if you want to run the web version, type

```
swipl Server.pl
```

And then visit [http://localhost:8000/](http://localhost:8000/) to use the AI doctor.

Thanks for using!


text:
# Changing the tag of a release

Evil, I know but:

1. `git tag -d v1.0.0-beta.4`
2. `git tag -a v1.0.0-beta.4 -m "Examples for Substance 1.0 Beta 4 release."`
3. `git push -f --tags`

# Rebase onto

When you want to rebase onto a force-pushed branch.

`git rebase --onto new_base old_base mybranch`

This selects the commits between old_base and mybranch and replays them on top of new_base.

repository: substance/cheat

repo_name: substance/cheat


text:
---
title: "OpenGL Issues"
date: "2019-01-01"
path: "/docs/userguide/opengl_issues/"
meta_title: "BioDynaMo User Guide"
meta_description: "This is the openGL issues page."
toc: true
image: ""
next:
    url:  "/docs/userguide/opengl_issues/"
    title: "OpenGL Issues"
    description: "This is the openGL issues page."
sidebar: "userguide"
keywords:
  -opengl
  -issues
  -problem
  -code
---

Turn on debugging output and run simulation again

```bash
export LIBGL_DEBUG=verbose
./simulation
```

Check OpenGL information:

```
glxinfo | grep -i OpenGL
```

Driver information:

```
lspci | grep -i "vga compatible"
```

## Faulty OpenGL version detection with software renderer

https://python.develop-bugs.com/article/10118323/paraview+needs+higher+OpenGL+in+Mesa
When using llvmpipe/gallium with mesa, a software renderer, the OpenGL capabilities can be incorrectly detected. The simplest way to fix that is to force it :

```
MESA_GL_VERSION_OVERRIDE=3.3 ./bin/paraview
```

Simulation output:

```
...
libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so
libGL: Can't open configuration file /home/testuser/.drirc: No such file or directory.
libGL: Can't open configuration file /home/testuser/.drirc: No such file or directory.
libGL error: failed to open drm device: No such file or directory
libGL error: failed to load driver: i965
libGL: OpenDriver: trying /usr/lib64/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/swrast_dri.so
libGL: Can't open configuration file /home/testuser/.drirc: No such file or directory.
libGL: Can't open configuration file /home/testuser/.drirc: No such file or directory.
ERROR: In /home/testuser/bdm-build-third-party/paraview/VTK/Rendering/OpenGL2/vtkOpenGLRenderWindow.cxx, line 793
vtkXOpenGLRenderWindow (0x4ba2790): GL version 2.1 with the gpu_shader4 extension is not supported by your graphics driver but is required for the new OpenGL rendering backend.	 Please update your OpenGL driver. If you are using Mesa please make sure you have version 10.6.5 or later and make sure your driver in Mesa supports OpenGL 3.2.

ERROR: In /home/testuser/bdm-build-third-party/paraview/VTK/Rendering/OpenGL2/vtkShaderProgram.cxx, line 445
vtkShaderProgram (0x4b93030): 1: #version 120
...

```

`glxinfo`
```
glxinfo | grep -i OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: llvmpipe (LLVM 6.0, 256 bits)
OpenGL version string: 2.1 Mesa 18.0.5
OpenGL shading language version string: 1.30
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 2.0 Mesa 18.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 1.0.16
OpenGL ES profile extensions:
```

## Mount host graphics card to container

https://stackoverflow.com/questions/42438619/run-chromium-inside-container-libgl-error

```bash
# for intel cards
docker run --device=/dev/dri:/dev/dri ...
```

repository: BioDynaMo/biodynamo

repo_name: BioDynaMo/biodynamo


text:
# CLI

[[toc]]

## Usage

### Running the CLI

The Grind CLI is triggered via `yarn cli`. Running `yarn cli --help` will show you a list of available commands to run.

### Getting Help

All commands support passing a `--help` command to tell you more about the command, including options and arguments available.

```shell
$ yarn cli make:thing --help
Usage:
  make:thing [options] <name?>

Arguments:
  name               The name of the thing.

Options:
  --param[=PARAM]    Name of the param to create the thing for
  --help             Display this help message
  --no-ansi          Disable ANSI output

Help:
  Create a thing
```

## Creating Commands

### Command Generator

The fastest way to create a new command is by using the command generator via `grind make:command` provided by the [Grind Toolkit](installation#toolkit).

You can invoke `make:command` with a few different arguments:

- `grind make:command MakeThingCommand` will create `app/Commands/MakeThingCommand.js`, but will not infer a command name.
- `grind make:command --command=make:thing` will also create `app/Commands/MakeThingCommand.js` and will set the command name for you.
- You can also pass both a class name and a command name at the same time — though this isn’t advised.

### Naming Conventions

All command names should be formatted as `namespace:name`, in the above example `make` is the namespace and `thing` is the name.

Class names should follow the command name with a Command suffix, so `make:thing` becomes `MakeThingCommand`.

### Command Class

Once you’ve triggered `make:command`, a class is generated for you that looks like this:

```js
import { Command, InputArgument, InputOption } from 'grind-cli'

export class MakeThingCommand extends Command {
  // Name of the command
  name = 'make:thing'

  // Description of the command to show in help
  description = 'Command description'

  // Arguments available for this command
  arguments = [
    new InputArgument('requiredArg', InputArgument.VALUE_REQUIRED, 'This argument is required'),
    new InputArgument(
      'optionalArg',
      InputArgument.VALUE_OPTIONAL,
      'This argument is optional',
      'Default value',
    ),
  ]

  // Options for this command
  options = [
    new InputOption(
      'someOption',
      InputOption.VALUE_OPTIONAL,
      'This is an optional option',
      'Default Value',
    ),
    new InputOption('quiet', InputOption.VALUE_NONE, 'This is a flag option'),
  ]

  run() {
    // Build something great!
  }
}
```

#### name

The name of the command is what you invoke via `yarn cli`, so for MakeThingCommand we would invoke it by calling `yarn cli make:thing`

#### description

The description is what shows up in `yarn cli --help` for your command. You should provide a short, concise description of what your command does.

#### arguments

Arguments are data passed into your command, in the order they’re declared.

#### options

Options are flags passed to your command via two leading dashes, if options expect a value, the value is passed by using an equals sign:

- `yarn cli make:thing --some-option` gives `some-option` a value of `true`
- `yarn cli make:thing --some-option=grind` gives `some-option` a value of `grind`

Options can be passed in before or after arguments and will not affect the order in which arguments are processed in.

#### run

The `run` function is what is called when your command is invoked. CLI supports `run` returning a promise for asynchronous support.

#### ready

You can also add a `ready` function to your command to perform startup tasks to be run when your command is invoked, but before `run` is called. CLI supports `ready` returning a promise for asynchronous support.

For instance, you may want to `ready` to load data to be used during the execution of the command:

```js
import { FS } from 'grind-support'

export class MakeThingCommand extends Command {
  ready() {
    return FS.readFile(this.app.paths.base('countries.json')).then(data => {
      this.countries = JSON.parse(data)
    })
  }
}
```

Now when `run` is called, it will already have `this.countries` populated.

## Retrieving Argument/Option Values

You can retrieve arguments and options via the `argument` and `option` functions.

#### argument

```js
const value = this.argument(name, fallback)
```

- `name` — The name of the argument to get the value of
- `fallback` — Optional parameter to provide a default value for optional arguments. Passing a value here for a required argument will have no effect, since the your command won’t execute unless all required arguments are satisfied.

#### option

```js
const value = this.option(name, fallback)
```

- `name` — The name of the option to get the value of
- `fallback` — Optional parameter to provide a default value for an option not provided

## Prompting for Input

You prompt the user for input via the `ask` and `confirm` functions.

#### ask

```js
this.ask('What is your name?').then(answer => this.comment(`Hello ${answer}`))
```

The `ask` function takes a single `question` parameter, which is then outputted to the user, and returns a promise. The promise will resolve with the user’s answer to the question.

#### confirm

```js
this.confirm('Are you sure you want to proceed?', false).then(answer => /* … */)
```

The `confirm` function is a helpful wrapper around `ask` for asking binary questions. The first parameter is `question`, which is outputted to the user. The second parameter is `defaultAnswer`, the `defaultAnswer` answer is used when the user provides no response and just hits enter.

`confirm` will accept accept the following user answers as `true` (case-insensitive):

- true
- t
- 1
- yes
- y

All other input from the user will be evaluated as `false`.

## Writing Output

The Command class has the following methods available for writing output to the terminal:

```js
info(...message) // Outputs default text color
comment(...message) // Outputs as blue text
warn(...message) // Outputs as yellow text
error(...message) // Outputs as white text with a red background
success(...message) // Output as green text
```

These methods simply call the same method on `app.cli.output`, which itself redirects to the global `Log` class. For more information logging and providing your own logger, see the [Logging documentation](logging).

## Default Commands

Grind’s providers ship with a bunch of default commands to help make development easier.

### Assets

Assets includes the `assets:publish` and `assets:unpublish` commands to help precompile your assets during deployment. See the [Assets documentation](assets#deployments) for more information.

### CLI

As noted above, the CLI includes a built in `make:command` command to generate commands for you.

### Controllers

You can generate controllers via `make:controller`. You can also pass a `--resource` flag to generate a full resource controller.

### Database

The database provider includes a number of commands for migrating and seeding the database:

- `make:migration` – Creates a migration file
- `make:seed` – Creates a database seed file
- `migrate:current-version` – Displays the current migration version
- `migrate:latest` — Runs all outstanding migrations
- `migrate:rollback` — Reverts the last set of migrations performed
- `db:seed` — Runs all seed files to populate your database

See the [Migrations & Seeds documentation](migrations-seeds) for more information.

### ORM

ORM has a single `make:model` command that generates model classes for you. See the [ORM documentation](orm) for more information.

repository: grindjs/grindjs

repo_name: grindjs/grindjs


text:
# Symantec Endpoint Protection

Using the Symantec Endpoint Protection REST API to manage a SEP environment. Documentation for the REST API is available here: [https://apidocs.symantec.com/home/saep](https://apidocs.symantec.com/home/saep).

Need to determine the APIs to target for reading / writing in a SEP environment. This approach could be used to read from a SEP environment for health checks or documentation.

repository: KnowNo/SymantecEndpointProtection

repo_name: KnowNo/SymantecEndpointProtection


text:
# PippinDebugging

[![Cocoapod](http://img.shields.io/cocoapods/v/PippinTesting.svg?style=flat)](http://cocoapods.org/pods/PippinDebugging)

In-app debug utilities for `Pippin` components that support it, and other helpful third part tools.

repository: TwoRingSoft/Pippin

gha_language: Swift

repo_name: TwoRingSoft/Pippin


text:
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). This project attempts to match the major and minor versions of [stactools](https://github.com/stac-utils/stactools) and increments the patch number as needed.

## [Unreleased]

### Added

- Metadata Asset on STAC Collection.

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- Metadata URL on STAC Item.

## [0.2.4]

### Added

- STAC raster extension to STAC Items
- STAC file extension to STAC Items
- Colour map on COG
- Ensure that the no_data value is set properly
- STAC proj extension fields to STAC Items
- Updated with contents of the template repo (a231a37275b0590e759d7114c4d6c7f685453c22)

### Deprecated

- Nothing.

### Removed

- Nothing.

### Fixed

- Collection file name is now `collection.json` [#15](https://github.com/stactools-packages/nrcan-landcover/pull/15)

repository: jamesvrt/nrcan-landcover

gha_language: Python

repo_name: jamesvrt/nrcan-landcover


text:
### Docker NEO Privnet (Advanced: Custom Setup)

Now that you have installed Docker for Mac, we can download the ```neo-privnet-docker``` project from Github.
I suggest using my fork for Mac users, located here: https://github.com/cwitchger/neo-privatenet-docker or you can download the full version here: https://github.com/CityOfZion/neo-privatenet-docker. The primary differences are the config files for the neo-cli nodes. I have also added a script to make generating GAS a little easier.

To build, start building the Docker image:
```
cd neo-privnet-docker
./docker-build.sh
```

> **Note:** You can add the flag ```--no-cache``` when running ```docker-build.sh``` to skip docker's local cache and build the container from scratch.

While the container is being built, here are a few commands that may be useful:
* List all active Docker containers: ```docker container ls --all```
* Remove Docker container: ```docker container rm <container ID or image name>```
* Start Docker container: ```docker container start <container ID or image name>```
* Stop Docker container: ```docker container stop <container ID or image name>```
* Help with Docker commands: ```docker --help```

Once the Docker image is finished being built, you should see: **Successfully tagged neo-privnet:latest**

To start the container, run:
```
./docker_run_and_create_wallet.sh
```
This will also create a wallet with all of the NEO on the Private Net, as well as a little GAS to work with.

After a few minutes you should see this message:
```
Copying wallet file and wif key out of Docker container...

--------------------

All done! You now have 2 files in the current directory:

  neo-privnet.wallet .. a wallet you can use with neo-python (pwd: coz)
  neo-privnet.wif ..... a wif private key you can import into other clients

Enjoy!
```

#### Check Node Status
In your ```neo-privnet-docker``` folder, you should see a newly added file called: ```neo-privnet.wallet``` You will be using this wallet in the next step.

To check that the nodes are running, connect to the container:
```
docker exec -it neo-privnet /bin/bash
```
> **Note:** You connected to a bash editor for the container so you can explore using all of your favorite Linux commands.

To see the console output for the nodes that are running, execute:
```
screen -ls
```
> **Note:** To troubleshoot a node, you can connect to that screen using: ```screen -r node1```

---

#### Creating NEO GAS to Work With
**cwitchger/neo-privatenet-docker fork**

* If you are using the fork I created, execute the script to create more NEO GAS:
```
docker exec -it neo-privnet /bin/bash /neo-python/generate_gas.sh
```
This will call the script for generating GAS an additional 10 times to create enough GAS to deploy a few Smart Contracts. This will run for several minutes; however, you can continue with this tutorial in a different terminal window.

**CityOfZion/neo-privatenet-docker Fork**
* If you are using the standard image, connect to bash terminal:
```
docker exec -it neo-privnet /bin/bash
```
Change the permissions of the file so that it is executable, and execute:
```
chmod 755 claim_gas_fixedwallet.py
./claim_gas_fixedwallet.py
```

---

**Next Section:** [NEO Python CLI](6.neo-python-cli.md)

**Previous Section:** [Simple NEO Docker Setup](5.1.simple-neo-docker.md)

repository: cwitchger/neo-development-docs

repo_name: cwitchger/neo-development-docs


text:
# alarms

Fetch alarms from the last 24 hours

## Installation

```bash
npm install -g @metasys/alarms
```

## Usage

You can fetch alarms from a metasys server.

```bash
$ alarms -u joesmith -h adx-server
Password: ************
...............................................................................
.........................................
```

## Command Line Options

```text
  -u, --username    The username of the account to login as
  -p, --password    The password of the account to login as
  -h, --host        The server to login into
  -f                The name of a file that contains the username,
                    password, and host information
```

Assuming you have a file named credentials.json that looks like this

```json
{
  "username": "joesmith",
  "password": "zjds83jsldja",
  "host": "my-adx"
}
```

You can invoke the program like this:

```shell
alarms -f credentials.json
```

## Output

The alarms that are fetched are stored to the `output/` directory where you ran the program.

repository: michaelgwelch/alarmsjs

repo_name: michaelgwelch/alarmsjs


text:
# Tech primer oppenheimer

## Supply chain and key components

### Electronics industry supply chain
---
1. **Foundry and A&T** (晶元代工/半导体芯片生产线/封装测试）
	- Foundry and Assembly and Test
	- Perform manufacturing of semiconductor devices
	- Examples include TSMC（台积电）SMIC (中芯国际) UMC ASE and Amkor
	- **_Upstream_**
2. **Semiconductor vendor**
	- Perform chip design and marketing
	- _Some manufacture in-house (Intel), some uses foundry and A&Ts (Qualcomm)_
	- Sell directly to OEMs, ODMs or EMS and sell to distributors
	- Examples include Intel, TI, Qualcomm
	- **_Upstream_**
3. **Semiconductor distributors**
	- Carry inventory to help smooth supply chain
	- handle import logistics to simplify international shipments
	- reach smaller customers that the chip vendor cannot service directly
	- Examples include Avnet and Arros
4. **Electronics Manufacturing Services (EMS)**
	- Perform manufacturing on behalf of OEMs
	- Sometimes also handle procurement
	- Examples include Flextronics and Jabil
	- **Upstream**
5. **Original Device Manufacturer (ODM)**
	- Simliar to EMS but one step further
	- Take over design, procurement and manufacture
	- Contractor does not own IP over product
	- Can partner with OEM or SPs who perform marketing and distribution
	- Examples include Hon Hai, BenQ, Compal and Quanta
6. **Original Equipment Manufacturer (OEM)**
	- Electronics providers who design and market branded products to end customers and SPs
	- Various vertical integration models
		- Some do everything from chip design and manufacturing all the way to direct sales to customers
		- Others focus on marketing and some aspects of design
	- Examples include HP, Dell, Apple, Cisco, Nokia, Sony, Samsung etc
	- **Midstream**
7. **Equipment distributor**
	- Help OEM reach customers
	- Service individual retailers and selling directly to customers
	- Examples include CDW and Ingram Micro
	- **Downstream**
8. **Electronics retailer**
	- Best Buy Walmart etc
	- **Downstream**

###Lithography and Moore's Law 光刻和摩尔定律
---
**Lithography** is a general term used for the set of processes that transfer the transistor array and interconnect design from the mask onto the silicon wafer. It describes the level of “smallness” the manufacturing process can achieve, which determines the size of the transistors on the die. Smaller transistors can lead to:

- Faster speed as electrons move quicker in between
- Cheaper devices as more transistors per square inch lead to smaller die size
- Lower power consumption as less electricity is needed

**Moore's law** is primarily driven by a  dvancement towards finer lithography, which enables smaller and smaller transistors

- Number of transistors on a chip **_double about every 24 month_**
- First observed by Intel co-founder Moore
- In addition to the building of transistor density, each new lithography generation usually brings 0.7x minimum feature scaling, 1.5x faster transitor switching speed, reduced chip power and reduced chip cost
- [ ] **any chance to replicate chart with my own data?**

###Manufacturing segments
---

1. **_Integrated Device Manufactuers (IDM)_**
	- 自己设计 自己生产
	- Typically mature vendors dealing with high volume products
	- Have operating and cyclical leverage
	- Examples include Intel, TI, Samsung, Toshiba
	- IDMs enjoy high margins in the upward cycle as their fixed costs do not change, but suffer low margins in the trough of the cycle as capacity goes unused
	- This effect should not be underestimated, as fixed costs (including depreciation and fixed material and labor costs) can run as high as 80% of semiconductor manufacturing costs
2. **_Fabless_**
	- 自己设计 代工生产
	- More margin and stability as well as low capex
	- Examples include Broadcom, Qualcomm, NVIDIA, Xilinx, Marvell
	- Fabless companies can gain share vs. IDMs in downturn
		- wafer costs for them will decline while unit costs for IDMs rise with declining output
	- Fabless will lose share at the peak of the cycle (because of the opposite effect)
3. **_Foundries and Assembly and Testers_**
	- 不设计 只生产
	- Very high capex (tens of billions US$)
	- Examples cinlude TSMC, Global Foundries, UMC, Samssung, SMIC

###Foundries strategies 晶元代工策略
---

Rising cost of semiconductor lab have made outsourcing more cost-effective. Major foundries have **OUTPACED** semiconductor industry revenue growth for the past sevel years.

- 半导体行业2015年industry revenue **US$333 billion**
- 晶圆代工行业2015年industry revenue **US$48.8 billion**, 15% of total semiconductor industry
- 2015年晶圆代工行业销售额分布
	- TSMC (台积电) 54.3%, up from 47% in 2010
	- Global Foundries 9.6%, down from 12% in 2010
	- UMC 9.3%, down from 14% in 2010
	- Samsung 5.3%
	- SMIC (中芯国际) 4.6%

###Assembly and test strategies 封装测试策略
---

Trend in outsourcing also benefited back-end (A&T) providers. IDMs often keep back-end production in-house but fabless companies ususally outsource.

- 半导体行业2015年industry revenue **US$333 billion**
- 晶圆代工行业2010年industry revenue **US$22 billion**
- _2010_年封装测试行业销售额分布：
	- ASE Group 16%
	- Amkor 12%
	- Siliconware Precision 9%
	- STATs ChipPac 7%
	- PowerTech 5%

##Industry Fundamentals

### Industry fundamentals - demand
---

- Electronics industries totaled US$1.4 trillion in 2010
	- 28% data processing equipment
		- PCs 42%
		- Diskdrives 10%
	- 27% communication equipment
		- Handsets 55%
		- Telecom infrastructure 17%
	- 19% consumer electronics
		- Appliances 39%
		- Other consumer 26%
	- 26% others
		- Industrial 48%
		- Automobile 26%
		- Aerospace 26%

- Semiconductor
	- US$300 billion market in 2010
	- 22% of total Electronics market
	- chipmakers increasingly include more system IP into their device.
		- Chip prices increasingly include software components
	- Chipmakers mostly have pricing power, OEMs have been subject to tough competition
	- OEM increasingly use outsourcing / inventory management to control costs
	- OEM is also charging service fee in addition to manufacturing

### Industry fundamentals - supply
---

- Supply mostly dependent on wafer fab capacities
	- A wafer fab will need multi billion dollars to build
- Very challenging to match demand / supply and produce ahead of time
- Semiconductor in general is a supply-driven industry with average 4-6 years cycle

#### Evolving cycle
- Since 2001 bust, the growing use of foundries by fabless and IDMs has removed leverage	from semiconductor business models
- Diviersifcation of end market lessens dependence on PC cycles
- Implications:
	- New cyles are more based on inventory than supply
	- Shorter cycles with shallower ups and downs
	- Gross margin less relevant
	- Memory cycles more independent from the broader semiconductor cycle
	- As long as macro economy is healthy, even in weak fundamental period revenue can grow.
	- 开始集体外包给foundries (台积电)
- **过去是完全生产供给导向，现在是库存供给导向**

### Industry fundamentals - sales
---

- Annual sale of US$300 billion in 2010.
- Contraction in 2008 and 2009 led to revenue falling below US$250 billion
- Structural changes during that recover have **_replaced the supply-driven cycle with inventory-driven cycle_**.
- More consistent and manageable growth rates observed since

### Industry fundamentals - ASP and shipping units
---

- Cycles become shorter (2-3 years)
- in downturns, shipping units are likely the same but ASPs will fluctuate

### Industry fundamentals - Capacity utlisation
- Key measure of supply: **_Capacitiy utilisation_**
	- It also provides the link between units and ASPs
	- Utilisation is tracked for front end (wafer processing) / assembly and testing, but front end utilisation is most important because:
	- Cycle times for the front end are longest
	- Most difficult to add and remove front end capacity
	- front fabs most expensive
	- In high demand season, both volume and price are upward lifted
	- In low demand season, both volume and price and downward lifted

### Industry fundamentals - Capital Spending
---

- Estimated to be 23% - 25% of semiconductor revenues
- Increased outsource has shifted supply risk to the foundries whoare a lot more prudent and rational about spending because they have industry-wide perspective
- Helped shift supply-driven cycles to inventory-driven cycles
- Helped bring stability with the semiconductor capital equipment industry, which historically has been **_more drmatically cyclical_** than the semiconductor industry itself.

### Industry fundamentals - Gross margin
---

- Gross margin for the industry is in mid-40% range
- Outsourcing have stablized margin volatility since the 2000 bubble
	- Depreciation accounts for a major portion of COGs
	- Gross margin tend to rise and fall with capacity utilisation rates
	- Outsourcing really helped margin stablisation, even in the 2008-2009 correction, industry gross margin remain at just below 40%

### Industry fundamentals - Operating margins
---

- Opearting margin historically averaged under 15%
	- R&D + SG&A accounts for 25% - 30% of revenue
	- Dropped negative in 2009 but recovered quickly
	- Even in downturn companies remain heavily invested in R&D

### Industry fundamentals - Receivables & Inventories

- Receivable turnover days average 40 days, dropped from ~50 days in early 2000
- Inventories have risen over the past few years from 75 days to 78 days
	- OEMS are reluctant to hold inventories
	- rise in outsourcing allows vendors to hold more inventory with less risk
- More important inventory is the inventory downstream in OEMs, EMS and distributors. This is the **_KEY variable_** driving the **_cyclicality_** of the industry.
	- When inventories run too low, OEMS tend to double-book in order to guarantee supply to meet demand
	- When inventories run too low, OEMs tend to push out orders.
	- PC and Server oem inventories are continuously trending down - near 15-20 days from 50 days in 2000
	- HDD inventory days also tend to be relatively low - near 25 days.

### Industry fundamentals - debt
---

- debt to equity mostly around 20%
	- primarily concentrated in the hands of IDMs and oursourcers.
	- fluctuations tend to be driven by equity instead of debt
	- buy-backs and debt recapitalization was prevalent in 2007 resulting in a higher debt to equity

## Market Segments

### Market Segments - Device types
- Analog / 模拟信号
	- Deal directly with outside feedback (voltages / currents / charge) .
	- Transitors designed to manipulate voltages and currents
	- Well suited to process real-world signals, electronic patterns are used to directly represent the original signal
	- 通过电压、电流变化直接对应外界真实信号反馈
- Digital / 数字信号
	- 以0和1代表外界电压/电流信号是否存在
	- 大量应用于进一步处理计算，可将模拟信号转为数字信号后进行压缩、差错等操作
- Mixed Signal / 混合信号
	- 混合模拟和数字信号

- What a device IS:

	- Discretes, Optoelectronics and Sensors
		- All non-integrated circuit semiconductor devices
		- Discrete is a single transistor in package
		- Sensors is a discrete device that measures real-world inputs
		- Optoelectronics produce or measure light
		- 非集成的单一单元，晶体管，感应器，发光器
	- Analog
		- Process real-world signals using electroic voltage patterns that represent the signal
		- Include SLIC (standard linear components)
		- ASSPs (application-specific analog ICs)
		- 处理真实世界信号，包括单一原件和特定原件
	- Microcomponents
		- Digital processors
		- include microprocessors (MPUs) 大脑
		- microcontrollers (MCUs) 计算
		- digital signal processors (DSPs) 处理信号
		- 微信号数字处理器
		- 需将模拟信号转成数字信号后才能处理
	- Logic
		- Non microcomponent digital logic
		- ASIC (custom logic)
		- ASSPs
		- FPGA (programmable logic)
		- display drivers
	- Memory
		- store data either in RAM or ROM

- What a device DOES:

	- Analog processing
		- 处理真实世界信号
	- Digital processing
		- 处理数字信号，编译信号，压缩解压缩
	- System procesors
		- 系统层面控制电信号，包括所有的微处理器
	- Memory
		- 储存
	- System enabling device
		- 电源、开关、时钟、感应器等等

| End Market application  | Analog Processors | Digital Processors | System Processors | Memory | System enabling devices
|:------------- | :---:| :---: | :---: | :---:| :---: |
| **Computing** |
| Desktop PC | Graphic Interface, sound interface, Ethernet PHY | Chipset, Graphic Processor, Sound Processor | Microprocessor | DRAM ROM Flash | Power ICs, clocks, switches, discretes |
| Notebook PC | Graphic/Sound interface, Ethernet PHY, WLAN/Bluetooth | Chipset, graphics processor, sound processor, WLAN/Bluetooth baseband / MAC | Microprocessor | DRAM, ROM, Flash | Power ICs, clocks, switches, discretes
| HDD | Read channel, preamp, motor driver | Servo asic, hard disk controller | Microcontroller | DRAM, SRAM, flash | Magnetic sensors, power ICs, clocks, switches, discretes
| **Communications** |
| Wireless handset | Power amp, radio (RF/IF), audio codec, Bluetooth radio, analog baseband | Digital baseband (DSP), Bluetooth baseband/MAC, Camera image processor, Multimedia processor | Applications processor (DSP embedded) | Flash, SRAM, low-power DRAM | Sensors, power ICs, switches, clocks, discretes, LCD drivers |
| Ethernet switch | Ethernet PHY | Ethernet Mac, switch chipset, packet processor, programmable logic | MIPs/Powerpc Processors | SRAM / DRAM / ROM | Power ICs, clocks, switches, discretes

### Key semiconductor Competitors
---

####Top 10
- Intel (US)
- Samsung (Korea)
- Toshiba (Japan)
- Texas instruments (US)
- Renesas (Japan)
- Hynix (Korea)
- STMicroelectronics(Switzerland)
- Micro Technology (Japan)
- Qualcomm (US)
- Infineon / Qimonda (Germany)

### Semiconductor market
---

- 2010 market sales of US$298 billion
- 2015 market sales of US$335 billion, roughly 4% CAGR
- Most sub-segments are estimated to grow at 4% - 6% annually
- industry growth at 5% annualy

repository: lineudemonia/notes

path: /Reading notes/Tech primer oppenheimer.md

filename: Tech primer oppenheimer.md

repo_name: lineudemonia/notes


text:
# Lactarius rusticanus (Scop.) Burl. SPECIES

#### Status
ACCEPTED

#### According to
Index Fungorum

#### Published in
Mem. Torrey bot. Club 14: 27 (1908)

#### Original name
Agaricus rusticanus Scop.

### Remarks
null

repository: mdoering/backbone

repo_name: mdoering/backbone


text:
`mongospawn` is a tool to help spawn MongoDB resources given JSON Schema
specifications.

The primary near-term use case is support for the [National Microbiome Data
Collaborative (NMDC)](https://microbiomedata.org/) pilot project. In particular,
given a JSON Schema with all array-typed properties and with each array item a
`$ref` reference to one of the JSON Schema `definitions` (see [NMDC
example](https://github.com/microbiomedata/nmdc-metadata/blob/d93d5f33b41d55a270dd014c8c27b18a6e804375/schema/nmdc.schema.json)),
`mongospawn` can generate MongoDB `$jsonSchema` documents to apply as validators
for collections in a database that correspond to each of the original JSON
Schema's array-typed properties. MongoDB's implementation of JSON Schema does
not support `$ref`, `definitions`, etc., so `mongospawn` expands references to
generate appropriate per-collection schema documents.

In addition to generating derived schema documents, `mongospawn` can spawn new
databases/collections, with schema validation set, via the `pymongo` driver, and
can also manage access to the spawned resources via `mongogrant`.

## Setup
For development:
```
pip install -e .[dev]
```

To update dependency versions:
```
make update
```

To use pinned dependencies for reproducible testing:
```
make
```

# Usage

Example using [NMDC's JSON
Schema](https://github.com/microbiomedata/nmdc-metadata/blob/d93d5f33b41d55a270dd014c8c27b18a6e804375/schema/nmdc.schema.json):

```python
from mongospawn.schema import dbschema_from_file, collschemas_for
from pymongo import MongoClient

client = MongoClient()
db = client.nmdc_test

dbschema = dbschema_from_file("nmdc.schema.json")
collschemas = collschemas_for(dbschema)
for name in collschemas:
    db.drop_collection(name)
    db.create_collection(name, validator={"$jsonSchema": collschemas[name]})
    print(f"created {name} collection")
# created activity_set collection
# created biosample_set collection
# created data_object_set collection
# created omics_processing_set collection
# created study_set collection
```

Now, e.g. if you try to insert a non-conformant JSON document, a
`pymongo.errors.WriteError` will be raised:
```python
db.biosample_set.insert_one({"not_a_real_field": 1})
# => WriteError: Document failed validation...
```

repository: polyneme/mongospawn

repo_name: polyneme/mongospawn