text:
## 2.2.9

* Improve web platform support #13

## 2.2.8

* Improve class instance creation error handling #211

## 2.2.7+5

* downgrade dependencies to improve package compatibility

## 2.2.7+4

* downgrade dependencies to improve package compatibility

## 2.2.7+3

* (fix): `JsonMapper.copyWith` doesn't respect deep merge #209

## 2.2.7+2

* bump dependencies
* (fix): Add additional error handling for `discriminatorValue` mismatch errors #206

## 2.2.7+1

* bump dependencies
* (fix): Problem converting enum with following uppercase character #203

## 2.2.7

* bump dependencies

## 2.2.6+1

* #196 Allow to pass global default options for serialization/deserialization to `initializeJsonMapper` method

## 2.2.6

* #195 Deserializing with String discriminatorProperty throws JsonFormatError(FormatException)

## 2.2.5+3

* #193 (fix) downgrade dependencies to improve package compatibility

## 2.2.5+2

* pin analyzer 4.3.0 since further versions are incompatible with reflectable 3.0.9

## 2.2.5+1

* bump dependencies
* #191 Incorrect detection of circular reference if hashCode has been overridden

## 2.2.5

* bump dependencies

## 2.2.4+2

* #190 (fix) type 'Null' is not a subtype of type 'Object' when serializing Null element in List and Set

## 2.2.4+1

* #188 (fix) downgrade dependencies to improve package compatibility

## 2.2.4

* #187 (fix) defaultValue always overwrites the deserialized value

## 2.2.3

* #184 (fix) "It seems your class 'Uint8List' has not been annotated with @jsonSerializable" error when using `Uint8ListConverter`

## 2.2.2+1

* bump the dependencies versions

## 2.2.2

* #181 (fix) The `JsonProperty.name` support for aliases doesn't work as advertised

## 2.2.1+3

* bump the dependencies versions

## 2.2.1+2

* #178 (fix) Uncompilable `main.mapper.g.dart` when no classes has been annotated with `@jsonSerializable`

## 2.2.1+1

* format code

## 2.2.1

* #101 (fix) Deserialization fails on flutter web target when using generic types

## 2.2.0+1

* format code

## 2.2.0

* #176, #169 (feat) Performance optimizations, credits goes to [@kennelken](https://github.com/kennelken)

## 2.1.18

* #174 (feat) Pass field `name` prefix to work together with `flatten: true` attribute in `@JsonProperty` meta

## 2.1.17

* #171 (fix) It seems your class `_GrowableList<String>` has not been annotated with `@jsonSerializable`

## 2.1.16

* #168 (feat) Improve `fromMap` and `toMap` efficiency
* #166 (feat) Support `caseInsensitive` flag for string enum values defined using `EnumDescriptor`
* #167 Cover unbalanced types with getter/setter case with unit test

## 2.1.15

* #165 (feat) Support `delimiter` parameter for default Iterable converter

## 2.1.14

* #157, (feat) Serialize GET parameters object class to Uri. Brilliant basics

## 2.1.13

* generated adapter naming improved, lint warnings removed in generated code

## 2.1.12

* #159, (fix) Few minor fixes related to recursive objects processing

## 2.1.11

* #159, (fix) Proper support for nested parents in relative path reference to parent itself from nested object ".."

## 2.1.10

* #158, (fix) Local relative paths are not handled properly

## 2.1.9

* bump dart to `2.14.0`

## 2.1.8

* Remove local model packages from `dev_dependencies` to avoid penalties from pub.dev scoring algorithm

## 2.1.7

* #155, (feat) Introduce modularization, i.e. multi project setup is possible now. Model packages could be reused by different projects, flutter/web/etc.

## 2.1.6

* #150, (feat) Introduce<EMAIL_ADDRESS>&<EMAIL_ADDRESS>* #152, (fix) Nullable list throws exception on being serialized when null

## 2.1.5

* (feat) Treat `ignoreForSerialization: true` by default when parent ".." is referenced OR field value is injected
* #147, (feat) Custom values injection during deserialization call

## 2.1.4

* #143, (fix) Unhandled Exception: type 'Null' is not a subtype of type 'Object'
* #144, (feat) Relative path reference to parent itself from nested object ".."

## 2.1.3

* replace `pedantic` linter by `lints` package
* Annotate annotations with the supported target types, to minimize incorrect usage.

## 2.1.2

* #137, Support custom `Iterable` converter
* bump dart to 2.13

## 2.1.1

* #131, `@JsonProperty` annotation in superclass should be inherited for overriden getters
* `deserialize` method extended to accept json `String` or parsed json `Object`
* #133, #135, second pass for converter during deserialization has been removed, more speed for deserialization

## 2.1.0

* #128, Introduce `flatten` attribute to `@JsonProperty` meta
* #97, sound null safety

## 2.0.9

* #127, Proper support for positional constructor arguments

## 2.0.8

* #126, Inaccurate implementation for contexts comparison improved

## 2.0.7

* #125, Fix null collection case with value decorator
* #120, Support read only getters as discriminator property

## 2.0.6

* #121, Support deserialization from type variable

## 2.0.5

* #120, Support for subclass using a discriminator property `@Json(typeNameProperty)` => `@Json(discriminatorProperty)`
        For migration from old versions just replace all `typeNameProperty` by `discriminatorProperty`.
        Global option `DeserializationOptions.typeNameProperty` has been removed.

## 2.0.4

* improve pub score for static analysis

## 2.0.3

* improve pub score for static analysis

## 2.0.2

* update changelog

## 2.0.1

* add readme

## 2.0.0

* #97, null safety support

## 1.7.13

* #118, fix: Add defaultValue handling for `enumConverterNumeric`
* #77, fix: Flutter for Web: Dynamic call with too many arguments. Arguments: [Instance of 'NativeJavaScriptObject']

## 1.7.12

* #117, fix: Cached values from converters made more accurate in terms of different types

## 1.7.11

* #115, fix: Null pointer on Flutter AOT app build
* #114, introduce async init method `initializeJsonMapperAsync`

## 1.7.10

* #111, feat: Support for relative reference to parent field from nested object "../id"
* #112, feat: Introduce support for field aliases. `@JsonProperty(name: ['alias', 'fullName', 'name'])`
* #77, fix: Flutter for Web: Dynamic call with too many arguments

## 1.7.9

* #110, feat: Support for Enum `EnumDescriptor.defultValue` on unknown values during deserialization

## 1.7.8

* #108, #109, feat: Flags `JsonProperty.notNull` `JsonProperty.required` spanned over serialization / deserialization process consistently
* #110, feat: Support for `String` / `Num` Enum values mappings introduced

## 1.7.7

* #106, fix: Do not generate invalid code when there is no main entry point provided, in case of library package for instance.
* #107, fix: Unmapped properties contains inherited readonly entries with custom json name
* #108, feat: Introduced `JsonProperty.required` to mark field as mandatory to be present in the JSON payload
* #109, feat: Introduced `JsonProperty.notNull` to mark field as mandatory to be present in the JSON payload & cannot be NULL

## 1.7.6

* #104, fix: Custom converter results cache layer does not work as expected

## 1.7.5

* #103, feat: Mixins Deserialization support introduced

## 1.7.4

* #100, fix: Naming conflicts in generated file. Prefixes introduced

## 1.7.3

* #99, fix: builder crawling over exports statements improved

## 1.7.2

* #91, Enum values inherit CaseStyle from the parent serializable class or global option.
* #94, fix: Deserialization fails when using [enumConverterNumeric]

## 1.7.1

* **Breaking change** Custom converters contract changed. `JsonProperty` replaced by serialization/deserialization `context`. Allowing each custom converter instance to have diverse context information
* #90, Support deserialization to default enum value for unknown values

## 1.7.0

* **Breaking change** Enums handling changed, no more repetitive `@JsonProperty(enumValues: Color.values)`. Annotate local Enums and Register third party Enums once per application
* Issue #88 addressed. Refine imports in auto-generated `*.mapper.g.dart` so no name conflicts will be possible

## 1.6.5

* Introduced converters for `RegExp`, `Uri` types.
* Internal `JsonMapper` methods made private.
* Introduced cache layer on top of converters outputs, brings modest performance boost. #86.

## 1.6.4

* `enumConverterShort` is the default one for all Enums. More intuitive and compact.
* Attempt to fix #87. Crawling through local package sources for annotated classes.

## 1.6.3

* Improved incremental builds speed. From now on code regeneration in a `watch mode` will be triggered only when annotated classes affected. Issue #81 addressed.

## 1.6.2

* Fix incremental runs on builder

## 1.6.1

* Update docs, improve pub package score

## 1.6.0

* Own builder introduced, to support `List, Set, HashSet, UnmodifiableListView` iterables to slightly ease the pain
of manual adding value decorators per each model class. From now on, support for `List<T>, Set<T>` iterables will be
out of the box by default.
* `Duration` converter introduced

## 1.5.24

* Issue #82 proper fix, `@JsonProperty(ignoreForSerialization / ignoreForDeserialization)` flags introduced to make your code more explicit and obvious

## 1.5.23

* Issue #82 resolved, Pick up annotation from constructor parameter

## 1.5.22

* Issue #80 resolved, Serialization template should be picked up from level 0 only

## 1.5.21

* Issue #79 resolved, `@Json(processAnnotatedMembersOnly: true)` introduced

## 1.5.20

* Issue #78 resolved, double @JsonConstructor with different Schemes

## 1.5.19

* Issue #75 resolved, double converter invocation omitted in case of fields intersection between constructor arguments and public class fields.

## 1.5.18

* Optional short Enum converter introduced. "Black" instead of "Color.Black"

## 1.5.17

* Performance **4x** improvement.

## 1.5.16

* `caseStyle` property introduced on `@Json` annotation, assign caseStyle on a class level

## 1.5.15

* #63, #66, `Map<Enum, CustomType>` support improved

## 1.5.14

* #65<EMAIL_ADDRESS>handling bug fix

## 1.5.13

* #9, Map<K, V> support improved

## 1.5.12

* #64, Added support for class fields as of Map type having Enum as a Key or Value **AND initialized** via class constructor

## 1.5.11

* #60, Introduced ability to specify inline value decorators, complimentary to global registration as apart of an adapter

## 1.5.10

* #58, Introduced ability to customize default Enums converter via adapter.

## 1.5.9

* #53, Global serialization option `ignoreUnknownTypes` introduced as an alternative for Java Jackson's `@JsonIgnoreProperties(ignoreUnknown = true)`

## 1.5.8

* #47, Introduced support for `composition over inheritance`
using composition of `Generic<T>` with `T`.

## 1.5.7

* #49, Support for types `HashSet, HashMap, UnmodifiableListView, UnmodifiableMapView` as a subset of `dart:collection`

## 1.5.6

* #49, Enums support with Iterables(List, Set), Map enhanced.
* #49, Global option `typeNameProperty` introduced.
* #49, Global option `processAnnotatedMembersOnly` introduced.

## 1.5.5

* #47, Proper handling for annotated `Generics` classes.

## 1.5.4

* #46, Introduce default converter for Map<K, V>.

## 1.5.3

* Custom getter / setter methods support added.
* #41, Fix null pointer on Iterables processing.

## 1.5.2

* #36, Allow serialize same object instances same nesting level.

## 1.5.1

* Adapters management improved. Easily extend & configure mapper capabilities via modular approach.

## 1.5.0

* #34, Default Iterables converter introduced.
Partial solution to avoid value decorators approach for the cases when
it is possible to pre-initialize Iterable field with an empty instance.

## 1.4.4

* #33, Provide default values for `@JsonProperty(defaultValue: ...)`
* #35, SerializationOptions enriched with global `ignoreNullMembers` flag

## 1.4.3

* #32, Collect Unmapped Properties implemented

## 1.4.2

* #30, Support for RFC 6901 JSON pointer for mapping names/paths

## 1.4.1

* #29, List of Lists use case covered.

## 1.4.0

* Enhancement #21 implemented, support @JsonConstructor to pick appropriate
constructor for deserialization.
* Enhancement #23 implemented, support for field names casing options for serialization. [Pascal, Kebab, Snake, SnakeAllCaps]

## 1.3.5

* fix for #28
* Enhancement #22 implemented, support @JsonProperty annotation on constructor params when there is no associated field.

## 1.3.4

* Bump reflectable dependency to the latest stable

## 1.3.3

* Fix issue #26

## 1.3.2

* Fix special A/B inception case for #25

## 1.3.1

* Imports refactored, from now on *everything* is imported from a single
`import 'package:dart_json_mapper/dart_json_mapper.dart';` instead of several imports

## 1.2.10

* Optional `template` parameter added to `SerializationOptions`. Allows to render JSON on top of existing template map object.

## 1.2.9

* Introduced possibility to specify number of allowed circular references `@Json(allowCircularReferences: 1)`

## 1.2.8

* Schemes introduced. Scheme - is a set of meta annotations associated with common scheme id.
This enables the possibility to map *single* Dart class to *many* JSON structures.

## 1.2.7

* adopt pedantic for code style lints

## 1.2.6

* Introduced deep nesting for property names

## 1.2.5

* Introduced clone util method. Clone Dart objects made simple!
* Introduced support for public getters-only serialization

## 1.2.4

* fix converter resolution logic

## 1.2.3

* Fixnum support extracted as a standalone adapter library

## 1.2.2

* proper fix for issue #20, support for complementary "adapter" libraries added

## 1.2.1

* fix for issue #20

## 1.2.0

* Improved configuration for class hierarchies processing. [breaking change]
* fix for issues #19, #18

## 1.1.12

* A convenience toJson/fromJson methods introduced

## 1.1.11

* fix lint errors, update dependencies

## 1.1.10

* fix for issue #15

## 1.1.9

* proper fix for issue #9
* refactoring

## 1.1.8

* @JsonProperty.ignoreIfNull introduced, to skip null properties from processing

## 1.1.7

* Issues #10, #11 has been fixed

## 1.1.6

* Issue #9 has been fixed

## 1.1.5

* Map<String, dynamic> easing methods toMap/fromMap introduced.

## 1.1.4

* Issue #8 has been fixed

## 1.1.3

* Documented use case with Inherited classes derived from abstract / base class

## 1.1.2

* Issues #5, #6 has been fixed

## 1.1.1

* Issue #4 has been fixed

## 1.1.0

* Update build process, from now on relying on build_runner configured over build.yaml
* Issues #2, #3 has been fixed

## 1.0.9

* Added support for derived classes

## 1.0.8

* Fixnum types Int32, Int64 support added

## 1.0.7

* Iterable based types support enhanced

## 1.0.6

* Set based types support added

## 1.0.5

* Uint8List, BigInt types support added

## 1.0.4

* Value decorators support enhanced

## 1.0.3

* Value decorator introduced

## 1.0.2

* Added some docs
* Added test on ignored class field

## 1.0.1

* Improved Support for Map<K, V> type
* Added basic Support for dynamic type

## 1.0.0

* Positional constructor parameters support
* Support for Symbol, Map types
* More tests added

## 0.1.3

* Support Dart 2.0
* Support latest reflectable library changes
* Remove dependency on barback

## 0.1.2

* Converters registry introduced
* Error handling improved

## 0.1.1

* Converter auto detection based on field type
* Update pubspec for Dart 2.0

## 0.1.0

* Update readme
* Immutable classes serialization / deserialization support

## 0.0.9

* Tiny update to fix pubspec & readme

## 0.0.8

* Circular reference detection during serialization added

## 0.0.7

* Support Lists of Enums, Dates, Numbers etc.
* @JsonSerializable() => @jsonSerializable

## 0.0.6

* build & watch scripts added as a tooling for development time

## 0.0.5

* DateConverter & NumberConverter introduced
* Parameters for custom converter introduced

## 0.0.4

* Convert Enum values to string by default, to skip a disordered values drawback
with indexed enum values.
* Enum's does not have to be annotated, since almost all of them are parts of
third party libraries w/o access for modification.
* dateTimeConverter introduced

## 0.0.2

* Remove dependency on dart:mirrors.

## 0.0.0

* First published release.

repository: k-paxian/dart-json-mapper

gha_language: Dart

repo_name: k-paxian/dart-json-mapper


text:
# **Battery Electric Vehicle Model With Motor Cooling in Simscape**
Copyright 2021 The MathWorks, Inc.

This example models a battery electric vehicle with a cooling system for
the motor.  It is used to size mechanical, electrical, and fluid
components in the vehicle.  The vehicle executes a passing maneuver and
the speed, torque, and temperature measurements are used to assess if the
system requirements are met.

Open the project file BEV_Motor_Cooling.prj to get started.

This video explains this model and introduces you to modeling with Simscape:
* [Getting Started with Simscape](https://www.mathworks.com/videos/getting-started-with-simscape-1612443969016.html)

To learn more about modeling and simulation with Simscape, please visit:
* [Simscape Getting Started Resources](https://www.mathworks.com/solutions/physical-modeling/resources.html)
* Product Capabilities:
   * [Simscape](https://www.mathworks.com/products/simscape.html)
   * [Simscape Driveline](https://www.mathworks.com/products/simscape-driveline.html)
   * [Simscape Electrical](https://www.mathworks.com/products/simscape-electrical.html)
   * [Simscape Fluids](https://www.mathworks.com/products/simscape-fluids.html)
   * [Simscape Multibody](https://www.mathworks.com/products/simscape-multibody.html)

[![View Battery Electric Vehicle with Motor Cooling in Simscape on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/86957-battery-electric-vehicle-with-motor-cooling-in-simscape)

![](Overview/html/bev_motor_cooling_01.png)
![](Overview/html/bev_motor_cooling_02.png)

branch_name: refs/heads/master

extension: md

license_type: permissive


text:
---
layout: post
title: "Nginx"
description: ""
category:
tags: []
---
{% include JB/setup %}

## Installation on macOS
Run `brew install nginx --with-gunzip` produces:

```
==> Downloading https://nginx.org/download/nginx-1.12.1.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/nginx/1.12.1 --with-http_ssl_module --with-pcre --sbin-path=/usr/local/Cellar/nginx/1.12.1/bin/nginx --with-cc-opt=-I/usr/local/o
==> make install
==> Caveats
Docroot is: /usr/local/var/www

The default port has been set in /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.

nginx will load all files in /usr/local/etc/nginx/servers/.

To have launchd start nginx now and restart at login:
  brew services start nginx
Or, if you don't want/need a background service you can just run:
  nginx
==> Summary
🍺  /usr/local/Cellar/nginx/1.12.1: 8 files, 1MB, built in 29 seconds
```

license: MIT

gha_language: Ruby

gha_license_id: MIT


text:
# Upconverter1v3
Upconverter 125MHz v1.3 - Passive Upconverter Hardware Design for SDR

![Upconverter1v3 Picture](Upconverter-125MHz-ADE_Picture-Small.jpg?raw=true "Picture")

Converts signals in the [MF](http://en.wikipedia.org/wiki/Medium_frequency) and [HF](http://en.wikipedia.org/wiki/High_frequency) Bands (0.1MHz to 60MHz) to signals in the [VHF](https://en.wikipedia.org/wiki/Very_high_frequency) Band (125.5MHz to 175MHz). Intended for use in receiver applications with projects like [RTL-SDR](http://sdr.osmocom.org/trac/wiki/rtl-sdr).

Available from [NooElec](http://www.nooelec.com/store/ham-it-up.html) or [eBay](http://www.ebay.com/sch/i.html?_from=R40&_nkw=Ham+It+Up+Upconverter+v1.3&_sacat=0).

![Upconverter1v3 Diagram](Upconverter_Diagram-Small.jpg?raw=true "Diagram")

license: Unlicense


text:
# TCP Interface Module

## Introduction

This interface is under development. It is not yet ready for use.

Please review the [RS485](Interface_RS485.md) module documentation to see if this the appropriate module to use

repository: ngardiner/TWCManager

branch_name: refs/heads/main

gha_language: Python

gha_license_id: Unlicense

repo_name: ngardiner/TWCManager


text:
# TheRoleplayer - Discord Bot!
TheRoleplayer is a Discord Bot Developed By Exh0 And Remastered by RxFlex#7837 For Roleplay Community and testing purposes, This is a free and public bot that you can use either for your own personal use or for Roleplay Server.

## Setup
To Setup TheRoleplayer first open the example-config.json file and change the name to ``"config.json"`` (Make Sure to delete the first field called "delete-me") Now edit the ``"your-bot-token"`` to fit the field of your bots token (View the links on how to get your bots token through discords developer portal), Do the same with the prefix field (Default "/") And Name Field. Now open your terminal (Command Prompt Or VS Code Terminal) and run the following command

```
"npm i"
```

It will install all correct packages. Everything will now work correctly and your bot is setup, Feel free to star this Rep if you enjoy the bot.

## Links
[Install NPM/Node.JS Here](https://nodejs.org/en/)<br>
[How to get your bot token?](https://www.writebots.com/discord-bot-token/)

**THIS PROJECT IN NO LONGER MAINTAINED AND YOU MUST USE DISCORD.JS VERSION 12.5.3**

repository: nestorscarratt/TheRoleplayer-Bot

repo_name: nestorscarratt/TheRoleplayer-Bot


text:
(For support requests / bug reports, please complete the following - or delete if not applicable.)

**Summary of issue**

**The complete error message, including file & line numbers**

**Copy of your config/queue.php file **

**Software versions**
This Package:
Laravel:
PHP:
Operating System: Windows / Linux / MacOS

**Any other information**

repository: squigg/azure-queue-laravel

gha_language: PHP

repo_name: squigg/azure-queue-laravel


text:
# Configure Tair Writer {#concept_ynf_pzm_q2b .concept}

This topic describes the data types and parameters supported by Tair Writer and how to configure the Writer in both Wizard and Script mode.

## DataX3.0 Tair Writer {#section_i4h_2d4_q2b .section}

For more information about DataX2 tasks, see Tair configuration section in the Tair Writer in the synchronization center topic. For more information about the relationship between DataX2 and Tair configuration, see the last section of this document.

Tair is a high-performance, distributed, scalable and highly reliable NoSQL storage system. It supports Java, C/C++, and RESTful clients.

Message-Driven Bean \(MDB\) and Logic Data Bank \(LDB\) storage engines are available in the background. The MDB is a memory KV database similar to Memcache. The LDB is a LevelDB-based permanent storage engine.

Tair Writer imports data by writing data in MDB or LDB through universal interfaces. Use fastdump if you need to import large volume of data from ODPS-\> tair.

## Implementation {#section_jn2_gqh_p2b .section}

Tair Writer writes data read by the reader in Tair. The records are written one-by-one through four native API interfaces in a Tair client: PUT, prefixPuts, setCount, and prefixSetCounts.

In PUT and Counter modes, data is input in key-value pair format. Counter values must be non-negative integers. The pkey, skey, and value \(pkey + skey -\> value\) are input in prefixPuts and prefixCounters modes. The prefixCounter values must be non-negative integers.

## Type conversion {#section_axy_qd4_q2b .section}

Tair is a weak NoSQL database. Although, Java clients of Tair allow data serialization to be written as original, the system converts all data into strings, and then imports them to Tair in C++ and Java format.

## Parameter description {#section_amt_td4_q2b .section}

NOTE: To avoid parameter errors, do not set default values for any parameters. Required \(Yes\) parameters must be set. Some parameters can be set only in specific write modes \(six modes\). For example, required PUT parameters are required in PUT mode, which means these parameters can only be set in PUT mode. The system reports errors if the parameters set exceed or are less than needed.

|Parameter|Description|Required|Default value|
|:--------|:----------|:-------|:------------|
|languages|This parameter indicates the programming language used to interact with a Tair client, and currently C++ and Java languages are supported. You can specify this field based on the used Tair client. Tair and C++ clients are incompatible with Java clients in data writing. For example, after data is written into a target Tair system through the DataX TairWriter plug-in to access the table by using a Tair C++ client based on the subsequent business code, and enter "C++" to access the table by using a Tair Java client. Enter "java" to access the table by using a RESTful client.|Yes. You must enter either "C++" or "java"， which is case-insensitive.|None|
|Fielddelimiterc|Tair Writer writes data in tables in PUT mode and concatenates all non-key fields except for the first columns by using characters corresponding to the fieldDelimiter. Ensure that the fields corresponding to fieldDelimiter are excluded from your data. Do not use common characters, such as commas \(,\).|Mandatory in PUT mode.|None|
|skeyList|Tair Writer writes data in multiprefixput or multiprefixcounter mode. To specify a list of skey fields written, use a JavaScript Object Notation \(JSON\) list. Note: The number of columns extracted from the reader here should be less than 1 because the first column is a pkey.|Required in mutilprefixput/multiprefixcounter mode.|None|
|expire|The expiration time. If the value is 0, the data is never deleted. The expiration time is a duration in which data is stored in a Tair instance in seconds.|Yes|None|
|compressionThreshold|The compression threshold value, when a compressed Tair value exceeds the threshold size. This option sacrifices the CPU in exchange for network transmission efficiency and storage space. By default, the compressed data size is greater than 8 KB. You can raise the threshold, when bad machine performance generates many compressed logs that results in high DataX machine load and request timeout. Because C++ client does not support compression, you need to disable the compression function by setting the threshold value to 1,000,000. This threshold value setting is close to the maximum data size of 1 MB supported by the Tair client.|This is required when Java language is used.|None|
|deleteEmptyRecord|The method for processing null values in PUT mode. The key and value cannot be null in a Tair instance, with the exception of column 0 set as key. The other columns cannot all be null. If all values are null, the data will be marked as dirty data and skipped. However, if you set deleteEmptyRecord to true. All null data triggers the Delete operation so corresponding keys are deleted from the Tair instance. This is only valid in PUT mode.|This is required when the write mode is PUT.|None|
|timeout|The time-out for each request of the built-in Tair client, when the network connection is poor. To avoid too many timeout failures, the value must be configured to large.|No, the unit is milliseconds, and the default value is 2000 ms.|None|
|frontLeadingKey|Suffixes of all keys or pkeys are read from the source and then writes them in a Tair instance.|None|None|

-   frontLeadingKey

    -   Description: Suffixes of all keys or pkeys read from the source and then writes them in a Tair instance.
    -   Required: No
    For example:

    |ID|Name|Age|
    |:-|:---|:--|
    |1|lilei|24|

-   Writer type
    -   Description: Tair Writer supports the preceding six write modes. You need to select a mode based on the business demand. The following describes all writing modes because data is stored in key/value form rather than in table mode in a Tair instance. We set the first field of each record as the \(master\) key.
    -   Required: You must select PUT, prefixput, multiprefixput, COUNTER, prefixcounter, or multiprefixcounter.

1. In PUT mode, the first field of the source table is used as the Tair table key, and the other fields are concatenated in order into a string, and then the string is written. The concatenation connectors are characters specified based on fieldDelimiter configuration. For example:

|ID|Name|Age|
|::|:--:|:-:|
|1|lilei|24|

In PUT mode, the key is "1" and the value is "lilei,24" \(the "," is a configured delimiter\).

2. In prefixput mode, the data lines in a 3 \(column\) x N \(line\) table are written one-by-one through a prefixput interface. In this mode, a table must have three columns, where the columns are the pkey, skey, and value, respectively. In addition, you can convert a sparse table into a three-column table and store it in a Tair instance. This mode is also applicable to scenarios in which custom skeys are required.

For example:

|ID|Name|Age|
|:-|:---|:--|
|1|20150101|hanmeimei|

The pkey is "1", skey is "20150101", and the value is "hanmeimei".

3. In multiprefixput mode, M x N values in an M \(column\) x N \(line\) two-dimensional table are imported to a Tair instance, that is, the imported values can be found in the Tair instance through the line ID \(pkey\) and column name \(skey\). Data is written through a prefixPuts interface with the first field as pkey, the column name of the second field as skey, and the value of the second column as value.

For example, for a data line:

|ID|Name|Age|
|:-|:---|:--|
|1|lilei|24|

In multiprefixput mode, two skey values are written under one pkey value.

pkey-\>1, skey-\>name, value-\>lilei

pkey-\>1, skey-\>age, value-\>24

4. The Counter mode: The data imported to a Tair instance in the preceding modes is strings. Tair also supports Counter data. After Counter data is imported, Increase/Decrease operation can be performed through the incr/decr interface. This data is also supported by common counters and prefix counters. A Counter supports only two columns of data as follows:

|Page|PV|
|:---|:-|
|www.taobao.com|1000|

Write to Tair is key-\> page\_a'pv value-\> 100. Both negative and non-numeric values are skipped and classified as dirty data, and the key can only have 2 columns.

5. The prefixcounter mode is similar to the prefixput mode, in which three columns of data in a table are imported as pkey, skey, and value \(count\), respectively. For example:

|Data|Page|PV|
|:---|:---|:-|
|2015-03-20 18:00:00|www.taobao.com|1000|

The pkey is "2015-03-20 18:00:00", skey is "www.taobao.com", and value is "1000".

6. The chain pattern is similar to the row ID where the first column of each row is pkey, respectively, the 2, 3..N column per line. The N column names are respectively skey, with each row 2, 3...N column. The values of the N column are as value \(count\). For example:

|taobaoid|Age|Money|
|:-------|:--|:----|
|111xxx3|24|1000|

Two data pieces are written into a Tair instance:

pkey-\>1112223, skey-\>age, value-\>24

pkey-\>1112223, skey-\>money, value-\>1000

## Introduction to Wizard Mode {#section_cp2_wsh_p2b .section}

1. Synchronization configuration: Data source and destination.

![](images/8319_en-US.jpg)

Parameters:

-   Data source: The datasource in the preceding parameter description. Enter the configured data source name .
-   Import mode: The import mode is writerType.
-   Cluster configId: The configId in the preceding parameter description.
-   Cluster space number: The namespace in the preceding parameter description.
-   Threshold for automatic value compression: The compression threshold in the preceding parameter description.
-   Expiration time: The expire in the preceding parameter description.

2. Map fields:

![](images/8321_en-US.png)

NOTE: If the source or destination has a Lindon, HBase, or Tair data source, the fields do not require lines and can be edited and saved.

-   Manually edit source table field: Manually edit fields where each line indicates a field. The first and end blank lines are ignored.

3. Channel control

![](images/8322_en-US.png)

-   JVM parameter: A unit that measures the resources consumed during data integration, including CPU, memory, and network bandwidth. A JVM is the minimum operation capacity unit in a Data Integration task. It represents a unit of data synchronization processing capability given limited CPU, memory, and network resources.
-   Concurrent job count: The maximum number of threads used to concurrently read/write data into the data storage media in a data synchronization task. In Wizard Mode, configure a concurrency for the specified task on the wizard page.
-   The maximum number of errors indicates the maximum number of dirty data records.

## Introduction to Script Mode {#section_hy1_dys_q2b .section}

The following is an example of script configuration. For more information about parameters, see Parameter Description.

```
{
    "type": "job",
    "version": 2.0 ", // version number
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType": "Tair", // plug-in name
            "parameter":{
                "skeyList":[
                    "seller_nick",
                    "lq3d_rate_n14d"
                ],
                "isFullImport":"0",
                "language": "java", //client language
                "fieldDelimiter": "," //Delimiter of each column
                "userName": "",
                "frontLeadingKey": "",
                "timeout": "2000", // timeout
                "compressionThreshold": “128”, // value automatic to compress threshold
                "configId": "counter", // cluster configid
                "expire": 19000, // expiration time
                "namespace": "", // cluster space number
                "writerType": "put", // import Mode
                "deleteEmptyRecord": "false"
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "jvmOption": "-Xms1024m -Xmx1024m",//JVM memory
        "errorLimit": {
            "record": 2315467 "// Number of error records
        },
        "speed": {
            "concurrent":29,
            "throttle":false,//False indicates that the traffic is not throttled and the following throttling speed is invalid. True indicates that the traffic is throttled.
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}
```

## Plug-in features {#section_im5_vjt_q2b .section}

-   Write operation in a Tair instance is idempotent. Previous data is overwritten to prevent redundant Write operations.
-   Task rerun and failover: Because the Write operation in a Tair instance is idempotent, failover for a single task is supported. That is, if Write operation fails, DataX restarts subtasks to retry \(a maximum of 10 retries supported\). However, the system retries only in PUT and counter modes.
-   Data limit: Indicates the length limit of the key and value data in a Tair instance. A key contains 1 to 1024 bytes, and a value contains 2 to 1,000,000 bytes. Data that exceeds the length limit is processed as dirty data. Therefore, this data needs to be intercepted through the filter function in advance.

url: https://raw.githubusercontent.com/xiaoyeziji/ide/eb85bd3aadb35d40931fc8b13803b685b65693c7/intl.en-US/User Guide/Data integration/Task configuration/Configure writer plug-in/Configure Tair Writer.md

repository: xiaoyeziji/ide

filename: Configure Tair Writer.md

repo_name: xiaoyeziji/ide


text:
---
hrs_structure:
  division: '1'
  volume: '4'
  title: '13'
  chapter: 211F
  section: 211F-1
type: hrs_section
tags:
  - Government
menu:
  hrs:
    identifier: HRS_0211F-0001
    parent: HRS0211F
    name: 211F-1 Definitions
weight: 36005
title: Definitions
full_title: 211F-1 Definitions
---
**PART I. GENERAL PROVISIONS**

**§211F-1 Definitions.** As used in this chapter:

"Board" means the board of directors of the Hawaii strategic development corporation.

"Corporation" means the Hawaii strategic development corporation, except where the context clearly indicates another meaning.

"Direct investment" means an investment by the corporation in qualified securities of an enterprise to provide capital to an enterprise.

"Economic development project" means an endeavor related to industrial, commercial, or advanced technology-based agricultural enterprise. Economic development project shall not include that portion of an endeavor devoted to the construction of housing.

"Enterprise" means a person with a place of business in Hawaii which is, or proposes to be, engaged in business in Hawaii, provided that the endeavor shall not be devoted to the sale of goods at retail, construction of housing, or tourism- related services.

"Minority-owned businesses" means businesses at least fifty per cent owned, controlled, and managed by socially or economically disadvantaged persons.

"Person" means a sole proprietorship, partnership, joint venture, corporation, or other association of persons organized for commercial or industrial purposes.

"Professional investor" means any bank, bank holding company, savings institution, trust company, insurance company, investment company registered under the Federal Investment Company Act of 1940, financial services loan company, pension or profit-sharing trust or other financial institution or institutional buyer, licensee under the Federal Small Business Investment Act of 1958, or any person, partnership, or other entity of whose resources a substantial amount is dedicated to investing in securities or debt instruments and whose net worth exceeds $250,000.

"Qualified security" means any note, stock, treasury stock bond, debenture, evidence of indebtedness, certificate of interest or participation in any profit-sharing agreement, preorganization certificate of subscription, transferable share, investment contract, certificate of deposit for a security, certificate of interest or participation in a patent or patent application, or in royalty or other payments under such a patent or application, or, in general, any interest or instrument commonly known as a "security" or any certificate for, receipt for, or option, warrant, or right to subscribe to or purchase any of the foregoing.

"Seed capital" means financing provided for the earliest stage of business development, including but not limited to developing a working prototype, preparing a business plan, performing an initial market analysis, or organizing a management team.

"Venture capital investment" means any of the following investments in a business:

(1) Common or preferred stock and equity securities without a repurchase requirement for at least five years;

(2) A right to purchase stock or equity securities;

(3) Any debenture or loan, whether or not convertible or having stock purchase rights, which are subordinated, together with security interests against the assets of the borrower, by their terms to all borrowings of the borrower from other institutional lenders, and that is for a term of not less than three years, and that has no part amortized during the first three years; and

(4) General or limited partnership interests. [L 1990, c 110, pt of §3; am L 1994, c 264, §4; am L 1997, c 64, §1]

repository: SamMade/BlueAndKrabby

repo_name: SamMade/BlueAndKrabby


text:
# VS Code Extensions

- C/C++ (from Microsoft)
- CMake Tools
- Native Debug

# Building

## Basic Prerequisites

1. CMake 3.16+.
2. SDL2, including supplemental libraries: (platform-specific instructions for acquiring are given below)
   - SDL2_Image
3. C++ compiler that is highly compliant with the C++14 or higher standard.
   - Need at minimum `std::make_unique` support.

## Windows

### Get SDL2

SDL2 version 2.0.10 is already version-controlled in this repo, so nothing further needs to be done. If a different version is desired or you simply want to redownload the libraries, keep reading.

1. Download the _MSVC (Visual C++)_ **development libraries** from the SDL2 [download page](https://www.libsdl.org/download-2.0.php) to an arbitrary location. MinGW is not currently supported.
2. Unzip the zip archive and copy the `lib`, `include` and `COPYING.txt` files/folders to `3rdParty/SDL2/Windows/`. This is the location in which CMake searches to find SDL2 on Windows.

#### TODO: SDL2_Image

### Get LuaJIT

LuaJIT binaries are already version-controlled but just in case you need to do this again, here are the steps.

1. Download the latest stable release ZIP of LuaJIT from [the website](https://luajit.org/download.html). At the time of writing, the version used was [2.0.5](https://luajit.org/download/LuaJIT-2.0.5.zip).
2. Extract the archive and open `src/msvcbuilt.bat` in your favourite text editor.
3. Append `/DLUAJIT_ENABLE_LUA52COMPAT` to the `@set LJCOMPILE=` line.
4. Open up a tools-enabled cmd prompt targeting either x86 or x64 in the `src` folder and run `msvcbuild.bat`.
  - For a 32-bit build (x86), use the "x64_x86 Cross Tools Command Prompt for Visual Studio" cmd prompt.
  - For a 64-bit build (x64), use the "x64 Native Tools Command Prompt for Visual Studio" cmd prompt.
5. Copy the lua51.dll, lua51.lib and lua51.exp files to `3rdParty/lua/Windows/lib/x64` folder (do the corresponding step for x86).
6. Copy the lua.h, lualib.h, lauxlib.h, luajit.h files to `3rdParty/lua/Windows/include`.

You should be good to go.

### Build & Run

From the project root, run: `cmake -B build`. If you want to use a specific MSVC IDE version, do `cmake -B build -G <VS Version>`, for example for VS 2017, `cmake -B build -G "Visual Studio 15 2017"`.

1. Open up the generated solution file `build\pen31ope.sln` in the correct Visual Studio IDE version that corresponds to the version you used to generate build files in the step above.
2. Right-click on the `pen31ope` entry in the Solution Explorer and set it as the default startup target.
3. Press F5.

## macOS

### Get SDL2

1. Download the  **development libraries** from the SDL2 [download page](https://www.libsdl.org/download-2.0.php) to an arbitrary location. This is normally a `.dmg` file.
2. Open the `.dmg` and copy the `SDL2.framework` package to your desired macOS frameworks directory. Normally, this would be `/Library/Frameworks` but user-specific locations like `~/Library/Frameworks` are fine as well.

#### TODO: SDL2_Image

1. Download the **development libraries** from the SDL2_Image [download page](https://www.libsdl.org/projects/SDL_image/) to an arbitrary location. This should also be a `.dmg` file.
2. Open the `.dmg` and copy the `SDL2_Image.framework` package to the same macOS frameworks directory as done earlier.

### Build

1. From the project root, run: `cmake -B build`.
2. Change to the `build` directory and run `make`.

### Run

1. If not already in `build` directory, change to it: `cd build`.
2. Run `./pen31ope [params]`.

## Linux (Ubuntu)

### Get SDL2

```
sudo apt-get install libsdl2-dev
```

### C++ compiler

As of time of writing, your default g++ compiler might be version 4.8.x which doesn't appear to have complete C++14 support, such as for `std::make_unique` which is used a lot in the project. It is recommended to use g++ version 5+ or clang version 3.4+.

To obtain g++ 5+, if your Ubuntu distro is too old you'll have to install it from a PPA.
```
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5

# To set first priority to gcc-5/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 60 --slave /usr/bin/g++ g++ /usr/bin/g++-5
```

### Build

1. For GCC, run `cmake -B build`. For clang, run `CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake -B build`.
2. Change to the `build` directory and run `make`.

### Run

1. If not already in `build` directory, change to it: `cd build`.
2. Run `./pen31ope [params]`.


text:
# _Web Words_ – a browser extension

Show translated words on a tooltip on webpages with _[Google Translate](https://translate.google.com/)_ saved phrases.

![Plugin demo of hovering words](images/preview.gif)

## Features

- Auto-import your entire saved dictionary from _Google Translate_ with a single click.
- ~~Newly starred words automatically imported and open pages are getting updated. Works well alongside other [translate add-on](https://addons.mozilla.org/en-US/firefox/addon/to-google-translate/)s.~~

Are you missing something? Visit the _GitHub_ [projects page](https://github.com/SubZtep/web-words/projects) for roadmap(ish) and feel free to get involved.

## How It Works?

If you logged in with your _Google_ account, you are able to save translations with the star icon.

![Point to star location](./images/star_arrow.png)

After a while you'll have too many words and there is a possibility of memorizing them permanently immediately isn't on the _skills palette_ at the moment. The target audience.

> (-(-\_(-\_-)\_-)-)

**(-(–\_(—\_—)\_–)-)**

(—(‒\_(-_-)\_‒)—)

This plugin manages to access this word list. **When you open a webpage, [detect](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/detectLanguage) the language and search for word matches with your dictionary.** If successful, translate them and display on a popup on mouse hover.

At least try, the plugin is beta and under development. You are more than welcome to [report any issue](https://github.com/SubZtep/web-words/issues) and contribute.

Don't forget to run the local dictionary update regularly, which is happening once automatically after plugin installation. Click the icon on the _browser action bar_ and press the button.

![How to update dictionary](images/update_dict.gif)

Another purpose of this icon is to show the number of translated words on the current page.

## How To Install

### From source

Clone the project locally and build with _NodeJS_ or simply [download](https://github.com/SubZtep/web-words/releases) and unpack zip from releases. Add `dist/manifest.json` in the browser menu somewhere to add-ons in dev mode.

### One-clicker

Available at [**_Firefox_** add-ons](https://addons.mozilla.org/addon/web-words/) and [**_Chrome_** web store](https://chrome.google.com/webstore/detail/web-words/oafbnidobflmgdldmjjdiofefhofknbm).

 This plugin simply opens the Google Translate page and copy your starred words into your [local storage](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage), there is
no custom server call involved.

## FAQ

### Why?

Started for personal use. (⁄ ⁄•⁄ω⁄•⁄ ⁄)

### Supported Languages

All of them. It's up to the user's dictionary which languages are translate from.

The interface is english only atm but translatable easily.

---

🔗 [./fun.md](./fun.md) ٩(◕‿◕｡)۶

---

repository: SubZtep/web-words

gha_language: TypeScript

repo_name: SubZtep/web-words


text:
# Gather Panel

## About
Displays the servers gather rate.

## Configuration

 ```json
{
  "Default Gather": 1.0,
  "Panel Settings": {
    "Dock": "lefttop",
    "Width": 0.055,
    "Order": 0,
    "BackgroundColor": "#FFF2DF08"
  },
  "Panel Layout": {
    "Image": {
      "Url": "https://i.imgur.com/gV9P0cK.png",
      "Enabled": true,
      "Color": "#FFFFFFFF",
      "Order": 0,
      "Width": 0.33,
      "Padding": {
        "Left": 0.05,
        "Right": 0.0,
        "Top": 0.2,
        "Bottom": 0.05
      }
    },
    "Text": {
      "Text": "{0:0.00}x",
      "FontSize": 14,
      "TextAnchor": "MiddleCenter",
      "Enabled": true,
      "Color": "#FFFFFFFF",
      "Order": 1,
      "Width": 0.67,
      "Padding": {
        "Left": 0.05,
        "Right": 0.05,
        "Top": 0.05,
        "Bottom": 0.05
      }
    }
  }
}
 ```

### Gather Rate
The gather rate can be set by a plugin or in the config.
If no plugin is being used it will use the default gather rate in the config for everyone

### Global Gather Rate

If your plugin sets a global gather rate you can implement the hook below in your plugin to return what the current gather rate is

```c#
//Return the global gather for all player
private float GetGlobalGather()
```

To update the gather panel for every player you can call the following hook on GatherPanel

```c#
//Will update gather panel globally for all players
GatherPanel.Call("OnGlobalGatherUpdated");
```

### Player Gather Rate
If your plugin sets a player gather rate you can implement the hook below in your plugin to return what the players current gather rate is

```c#
//Returns the current gather for the player
private float GetGatherForPlayer(Baseplayer player)
```

To update the gather panel for a specific player you can call the following hook on GatherPanel

```c#
//Will update gather panel globally for all players
GatherPanel.Call("OnPlayerGatherUpdated" player);
```

repository: gragonvlad/MagicPanel

repo_name: gragonvlad/MagicPanel


text:
# _Ping-Pong Web App_

#### _This web application generates numbers and words, based on user input, Aug. 19, 2016_

#### By _**Andrew Merrell**_

## Description

_This web application takes a number, submitted by the user, and counts up to that number by 1, with the following exceptions:_
* _Numbers that are divisible by 3 are replaced with "ping"_
* _Numbers that are divisible by 5 are replaced with "pong"_
* _Numbers that are divisible by 15 are replaced with "ping-pong"_

## Setup/Installation Requirements

* _Visit https://github.com/amcmerrell/ping to view files for this project._
* _Open your terminal application of choice and use "git clone https://github.com/amcmerrell/ping" in the command line._
* _Navigate to the directory you cloned and open the index.html file in your web browser._
* _Visit https://amcmerrell.github.io/ping/ to view an example of the web application._

## Specifications

_When non-numerical values are submitted, it returns an error._
* _Example Input: "Hello"_
* _Example Output: "Please only enter numbers."_

_When values less than 1 are submitted, it returns an error._
* _Example Input: -1_
* _Example Output: "Please only enter numbers above 0."_

_It can count up to the user-provided number by 1._
* _Example Input: 2_
* _Example Output: [1,2]_

_Numbers divisible by 3 are replaced by "ping"._
* _Example Input: 6_
* _Example Output: "ping"_

_Numbers divisible by 5 are replaced by "pong"._
* _Example Input: 10_
* _Example Output: "pong"_

_Numbers divisible by 15 are replaced by "ping-pong"._
* _Example Input: 30_
* _Example Output: "ping-pong"_

_Results of entry are displayed to the user._
* _Example Input: 30_
* _Example Output: "Here are your results: 1, 2, ping..."_

_User can submit a new value and get new results._

## Known Bugs

_There are currently no known bugs for this project. If you discover any issues, you can reach me via the contact details below._

## Support and contact details

_If you have any questions about this project, please contact Andrew at<EMAIL_ADDRESS>
## Technologies Used

_HTML_
_CSS_
_Javascript_

### License

Copyright (c) 2016 **_Andrew Merrell_**

*Licensed under the MIT license.*

repository: amcmerrell/ping

repo_name: amcmerrell/ping


text:
This file descripts the operations for reproducing all results in "Section IV. Numerical Experiments of the SC22" paper "CA3DMM: A New Algorithm Based on a Unified View of Parallel Matrix Multiplication”. The results in the paper were obtained on the Georgia Tech PACE-Phoenix cluster (see [https://docs.pace.gatech.edu/phoenix_cluster/gettingstarted_phnx/](https://docs.pace.gatech.edu/phoenix_cluster/gettingstarted_phnx/) for detailed information of this cluster).

## Preparation

This directory contains two children folders: `job_scripts` and `figures`. Directory `job_scripts` contains all PBS and shell scripts for reproducing all test results. Directory `figures` contains all MATLAB scripts for plotting the figures. All these MATLAB scripts work with MATLAB R2020a.

Copy all files in this directory to a working directory, for example, `$HOME/CA3DMM-tests`. Set this working directory as `WORKDIR` in bash environment:

```bash
export WORKDIR=$HOME/CA3DMM-tests
```

## Figures 3 and 4

Clone and compile COSMA following [https://github.com/eth-cscs/COSMA/blob/master/INSTALL.md](https://github.com/eth-cscs/COSMA/blob/master/INSTALL.md). We only need to compile the CPU version in this section. Set the directory you cloned COSMA as `COSMA_DIR`. Then, copy `$WORKDIR/cosma_miniapp_cl.cpp` to `$COSMA_DIR/miniapp`, modify `$COSMA_DIR/miniapp/CMakeLists.txt`, replace line 4 with

```cmake
set(executables "layout_miniapp" "cosma_miniapp" "cosma_statistics" "cosma_miniapp_cl")
```

Enter `$COSMA_DIR/build`, run `make` again. Then, copy the executable files:

```bash
cp $COSMA_DIR/build/miniapp/cosma_miniapp    $WORKDIR/job_scripts/cosma_miniapp
cp $COSMA_DIR/build/miniapp/cosma_miniapp_cl $WORKDIR/job_scripts/cosma_miniapp_cl
```

Clone and compile CA3DMM following [https://github.com/scalable-matrix/CA3DMM/blob/main/README.md](https://github.com/scalable-matrix/CA3DMM/blob/main/README.md). We only need to compile the CPU version in this section. Set the directory you cloned CA3DMM as `CA3DMM_DIR`. Then, copy the executable file:

```bash
cp $CA3DMM_DIR/examples/example_AB.exe $WORKDIR/job_scripts/ca3dmm_example_AB
```

Clone and compile CTF following [https://github.com/cyclops-community/ctf/wiki/Building-and-testing](https://github.com/cyclops-community/ctf/wiki/Building-and-testing). We only need to compile the CPU version in this section. Set the directory you cloned CTF as `CTF_DIR`. Then, copy the executable file:

```bash
cp $CTF_DIR/bin/matmul $WORKDIR/job_scripts/ctf_matmul
```

Modify `$WORKDIR/job_scripts/fig3_mpi.pbs` and `$WORKDIR/job_scripts/fig4_mpi.pbs` based on the configuration of your cluster. These PBS files need to be submitted multiple times for different number of nodes.

For $m=n=k=50000$ tests, results should be copied from the script output and fill in files `$WORKDIR/figures/fig3_mpi_square.m` and `$WORKDIR/figures/fig4_mpiomp_square.m`.

For $m=n=6000, k=1200000$ tests, results should be copied from the script output and fill in files `$WORKDIR/figures/fig3_mpi_largeK.m` and `$WORKDIR/figures/fig4_mpiomp_largeK.m`.

For $m=1200000,n=k=6000$ tests, results should be copied from the script output and fill in files `$WORKDIR/figures/fig3_mpi_largeM.m` and `$WORKDIR/figures/fig4_mpiomp_largeM.m`.

For $m=n=100000, k=5000$ tests, results should be copied from the script output and fill in files `$WORKDIR/figures/fig3_mpi_flat.m` and `$WORKDIR/figures/fig4_mpiomp_flat.m`.

Each MATLAB file `$WORKDIR/figures/fig3_mpi_*.m` contains five 5-by-10 matrices with names `cosma_ncl_ms`, `cosma_cl_ms`, `ca3dmm_ncl_ms`, `ca3dmm_cl_ms`, and `ctf_ncl_ms`. In each of these matrices, each row are 10 running times in milliseconds. Rows from top to bottom correspond to the results of 8, 16, 32, 64, and 128 nodes.

The output of  `$WORKDIR/job_scripts/fig3_mpi.pbs` contains the results we need for `$WORKDIR/figures/fig3_mpi_*.m`:

* For each COSMA native layout running output, the line starting with "COSMA TIMES [ms]" contains the results we need for `cosma_ncl_ms`.

* For each COSMA custom layout running output, the line starting with "COSMA dmultiply runtime (ms)" contains the results we need for `cosma_cl_ms`.

* For each CA3DMM native layout running output, the line starting with "matmul only" contains the results we need for `ca3dmm_ncl_ms`.

* For each CA3DMM custom layout running output, the line starting with "total execution" contains the results we need for `ca3dmm_ncl_ms`.

* For each CTF native layout running output, the line starting with "All iterations times" contains the results we need for `ctf_ncl_ms`.

The output of  `$WORKDIR/job_scripts/fig4_mpiomp.pbs` contains the results we need for `$WORKDIR/figures/fig4_mpiomp_*.m`:

* For each COSMA native layout running output, the line starting with "COSMA TIMES [ms]" contains the results we need for `cosma_mpiomp_t`.
* For each CA3DMM native layout running output, the line starting with "matmul only" contains the results we need for `ca3dmm_mpiomp_t`.
* For each CTF native layout running output, the line starting with "All iterations times" contains the results we need for `ctf_mpiomp_t`.

The text output of running `$WORKDIR/figures/fig3_mpi_*.m` also contains results that `$WORKDIR/figures/fig4_mpiomp_*.m` needs. For example, the text output from running  `$WORKDIR/figures/fig3_mpi_square.m`  contains results needed by   `$WORKDIR/figures/fig4_mpiomp_square.m`. Text output row starts with "COSMA native layout" contains the data we need for the array `cosma_mpi_t`. Text output row starts with "CA3DMM native layout" contains the data we need for the array `ca3dmm_mpi_t`. Text output row starts with "CTF native layout" contains the data we need for the array `ctf_mpi_t`.

## Table 1

Copy executable file:

```bash
cp $COSMA_DIR/build/miniapp/cosma_statistics $WORKDIR/job_scripts/cosma_statistics
```

Run the test scripts to obtain the data for COSMA (upper-half of Table 1):

```bash
bash $WORKDIR/job_scripts/table1_cosma.sh
```

The results for CA3DMM (lower-half of Table 1) are available in the output files in Section "Figures 3 and 4". Multiplying the value after "Required memory per rank" by 8 (a double has 8 bytes), then dividing it by 1048576 (bytes to MB) gives the required value. For each CA3DMM running output, the line starting with "Rank 0 work buffer size" is the data we need.

## Table 2

Modify `$WORKDIR/job_scripts/table2_2048c.pbs` and `$WORKDIR/job_scripts/table2_3072c.pbs` based on the configuration of your cluster. Then, submit these two PBS files.

For COSMA, each "Runtime (s)" value in Table 2 is the average value of a COSMA output line starting with "COSMA TIMES [ms]" (need to divided by 1000 to convert it to seconds), each $p_m,p_n,p_k$ tuple is calculated based on COSMA output lines after the line "Divisions strategy".

For CA3DMM, each "Runtime (s)" value in Table 2 is the average value of a CA3DMM output line starting with "matmul only", each $p_m,p_n,p_k$ tuple is obtained from a CA3DMM output line starting with "Process grid".

## Figure 5

The results for Figure 5 are available in the output files in Section "Table 2". MATLAB script `$WORKDIR/figures/fig5_runtime_breakdown.m` contains four arrays with suffix `cosma_` for COSMA results and four arrays with suffix `ca3dmm_` for CA3DMM results. Each of these arrays has four elements: local matrix multiplication, replicating $A$ and $B$ matrices, reducing for the final $C$ matrix, and other operations.

For COSMA:

* Local matrix multiplication: the last profiling output, "computation" row, "WALL" column, value divided by the "CALLS" column in the same row.
* Replicating $A$ and $B$ matrices: the last profiling output, "copy" row, "WALL" column, value divided by the  "computation" row "CALLS" column.
* Reducing for the final $C$ matrix: the last profiling output, "reduce" row, "WALL" column, value divided by the  "computation" row "CALLS" column.
* Other operations: the "Runtime (s)" value in Table 2 minus the first three values in this array.

For CA3DMM:

* Local matrix multiplication: the output row containing "Local DGEMM", divide the value by 1000 to convert it from milliseconds to seconds.
* Replicating $A$ and $B$ matrices: add the output rows containing "Allgather A or B", "Initial shift", and "Loop shift wait", then divide the value by 1000 to convert it from milliseconds to seconds.
* Reducing for the final $C$ matrix: the output row containing "Reduce-scatter C", divide the value by 1000 to convert it from milliseconds to seconds.
* Other operations: the "Runtime (s)" value in Table 2 minus the first three values in this array.

## Table 3

Recompile COSMA, CA3DMM, and CTF with CUDA support. Copy executable files:

```bash
cp $COSMA_DIR/build/miniapp/cosma_miniapp $WORKDIR/job_scripts/cosma_miniapp-cuda
cp $CA3DMM_DIR/examples/example_AB.exe $WORKDIR/job_scripts/ca3dmm_example_AB-cuda
cp $CTF_DIR/bin/matmul $WORKDIR/job_scripts/ctf_matmul-cuda
```

Modify `$WORKDIR/job_scripts/table3.pbs` based on the configuration of your cluster. This PBS file needs to be submitted twice for 16 and 32 GPUs' results.

For COSMA, each "Runtime (s)" value in Table 3 is the average value of a COSMA output line starting with "COSMA TIMES [ms]" (need to divided by 1000 to convert it to seconds), each $p_m,p_n,p_k$ tuple is calculated based on COSMA output lines after the line "Divisions strategy".

For CA3DMM, each "Runtime (s)" value in Table 3 is the average value of a CA3DMM output line starting with "matmul only", each $p_m,p_n,p_k$ tuple is obtained from a CA3DMM output line starting with "Process grid".

For CTF, each "Runtime (s)" value in Table 3 is the value after "Avg time = " in a CTF output.


text:
## String interpolation

It is possible to combine the `echo` command with the `$(command)` special syntax which returns the output of another command as a string.

Let's understand this concept by trying out some examples:

__Output the current user together with a string:__

```
echo "The current user is: $(whoami)"
```

__Output the current working directory together with a string:__

```
# -e makes special character combinations not literal
# Note the \n, meaning a line-break
echo -e "The current working directory is:\n$(pwd)"
```

__Output any current working directory content:__

```
echo -e "The content of the $(pwd) directory is:\n$(ls)"
```

By using _string interpolation_, our text strings become dynamic. Meaning that we are not hard coding the output of certain commands.

gha_language: Shell


text:
# Non-sensitive log

## What does "Non-sensitive log" mean?

"Non-sensitive log" means that your application doesn't write any sensitive information to application log such as user's password, email address, credit card information.

## Why should we make our log "Non-sensitive"?

We must make our log "Non-sensitive" in order to prevent those sensitive information exposed accidentally.
Once those sensitive information exposed and malicious attackers get it, it will cause huge security incident.

For example, personal data is a sensitive log. This is a definition of "personal data" in GDPR:

> ‘personal data’ means any information relating to an identified or identifiable natural person (‘data subject’); an identifiable natural person is one who can be identified, directly or indirectly, in particular by reference to an identifier such as a name, an identification number, location data, an online identifier or to one or more factors specific to the physical, physiological, genetic, mental, economic, cultural or social identity of that natural person;

https://gdpr-info.eu/art-4-gdpr/


text:
# gill

List of GitHub issues fetched from multiple repositories.

## Usage

 1. Clone the files

  ```
  $ git clone https://github.com/strongloop/gill.git
  $ cd gill
  ```

 2. Create GitHub Personal Access Token

  Open [Settings > Applications](https://github.com/settings/applications)
  and create a new key.

 3. Optionally edit the list of repositories to fetch issues from
  (see index.html)

 4. Open the page

  ```
  $ open index.html
  ```

 5. Enter the github access token. The token will be saved in your browser's
    local storage.

repository: strongloop/gill

gha_language: HTML

repo_name: strongloop/gill


text:
---
title: Road Map, Tasks and Business Plan
path: todo
date: 2019-08-01
summary: My summary
tags: ['business plan', 'road map']
---

I have discovered how Markdown in conjunction with the fabulous Visual Studio Code is helping me structure my thoughts in ways that traditional todo apps and note taking apps don't achieve. That said though Bear, IA Writer and Ulysses are all really good and can be exported as Markdown. So I feel that these tools are all very closely aligned.

This document started life as "Todo" though I am now doubting this title, for it is a file where I dump my initial business ideas, thoughts, even tasks and from this I _incubate_ things from the tiny seeds of ideas into fully fledged projects, whether it is code or photography.

# Goals
- [ ] Develop income streams in addition to contracts

# Tasks

- [ ] what is vue fuse
- [ ] sign up for netlify analytics
- [ ] Tidy up this document and make it more useful and even shareable! I could scan through the content folder and map out what needs doing to complete the ideas I have come up with and a better structure for the folders that we can stick with more reliably. permalinks matter for SEO purposes
- [ ] /screencasts/how i edit this site - write the transcript and record the video :-)
- [ ] check up on my search console, looking like its ramping up and do some test searches on Google, review the clicks and what the keywords were for them

Hmmm - just drilled down to the clicks for this and it may be referring to my old site? However I could translate some of the old content from Wordpress to markdown, such as the red kites article?

- [ ] maybe delete properties in search console for nicklewis.net and start again

- [ ] Disqus would be great too

- [ ] softwarebyrob.com

- [ ] move my mugshot to the top, should be opener

- [ ] continue content development, find ways of managing it better, though doing it all through VS Code like this seems to be a beautiful way :-)

- [ ] Update Gridsome from 0.6.4 to latest and what changes does that bring update current blog journal
- [ ] I want to make my home page more of a personal tone, like Kent C dodds and to appeal as a mentor and teacher as much as a faceless business
- [ ] Slack channel HeadForCode
- [ ] Add something to any of my "incomplete" content pages that are there as placeholders to allow people to make contributions to them or to be updated when they are actually published?
- [x] google sitemap
- [x] google analytics - isn't this one done?
- [x] content requires it's own template but base it on blog to start with
- [x] change the tags for this article and get content covered by tags in the build
- [x] get the contact form working on Netlify
- [x] as soon as poss map my domain to this
- [ ] Snipcart purchase button underneath each image ;-) see if I can work out a way...
- [ ] blog content themes
- [ ] Stock photography diary
- [ ] https://snipcart.com/vue-ecommerce

- [ ] Tree shaking what is it?

- [ ] scss in vue
- [ ] tailwind Gridsome grids for photos
- [ ] vue-bootstrap, fabric, toast editor and wot-not

- [ ] nativescript vue sounds intriguing
- [ ] CV
- [ ] Github -projects to use
- [ ] JSFiddle, Codepen and what are the other great alternatives out there. Plus what we use on this site for code documentation
- [ ] Modify the readme for this project to reflect what I am doing with nicklewis.net
- [ ] change the graphics on my homepage to be more personal to me
- [ ] Patreon -for what?
- [ ] github sponsorship (what?)
  - [ ] develop gridsome/gatsby plugins perhaps for which I could seek sponsorship?
- [ ] https://gridsome.org/plugins/gridsome-plugin-netlify-cms
  - [ ] Install for this site and see how it goes
- [ ] SEO tags for these pages
  - [ ] Noted that nicklewis.photo searches for aldershot festival yield nothing, so need to master how this works

https://www.patreon.com/sindresorhus
https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository
https://www.patreon.com/FullyChargedShow
https://gridsome.org/plugins/gridsome-plugin-netlify-cms -there is a step-by-step guide on their site
Courses, tutorials etc

## Vue JS

Stuff to watch out for at the moment

- [ ] VueJS 2 -3 migration path
- [ ] vue-bootstrap

## GitHub

Notes on my GitHub account

https://github.com/LinusBorg/portal-vue
https://github.com/nickeblewis/nicklewis.net.7/settings -could set up sponsors if I wanted to

## Content for this website
- [ ] Article about my workflow with LR, external drives etc
### Development
### CMS
- [ ] Getting up and running with gridsome with netlify CMS (video screencast)
  - [ ] Vimeo for my coding screencasts
  - [ ] YT for photography, video and exploring the world
### Photography
- [ ] Drone
- [ ] Photographic techniques and LR included

### Next Location/Topic
- [ ] Can't decide!

Sunny 16?
Stories from my archives
Wes Bos and Scott Tolinski

# Applications I am planning to build

## HeadForCode

* I am going to base this on the copy of form builder that I have
* Will work out how I plan to use it, even if it is just for structural guidance and nothing else
* I plan to build a platform that could be used for other tutorial sites besides HeadForCode
* The application will allow you to build courses and publish them online to subscribing customers

### Databases, API and back-end?

I am thinking along the lines of something that outputs GraphQL

## Tina's site

* Not yet named but it could use the same tool that HeadForCode uses as described above??

# Nicklewis.net

So what we have right now is this lovely website....
- [ ] Chatbot I started with FB Messenger and Dialogflow -> carry on with it, what other options are there?

## Screencasts

- [ ] Short screencasts to show off stuff I think is great in the devtools I use, starting with VS Code and it's new breadcrumbs feature and how it works so well with markdown documents like this one - then tweet both the website link here and the actual video directly
- [ ] I review some of my favourite website UIs and I have just created a new page here that goes into further plans for this idea, as I want to shortlist the sites that inspire me and how I would go about creating similar UI features using Vue. See [Screencasts Todo list](/screencasts/todo)

# External Links
## startups for the rest of us: ep. 452
mentions:
- bootstrapped web - is that a podcast?
- clickcart
- interviewee is interesting, keeps 12 month cash up front
### ep. 453
- Ambassador?

## new stuff discovered

- Vue draggable which we use at clearbox https://github.com/SortableJS/Vue.Draggable/issues/324

## to find out

- npm list

# Form builder notes

I want to take away some stuff with me, I know I have until October but there is so much to glean from this project that I want to capture some notes of my own. A lot of this should probably go on a page of it's own but for now, I am dumping things on this markdown page.

## General
### External components documentation
* [axios](https://github.com/axios/axios)
* [axios-extensions](https://github.com/kuitos/axios-extensions)
* [bootstrap-vue](https://bootstrap-vue.js.org/docs/) - CSS Bootstrap in Vue style
* [kendo-vue-grid](https://www.telerik.com/kendo-vue-ui/components/grid-native/) - Kendo Grid
* [quill-image-resize-module](https://www.npmjs.com/package/quill-image-resize-module) - Image Resize Quill Module
* [v-calendar](https://github.com/nathanreyes/v-calendar) - Popup Calendar
* [vue-quill](https://www.npmjs.com/package/vue-quill) - Vue wrapper for [Quill](https://quilljs.com/)
* [vue-signature](https://www.npmjs.com/package/vue-signature) - SVG Signature
* [vue-drag-resize](https://github.com/kirillmurashov/vue-drag-resize/) - Drag and Resize
* [vue-js-toggle-button](https://github.com/euvl/vue-js-toggle-button) - Switch/Toggle Button
* [vue-tour](https://pulsar.gitbooks.io/vue-tour/)
* [vuedraggable](https://www.npmjs.com/package/vuedraggable) - Vue wrapper for [SortableJS](https://github.com/SortableJS/Sortable)
* [concurrently](https://github.com/kimmobrunfeldt/concurrently)
* [Toast UI Image Editor](https://github.com/nhn/tui.image-editor)
*    To run Tost UI Image Editor is necessary to install fabric dependency: npm install --no-save --no-optional<EMAIL_ADDRESS>
### PWA
* Vue-cli 3.0+ necessary, to install or update: npm install -g @vue/cli
* To install PWA: vue add @vue/pwa
* Basic tutorial: (https://naturaily.com/blog/pwa-vue-cli-3)
* For configuration [WorkBox] is used (internal dependency of @vue/pwa)
* Details: (https://developers.google.com/web/tools/workbox/guides/generate-service-worker/webpack)

### API MOCK
* In the development environment is used the JSON-Server, an REST APIs emulator
* Because of the way the API was built, a number of settings were required for the emulator to behave exactly like the API
* The file [src/mock_api/server.js] control the API emulator, and the file [src/mock_api/db.json] contains all api mock data
* [JSON-Server] project and documentation: (https://github.com/typicode/json-server)
* JSON-Server uses [db.low] to manage its database in JSON.
  * If be necessary to interact directly with JSON, more information can be found at: (https://github.com/typicode/lowdb)

## Future Implementation
* [vue-i18n](https://github.com/kazupon/vue-i18n/)

- [ ] All articles must have a front-matter with published set to true before the article becomes available publicy

repository: nickeblewis/theramblingphotographer

gha_language: Vue

repo_name: nickeblewis/theramblingphotographer


text:
---
uid: Guides.TextCommands.TypeReaders
title: Type Readers
---

# Type Readers

Type Readers allow you to parse different types of arguments in
your commands.

By default, the following Types are supported arguments:

* `bool`
* `char`
* `sbyte`/`byte`
* `ushort`/`short`
* `uint`/`int`
* `ulong`/`long`
* `float`, `double`, `decimal`
* `string`
* `enum`
* `DateTime`/`DateTimeOffset`/`TimeSpan`
* Any nullable value-type (e.g. `int?`, `bool?`)
* Any implementation of `IChannel`/`IMessage`/`IUser`/`IRole`

## Creating a Type Reader

To create a `TypeReader`, create a new class that imports @Discord and
@Discord.Commands and ensure the class inherits from
@Discord.Commands.TypeReader. Next, satisfy the `TypeReader` class by
overriding the [ReadAsync] method.

Inside this Task, add whatever logic you need to parse the input
string.

If you are able to successfully parse the input, return
[TypeReaderResult.FromSuccess] with the parsed input, otherwise return
[TypeReaderResult.FromError] and include an error message if
necessary.

> [!NOTE]
> Visual Studio can help you implement missing members
> from the abstract class by using the "Implement Abstract Class"
> IntelliSense hint.

[TypeReaderResult]: xref:Discord.Commands.TypeReaderResult
[TypeReaderResult.FromSuccess]: xref:Discord.Commands.TypeReaderResult.FromSuccess*
[TypeReaderResult.FromError]: xref:Discord.Commands.TypeReaderResult.FromError*
[ReadAsync]: xref:Discord.Commands.TypeReader.ReadAsync*

### Example - Creating a Type Reader

[!code-csharp[TypeReaders](samples/typereaders/typereader.cs)]

## Registering a Type Reader

TypeReaders are not automatically discovered by the Command Service
and must be explicitly added.

To register a TypeReader, invoke [CommandService.AddTypeReader].

> [!IMPORTANT]
> TypeReaders must be added prior to module discovery, otherwise your
> TypeReaders may not work!

[CommandService.AddTypeReader]: xref:Discord.Commands.CommandService.AddTypeReader*

### Example - Adding a Type Reader

[!code-csharp[Adding TypeReaders](samples/typereaders/typereader-register.cs)]

branch_name: refs/heads/dev

gha_language: C#


text:
# Online Photo Album
*Browser Technologies @cmda-minor-web 20-21*

![copy detect](https://github.com/StanBankras/browser-technologies-2021/blob/master/img/preview.png?raw=true)

## [Live demo](https://pe-photo-album.herokuapp.com/)

## Table of contents
* Wireframes + P/E
* Web API research
* Progressive enhancement idea
* Core functionalities
* Browsers I will test in

## Problem
How do we offer a user with a poor device or browser a working photo album application, and a user with a high-end device an amazing experience within the same app?

## Wireframes + P/E
### Empty state

This page is the empty state where the user clearly sees the purpose of the website. They can click to create a new album for their photos.

#### Functional/reliable layer: semantic HTML to use
* button

#### Usable layer extras
* Style the button to make it more prominent

### New album creation - step 1: details

This page is the first step of creating a new album. The user can enter a name and optionally a description.

#### Functional/reliable layer: semantic HTML to use
* input
* textbox
* button

#### Usable layer extras
* Improve the layout

#### Pleasurable
* Break down the process in steps

### New album creation - step 2: upload

This page is the second step of creating a new album. The user can upload images to their album.

#### Functional/reliable layer: semantic HTML to use
* input[type=file]
* figure with figcaption
* button

#### Usable layer extras
* Make the input clearer
* Layout of the uploaded images for better overview

#### Pleasurable
* No page refreshes needed as javascript can take care of uploading

### New album creation - step 2.1: image details

This page is within the second step of creating a new album. The user can attach meta data to the images they upload.

#### Functional/reliable layer: semantic HTML to use
* img
* textbox
* input[type=text]
* button

#### Usable layer extras
* Scale image so it's not too big

#### Pleasurable
* This page comes as a popup, so user doesn't leave the upload page

### New album creation - step 3: order

This page is the third step of creating a new album. The user can sort their uploaded images in the order they want.

#### Functional/reliable layer: semantic HTML to use
* button
* figure with figcaption
* input[type=number]

#### Usable layer extras
* Place image & its buttons next to eachother

#### Pleasurable
* Ordering happens without page refresh

### Albums overview

This page is the overview if the user has albums.

#### Functional/reliable layer: semantic HTML to use
* img
* h1/h2
* p

#### Usable layer extras
* Display first few images in a nice grid view

### Carroussel

Each album can be viewed in a carroussel

#### Functional/reliable layer: semantic HTML to use
* figure with figcaption
* button

#### Usable layer extras
* Display images inline so user can scroll through it

#### Pleasurable layer
* Javascript can allow for nice carroussel experience

## Web API research
At first, I was most likely going to research the [MediaStream Image Capture API](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Image_Capture_API) for this project, since I might be able to offer users the feature to capture an image and directly put it into their album.

However, I found out that mobile & tablet users already get the option to capture images immediately when they press to upload a file to a file input (that supports images). I didn't see this API as an enhancement to my app anymore

## Progressive enhancement idea
The goal of this project is to build a fully progressive enhanced website that works on many different browsers, with / without javascript and with / without CSS. Here's how I technically plan to achieve these so-called layers:

### 1. Functional
* Allow user to login so they can continue where they left off
* The user can upload and build their full photo album

### 2. Usable
* Photo dimensions can become the same width or height, so the editing and uploading process is a lot smoother and the user can see more at a glance
* Layout can be improved so that the interface will be more easily navigated through making for a more usable experience.
* Preview the photo albums in a neat way

### 3. Pleasurable
* Upload & delete images without seeing page refreshes happen: it removes some distraction and it feels like things happen more instantly.
* ~~Allow users to directly capture an image from inside the browser, so they can for instance build a photo album while on vaction, or digitalize an old photo book/album.~~ - Removed after switching to Drag & Drop API
* Drag and drop to order images instead of clicking buttons. Feels even more like the user is in control
* Automatically play albums as a slideshow

## Core functionalities
* Create new photo album (name & description)
* Add photos to the album
* Order photos differently in the album
* Edit existing albums
* Attach metadata to photos
* View the album in carroussel or slideshow

## Browsers I will test
* Browsers desktop: chrome & firefox
* Mobile: iOS & Android (safari & chrome)

**Web technology I will research**
* ~~[MediaStream Image Capture API](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream_Image_Capture_API)~~
* [Drag & drop API](https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API)

## Test results: how did I solve the problem?
[Find out about my test results in the wiki of this repository](https://github.com/StanBankras/browser-technologies-2021/wiki/Testing-my-app)

## Choices of code written
I want to be able to support as many browsers as possible, while still writing relatively modern code. At first, I wrote most of my code in ES6, as I am most used to that.

### ES6 specific features
After looking at ES6 features that I use, like `spread operators: [...array, ...array]` on [caniuse](https://caniuse.com/), I started to rewrite my code. The spread operator for example is not supported on Internet Explorer at all. I replaced my spread operator usage with this function I made:
```js
function addToArray(items) {
    const array = [];
    items.forEach(function(item) {
      item.forEach(function(subitem) { array.push(subitem) });
    });

    return array;
}
```
It gives me the same result, and I can support more browsers this way.

### Arrow functions
I'm a big fan of using arrow functions, because it means writing less and more clean code. Sadly, arrow functions are also not supported by IE, so I rewrote them to normal `function()`.

### Cutting the mustard
At some point, I don't want to endlessly refactor my code to support the most ancient browsers. My 'javascriptless' experience is good, everything works without it. That's why I chose to for instance keep my `forEach` in. It might not be supported in old IE, Chrome or Firefox browsers, but they can still use my app. I used a feature detection in Javascript to make this happen.

#### Check if browser supports promises
If not, disable all javascript code based on this boolean that uses them (fetch).
```js
function promisesSupported() {
  try {
    const promise = new Promise(function (x, y) {});
    return true;
  } catch (e) {
    return false;
  }
}
// https://stackoverflow.com/a/22517230

// in code:

if(promisesSupported()) {
```

#### Check if copy is possible
```js
if ('clipboard' in navigator) {
  const idText = document.querySelector('h1 span');
  const id = idText.innerText;
  const el = document.createElement('textarea');
  const body = document.querySelector('body');

  idText.innerText = id + ' (click to copy)';
  idText.classList.add('copy');
  idText.addEventListener('click', function() {
    el.value = id;
    document.body.appendChild(el);
    el.select();
    document.execCommand('copy');
    document.body.removeChild(el);
    alert('Copied your ID to your clipboard!');
  });
}
```

Only when clipboard is available, I will show the user that they can click to copy their ID. I don't want users to see a functionality, while when they go for the interaction, nothing might happen. This feature detect prevents that from happening.

![copy detect](https://github.com/StanBankras/browser-technologies-2021/blob/master/img/accessible/copy-detect.png?raw=true)

### CSS

#### Feature detection
In my CSS, I used a mediaquery to detect a touch/inaccurate device:
```scss
@media (pointer:coarse) {
  .image {
    form {
      opacity: 1;
    }
  }
  #image-order {
    opacity: 1;
    max-height: unset;
    max-width: unset;
    padding: 0.5rem 1rem;
  }
}
// https://medium.com/@ferie/detect-a-touch-device-with-only-css-9f8e30fa1134
```

#### Remove variables
At the start, I used `:root` variables in my CSS, however, I found out that they are not supported in latest versions of IE. As I don't want my users to see no colors, I removed my variables.

## TODO from 24-03
- [x] Add metadata to photos
- [x] Edit photo album
  - [x] Edit order
  - [x] Upload new photos
  - [x] Delete photo
- [x] Delete album
- [x] Edit photo metadata
- [x] Preview album in carroussel
- [x] Preview album in slideshow
- [x] Test browsers

## Acknowledgements
* [Drag & Drop API tutorial](https://www.youtube.com/watch?v=jfYWwQrtzzY)
* [Promise feature detection](https://stackoverflow.com/a/22517230)
* [Detect touch or inaccurate devices](https://medium.com/@ferie/detect-a-touch-device-with-only-css-9f8e30fa1134)


text:
![Build Project](https://github.com/tarikguney/command-core/workflows/Build%20Project/badge.svg?branch=master)
[![Coverage Status](https://coveralls.io/repos/github/tarikguney/command-core/badge.svg?branch=master)](https://coveralls.io/github/tarikguney/command-core?branch=master)
[![NuGet version (CommandCore.Library)](https://img.shields.io/nuget/v/CommandCore.Library.svg)](https://www.nuget.org/packages/CommandCore.Library/)
![GitHub](https://img.shields.io/github/license/tarikguney/command-core)

<img src="./command-core-logo.png" height="100px"/>

A simple command line parsing library that helps creating CLI apps using MVC pattern.

There are many command line parsing libraries out there, but most of them are unnecessarily complicated. Command Core library is built using a well-understood desing pattern: MVC. It cleanly separates the building blocks and makes the CLI development a scalable, extensible, and more importantly simpler endeavor.

## Check out WIKI to get started!

Check out the [WIKI page](https://github.com/tarikguney/command-core/wiki) to learn more on how to get started with CommandCore!

## Release Changelog

Check out this page to see what's changed with every new release: https://github.com/tarikguney/command-core/wiki/Changelog

## Quick Look

If you are familar with MVC pattern in any framework, you will find CommandCore very familiar with them. Look at below to see how a simple command like the one below can be represented in your .NET application:

```bash
helloworld.exe add --firstname tarik --lastname guney --haslicense -a 33 --id 1 2 3
```

```c#
[VerbName("add", Description="Allows to add a new person to the database.")]
[VerbName("add-person")]
public class Add : VerbBase<AddOptions>
{
    public VerbView Run(){
        return AddView(Options);
    }
}

public class AddView : VerbViewBase<AddOptions>
{
    public override void RenderResponse(){
        Console.WriteLine(
             $"FirstName: {_options!.FirstName}\n" +
             $"Last Name: {_options!.LastName}\n" +
             $"Has License: {_options!.HasLicense}\n" +
             $"Age: {_options.Age}\n" +
             $"Ids: {_options.Ids.Select(a => a.ToString()).Aggregate((a, b) => a + "," + b)}");
    }
}

public class AddOptions : VerbOptionsBase
{
    [OptionName("firstname")]
    [OptionName("fn"), Alias="f")]
    public string FirstName {get;set;}

    [OptionName("lastname")]
    public string LastName {get;set;}

    [OptionName("haslicense")]
    public bool? HasLicense {get;set;}

    [OptionName("age", Alias="a")]
    public int Age {get;set;}

    [OptionName("id")]
    public List<int> Ids { get; set; }

}
```

## Integrated IoC Container for Dependency Injection

CommandCore comes with an in-house IoC container named `CommandCore.LightIoC`, and it allows you to register your own services and inject them to the verb classes. Check out this page for more information: [Dependency Injection with LightIoC Container](https://github.com/tarikguney/command-core/wiki/Dependency-Injection-with-LightIoC-Container)

## Roadmap

1. Add routing mechanism, similar to Asp.NET Core MVC. Routing mechanism will help verbs to be routed to a desired class pattern for more complicated scenarios.
2. Add a middleware, which is similar to Asp.NET Core MVC request/response middleware features, which allows the developers to inject logic between a command is routed to its handling verb (controller).
3. Caching for faster type lookup. Currently, the entire assembly needs to be scanned for the types that match the verb. A caching mechanism can store away the detected types for faster retrival next time.

## Developed

by Tarik Guney with .NET Core 3.x.

repository: yildizseli/command-core

repo_name: yildizseli/command-core


text:
# Isabel's Tools

### Concept & Sketch

Colour Arrangement

## Color Picker
This colourpicker is meant for people who have some colour arranging to do. Sometimes a bookshelf looks disheveled and the way to make it look more tidy is to arrange them by colour! An overfull bookcase is much easier on the eye when books with the same cover colours are next to eachother. But how to arrange those books, there are so many options! With this tool you can see what an arrangment will look like without even touching your books.
![First sketches](Tool1.1.pdf)
![First sketches](Tool1.2.pdf)
![First sketches](Tool1.3.pdf)
![First sketches](Tool1.4.pdf)
![First sketches](Tool1.5.pdf)
![First sketches](Tool1.6.pdf)
![First sketches](Tool1.7.pdf)
![First sketches](Tool1.8.pdf)
![First sketches](Tool1.9.pdf)
![First sketches](Tool1.5.pdf)

### Prototype
![1. Menu](Tool-1.pdf)

![2. Taking photo](Tool1.pdf)

![3. Detecting colours](Tool2.1.pdf)

![4. Colours overview](Tool2.pdf)

![5. Settings shelf and books](Tool4.pdf)

![6. Different options](Tool5.pdf)

![7. Settings hue](Tool6.pdf)

![8. Settins saturation](Tool7.pdf)

![9. Settins brightness](Tool8.pdf)

![10. Outcome](Tool9.pdf)

## Your Own Tool
The Process (Time) Saving tool

### Concept
Whenever you are starting a new project, you know that you'll have a long way to go before you're saving your final drat. If you would want to save every single step in this process, you'll be spending way more time than necesarry with saving the drafts and giving them logical names. With this tool however, every step of your process will be saved logically with only a simple shortcut. So when you're finished with your project, you'll have a complete and accurate overview of your process.

### Sketch

[First Demo](https://youtu.be/Mq6XL97MuTI)

### Demo

[Demo](https://youtu.be/qmpadSlmjW0)

### How to install and use

For this tool the programme Automater is necessary

## Other Homework

repository: ArtezGDA/Tool-Assignment

repo_name: ArtezGDA/Tool-Assignment


text:
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/a9b6b30c89b34e728a7c3ededd15f948)](https://www.codacy.com/app/clindsa1/mega-nodsign-tools?utm_source=github.com&utm_medium=referral&utm_content=baltimorenode/mega-nodsign-tools&utm_campaign=Badge_Grade)

# Created by Christopher Lindsay
# Support project for nega-nodesign

# Bitmap_to_Logo
makes it easier to convert an image to an array for Load_Logo

# Image_Send

This Python code exercises the Recv_Screen() method of the sign

Requires: PIL, serial, and sys

"help" prints assistive statement explaining arguments

repository: baltimorenode/mega-nodsign-tools

repo_name: baltimorenode/mega-nodsign-tools


text:
# CSE 522 Lab 2
## Zimu Wang<EMAIL_ADDRESS>## Wei Weng<EMAIL_ADDRESS>## Diqiu Zhou<EMAIL_ADDRESS>

# Lab design:

## Layout of the data structure
As in step 4, the struct subtask contains everything the kernel module needs to know about this subtask, including task_struct pointer, hrtimer pointer, mother task pointer etc. All the rest of the fields, such as utilization, execution time are all in integer because it seems like it's unsafe to use float in kernel space. With the struct, we can pass the subtask struct itself to the thread functions without the need to design additional structures that stores the attributes.

## Static vs. Dynamic initialization
The lab instruction recommends using static initialization for all the task and subtask structs in the header file, and then
use those directly with careful indexing in the kernel module. When writing the lab, we felt rather restricted by the purely static approach. Certain fields in the subtask structs could be better calculated dynamically. For example, the calibrate.c
should be able to take in a list of task of arbitrary size, and perform the action accordingly. We initially wanted to declare all the lists of tasks and subtasks in the header file, and use extern keyword to make it visible to the kernel module. This approach led to some unknown symbol problem that we weren't able to fix. Instead, we moved every such structure and initialize and cleanup function to the main calibrate.c function, which also increased readability of the code.

## Initialize function
The key in initialization is creating two lists. The first list is the list of tasks that holds the subtasks. The second list is
a list (or actually 4 lists) containing the subtasks assigned to each core. During initialization, each subtask gets its hrtimer struct initialized, and fields such as cumulative_execution_time and execution_time calculated. We decided to calculate all the required fields in a single initialization step to make other parts of the code cleaner.

## Calibration mode design:

I set the initial loop iterations count of every subtask to be 1000.
I use an incrementor with the initial value of 2^14 and try to add the incrementor to the loop iterations count.
If the incrementor is too large, I divide the incrementor by 2 and try again.
If the incrementor is small enough so that the sum of the incrementor and the loop iterations count does not
run longer than the designated execution time, I add the incrementor to the loop iterations count.
I repeat the above process until incrementor becomes 0.

This implementation is easier than the binary search approach. I was trying to implement a simple binary search
for the loop iterations count, by setting the lower bound to 0 and the upper bound to INT_MAX. The running time
is too long. Therefore, I chose this implementation. Generally, this implementation is fast enough for our purpose.

I chose the initial loop iterations count to be 1000 because this is smaller than the loop iterations count for 1ms
of execution time, so I think this is small enough. I chose the incrementor to be 2^14 because this number is in the
order of the loop iterations count for 1ms of execution time, so I think this is large enough.

## Most of the rest of the code:
Most of the remaining code are relatively straightforward and are mostly following the instructions. Because we allocated memory for the hrtimer struct and core_list struct during initialization, we have to make sure those memory are properly freed when the module exits.

## Problems
We decided to use zero length array in both the struct task and struct core_list to be able to deal with variable length of subtasks. The get_parent_task function was not calculating the correct mother task that holds the list of subtasks because, I guess, the struct is not aligned correctly. What is the default memory layout for a zero length array? I thought that array is a continuous piece of memory where each item is stored directly next to each other.

## Test and evaluation
a. Use header_1.h to calibrate and then run. No deadlines are missed because each core is under-utilized.

b. Use header_2.h to calibrate and then run. Each second subtask in each task never gets to complete because they are preempted by the first subtask. Each first subtask in each task misses its deadline.

c. Try mis-configuring header_1.h and deadlines are met.

## Build instructions
module add raspberry

KERNEL=kernel7

LINUX_SOURCE=./../linux (assuming that calibrate.c and header files are in a directory that is in the same directory as "linux" directory)

make -C $LINUX_SOURCE ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- SUBDIRS=$PWD modules


text:
## bug tracker 3000
A bug tracking program similar to Jira, Jetbrain and Trello, following agile development principle. The project is done without any guidance from school or tutorial as we cover everything from design phase to testing phase. Project is done purely in Java and its library.

## Motivation
We want to reapply what we learnt back into an actual application. Bug Tracker is among the core tools for a team of developer to use and work with so we figure what better way to get used to the tools than creating one from scratch.

## Getting Started
These instructions will guild you through the inital setting up process and
highlight what the apps can do for you to explore on your own.
[////comming soon/////]

## Notable feature
- A functioning program built with Java
- Multiple IDE compatible (so far, we covered VS code, Netbean and Eclipse)
- GUI built with GUI builder(Netbean) and Window builder(Eclipse)
- Usage of java swing, awt, simple json, jplanner, mailx and activation JAR
- Able to send email to real account
-

## Components
- Project dropdown
- Team dropdown
- Sprint dropdown
- Alert button
- Current user section
- Log in/out section
- Setting section (Edit project, edit sprint, edit team, send email
- backlog board
- ontaken board
- ongoing board
- finish board

## Prequesite
[//////coming sooon////////]

## Recommendation
[Netbean Glassfish/Tomcat support bundle](https://netbeans.org/downloads/8.2/rc/)
[Eclipse]
[VS code]

## Installing and Running
Clone the remote to your local repo
```
git clone https://github.com/zahego/bug-tracker.git
```
open the project in your IDE of choice
run the file
explore the functionalities

## What you can do
- log in/out with user email and password stored in src/resources/database.json (something like email=1, password=a)
- change project to see task change
- change sprint to see task change
- add a new project
- press the "edit project" button then edit a project
- delete an existing project
- add a new sprint according to project
- press the "edit sprint" button then edit a sprint
- delete an existing sprint
- add a new team member
- press the "edit team" button then edit a team member
- delete an existing member
- press the "send email" button and deactivate the "edit team" to send an email to the selected member
- double click on a task to see full detail or edit
- edit a task
- delete a task
- add a task
- switch to comment history on the task card
- double click to delete a comment
- add a comment
-
- enjoy

## JAR file used
commons-lang3-3.10.jar
javax.mail.jar
JPlanner.jar
json-simple-1.1.1.jar

## Technologies stack
Java
Netbean GUI builder and Eclipse Window builder
Trello
Diagram.net
JAR file used:

## Contributors
Minh Tran, Trung Nguyen, Anh Tran

## License
This project is licensed under the MIT License

## Design
you can check out the intial design here:
UML diagram: https://drive.google.com/file/d/1q6iqi8hZuXaNJj5s0Y6tbExtOMd-TzOw/view?fbclid=IwAR3BAe3jTXcMc995OA0sG4f7rHAUo_qFwV-6ngOXUY46Rl6p0rjVk_gI7xo
Prototype design: https://drive.google.com/file/d/1TeberxzXPIz4sQhlqbp-a7RetwT_WZiH/view?fbclid=IwAR355erkOt5f4L0F3Rnm_9XC1B5xtPKCADKRFGB3dG6Pfi4HMgQTinj6c-c

## Progress
if you want to checkout further detail on how we delegate task and keep progress, visit our trello board:

## Challenges and resolutions
[//////////coming sooon/////////]

repository: zahego/bug-tracker

gha_language: Java

repo_name: zahego/bug-tracker


text:
# DEBUGINFO

## Summary

Notes on working with debuginfo-install

## Install Via Yum

```console
yum install -y yum-utils
```

repository: evanharmon/eph-headspace

repo_name: evanharmon/eph-headspace