Update business-metrics.md

<EMAIL_ADDRESS>Update to Composite SLA to include AZs.
I added an image which I could not upload. It is available to internal Microsoft users at https://microsoft-my.sharepoint.com/:i:/p/davenew/EZztUkdmq6dFv9IJeAoRoPcBZQ4zWMHvMKDCQ-AVJ8AU1Q?e=NZUk6e
Before selecting the "Create pull request" button:

Enter a meaningful title above^, using a prefix if necessary and keywords "New" or "Update" indicating the nature of changes.

Describe the summary, scope, and intent of this PR:
Added a section for Composite SLA with AZs and a line regarding the relationship between Composite SLA and financially backed SLA numbers

Insert links(s) to any related work item(s) or supporting detail:
(https://microsoft-my.sharepoint.com/:i:/p/davenew/EZztUkdmq6dFv9IJeAoRoPcBZQ4zWMHvMKDCQ-AVJ8AU1Q?e=NZUk6e)

AFTER YOUR PR HAS BEEN CREATED, expand this section for tips and additional instructions.
These are common guidelines for contributions across the repos managed by the Cloud Architecture Content Team (CACT). Some repositories may have additional specific requirements that are not listed here.
Guidance for all contributors

Topic
Guidance

Draft PR
If your PR will be a work-in-progress for more than a day or two, select the Convert to draft link in the upper right of the page (under Reviewers) to change it to a draft. For future reference, you can also do this using the Create pull request button drop-down during PR creation.

ms.date metadata
Don't update an article's "ms.date" metadata property unless you've done a full freshness review of the content. A full freshness review includes changes required to correct or improve the full technical accuracy of the article.Don't update "ms.date" if you're doing targeted changes to improve non-technical aspects of the article, such as editorial quality, art improvements, article template alignment, etc.If you've changed any "ms.date" properties for work that wasn't part of full review for freshness, please reset them to their previous value.

Placement and linking
If you're creating a new article or articles, include updates to the related TOC.yml file to propose where the article(s) should be placed. Also consider other places within the document set where it would be beneficial to cross-reference and link to your new article(s).

PR build
After you open your PR, and for each successive commit that you push to your branch, the publishing platform will run validation on the files in your pull request. A summary of the build results for each file will be inserted inline into your pull request, which includes any build suggestions/warnings/errors. PRs cannot be merged until all build errors and most warnings are resolved.

Publishing
Following a successful merge, most repos publish to the live site at least once per (business) day, usually around 10am Pacific.

Additional resources
Learn.Microsoft.Com contributor guide

Additional guidance for private repos and internal contributors

Topic
Guidance

PR size
If your PR is more than ~5 lines of changes, or you'd like for the changes to go through editorial or larger review, open a contribution request at https://aka.ms/Contribution and include a link to the PR in response #8. Once it's processed, you'll be notified of the next steps.

PR title prefix
Select the Edit button to the right of the PR title if you need to revise it. The following prefixes are reserved for specific contribution types:[Quality Check] - maintenance work related to content quality (edit passes, art improvements, template alignment)[LinkFix] - recurring/adhoc PRs to correct link URLs[Pipeline] - new/updated contributor success pipeline content[WIP] - a work-in-progress draft requiring several days/weeks

PR preview
Following successful build of your PR, publishable files will also include Preview URL links to staged previews of your new/updated articles. Be sure to review these for verification of your intended contributions, or to send to other internal contributors for review.

PR sign-off (public repo)
If an article you own is updated in a public repo PR, you are responsible for sign-off. You will be automatically notified via email. The PR will not be merged until you've had a chance to review and sign-off.

PR sign-off (private repo)
After you've completed your proposed changes, addressed build warnings, and completed all review work, you can begin the sign-off process for review and merge:If your PR is in draft mode, remove "[WIP]" from the title and select Ready for review button at the bottom of the PR.Enter "#sign-off" in a new comment. This comment indicates that you're confident the work meets or exceeds Microsoft's standards for publication, and will trigger the review process.Your PR may be selected for initial review by the CACT. Following CACT review, you may receive questions or requests for additional changes. You should have initial feedback from CACT review within a few business days. If you have an urgent request or need to contact the team, please mention @MicrosoftDocs/cloud-architecture-content-team-pr-reviewers in your PR and someone will get back to you. After CACT review is complete, a CACT #sign-off will be added.Final review/merge is done by the PR review team. The PR team may also respond with feedback, categorized as "Blocking" (requires action from you), or "Non-blocking" (to be addressed in a future PR).

Additional resources
Learn.Microsoft.Com internal contributor guideAuthoring templates: architecture-center-pr, well-architected-prTo contact the CACT use e-mail, or @mention our GitHub team in your PR comments using: @MicrosoftDocs/cloud-architecture-content-team-pr-reviewers

@csaedave123
Thank you for your contribution. Would you take a moment to sign the Contributor License Agreement (CLA)? After the CLA is signed, someone can review your pull request.
Thanks!
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

@microsoft-github-policy-service agree company="Microsoft"
Dave Newman Sr. CSA-Engineering
Azure Core
@.***

From: microsoft-github-policy-service[bot] @.>
Sent: Friday, June 2, 2023 3:05 PM
To: MicrosoftDocs/well-architected @.>
Cc: csaedave123 @.>; Mention @.>
Subject: Re: [MicrosoftDocs/well-architected] Update business-metrics.md (PR #97)
@csaedave123https://github.com/csaedave123 please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]
Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"
Contributor License Agreement
Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the party signing below (“You”),
and conveys certain license rights to Microsoft Corporation and its affiliates (“Microsoft”) for Your
contributions to Microsoft open source projects. This Agreement is effective as of the latest signature
date below.

Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
“Project” means any of the projects owned or managed by Microsoft and offered under a license
approved by the Open Source Initiative (www.opensource.orghttp://www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions is entirely Your original work.
Should You wish to Submit materials that are not Your original work, You may Submit them separately
to the Project if You (a) retain all copyright and license information that was in the materials as You
received them, (b) in the description accompanying Your Submission, include the phrase “Submission
containing materials of a third party:” followed by the names of the third party and any licenses or other
restrictions of which You are aware, and (c) follow any other instructions in the Project’s written
guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term “You” in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of any facts or circumstances of which
You later become aware that would make Your representations in this Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County, Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by Microsoft.

—
Reply to this email directly, view it on GitHubhttps://github.com/MicrosoftDocs/well-architected/pull/97#issuecomment-1574366029, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BAI5TEZAUDONZ35VY2BD643XJJPSFANCNFSM6AAAAAAYY2YIMA.
You are receiving this because you were mentioned.Message ID: @.***>

@MicrosoftDocs/cloud-architecture-content-team-pr-reviewers - Please review the proposed changes. If you want to move forward with the content, add a sign-off.
#label:"aq-pr-triaged"
#label:"pending-content-team/business-approval"
Cc: @MicrosoftDocs/public-repo-pr-review-team

@csaedave123 - apologies for the delay..
This PR has a build error on the missing image file. Also, we prefer PRs like this to come through the private repo (well-architected-pr) so we can stage and preview the updates, esp. when they have new images and/or updates that span more than ~5 lines. LMK if you need info on accessing the private repo and whether we can close this PR in the interim.
cc: @PageWriter-MSFT
#label:"cact-review-in-progress"

@BryanLa, @csaedave123 is not a MSFT employee and cannot access the -pr repo.  If you wish to take the contribution you'll need to do it here, or you'll need a vendor to replicate it internally.

Closing this one as I'm working with @csaedave123 to bring this into well-architected-pr


Problem: Codacy warnings prevent patches from being merged

Mandatory Codacy checks add friction, doing more harm than good.

Codacy “rulebook” is not published anywhere.  Developers have no way of knowing if their patches will comply with Codacy's expectations before PRs are published.  Also developers cannot run Codacy locally.
Codacy's ‘PEP 257 docstring style checker’ is buggy.
Codacy tends to report non-issues.  Fixing such warnings makes the code worse.

Examples of non-issues reported by Codacy
Example 1
Codacy warning:

1 blank line required before class docstring (found 0) (D203)
Why is this an issue?
PEP 257 docstring style checker

“Fixed” code:
class ServiceMonitor(StoppableThread):

    """
    The service monitoring thread.

    This thread polls the service health status
    from Consul via Health API and broadcasts the states to Motr land.
    """

    def __init__(self, queue: Queue, interval_sec=1):

Codacy extorted that blank line before the docstring from the developer.  Yet nothing in PEP 257 requires a blank line before the docstring.  Here is the relevant section:

Insert a blank line after all docstrings (one-line or multi-line) that document a class -- generally speaking, the class's methods are separated from each other by a single blank line, and the docstring needs to be offset from the first method by a blank line.

Example 2
class ServiceHealth(Enum):
    FAILED = 0
    OK = 1
    UNKNOWN = 2

    def __repr__(self):
        """Return human-readable constant name (useful in log output)."""
        return self.name

Noisy comment was added just to placate Codacity.
Example 3
Code:
* [CORTX Contributing Guide](https://github.com/Seagate/cortx/blob/main/CONTRIBUTING.md)

This valid Markdown syntax for a list item makes Codacy unhappy:

[list-item-indent] Incorrect list-item indent: add 2 spaces

Solution: uncheck Codacy in the branch protection rules.  Let pull request be merged despite Codacy warnings.

cc @pujamudaliar @gauravchaudhari02 @mukul-seagate11 @mssawant @NeeravChoudhari @knekrasov @chumakd

I've updated branch protection rules for the ‘main’ branch:


spinner remains forever after trying to deposit from a ledger account

it shows a message about deposit not supported for ledger accounts, but the popup page stays in the dimmed-with-spinner mode

Fixed in #236.


Overlap arrays

Problem
I've got an array field in a table and I want to filter the results of my select query using another array. If the record of the database has any of the elements of that "filtering" array, this record must be retrieved . Basically what an overlap function in SQL does.
Suggested solution
Implement an overlap feature.
Alternatives
Looked up on the internet and it seems to be the best approach for this filtering case.
Additional context
Here is an example of overlaping in postgreSQL:
select
array[1,2,3] && array[3,7,9] as compare1,
array[1,2,3] && array[5,7,9] as compare2,
array['futebol','skate','cerveja'] && array['cerveja','cachaça','vinho'] as compare3,
array['futebol','skate','cerveja'] && array['cachaça','vinho'] as compare4;
compare1 = true
compare2 = false
compare3 = true
compare4 = false

Interesting, I hadn't heard of this. Is that the same as https://andreigridnev.com/blog/2016-03-30-overlaps-operator-in-postgresql/?

Interesting, I hadn't heard of this. Is that the same as https://andreigridnev.com/blog/2016-03-30-overlaps-operator-in-postgresql/?

yeah I guess it's pretty much the same logic, but the "&&" operator is used for arrays while the "OVERLAPS" one is for dates :)


TypeError _internal_priceScale is not a function while getting series price scale

Lightweight Charts Version: 3.1.3
Steps/code to reproduce:
const chart = LightweightCharts.createChart(document.body);
const series = chart.addAreaSeries();
const priceScale = series.priceScale();

Actual behavior:
Error TypeError: this._private__priceScaleApiProvider._internal_priceScale is not a function
Expected behavior:
A price scale api is returned.

It seems that the fix doesn't help :(

The issue was due outdated version of ts-transformer-properties-rename (I've checked the fix on master, this is way I didn't handle the issue on released tag).

I just re-published a proper fix in 3.1.5. Sorry for inconvenience.


Error on Project Report: Cannot find 'full-report.bcf'

Error log
INFO - This is Biber 2.15
INFO - Logfile is 'full-report.blg'
ERROR - Cannot find 'full-report.bcf'!
INFO - ERRORS: 1

May you try with BibTeX instead of Biber?

It's solved!
Sorry for my misreading.


fix: alignements prot santiaire sur cerfa- 131

:tada: This PR is included in version 0.12.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


Use separate column types for ReportGenerationQuery and PrestoTable CRs

PrestoTable CRs shouldn't have information unrelated to Presto in them, so use a separate type for ReportGenerationQuery columns that can have things like TableHidden and Unit fields.
This also updates the code using these columns to use the correct column type.

jenkins rebuild


Deleted an obsolete page

Description
The <!--- Describe your changes in detail --> issue describes that some information available in the page is obsolete.
The page itself is obsolete as the information is available in the API descriptions.
Motivation and Context
The page itself is obsolete as the information is available in the API descriptions hence deletion of the page.
Types of changes

Bug fix for 38038

Checklist

[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[x] I have added tests to cover my changes if appropriate.
[ ] All new and existing tests passed.

It's a work in progress. Not ready for review or merge.


[Feat] Introduce New CRD ShardingSphereChaos

ShardingSphereChaos CRD Design document
1、Background
It is necessary to introduce the automatic experiment flow of chaos into ss to enhance the toughness and failure recovery ability of ss.
2、Problem description
Chaos experiment should be automated to avoid the experimental environment, injection flow, verification of the duplication of work
2.1 Question 1: How to inject
How can specific failure scenarios be introduced into ss
2.2 Question 2: How to generate pressure
How would a large number of specified requests be sent to ss-proxy during a failure to simulate a real production environment
2.3 Question 3: How to verify the Result
During the experiment, how to collect relevant information and set the steady-state to prove whether the system is in steady-state
3、Technical research
Chaos Mesh or Litmus provides different kinds of chaos experiments, covering most usage scenarios. It only has the ability to inject faults, while experimental environments and verifying the influence of faults on steady state need to be repeated in each experiment. Therefore, we need to define our own crd to realize the automated experiment process for ss-proxy, and use kubebuilder to generate the skeleton code of crd

technology
address

Chaos Mesh API definition
https://github.com/chaos-mesh/chaos-mesh

kubebuilder
https://github.com/kubernetes-sigs/kubebuilder

Litmus chaos
https://litmuschaos.io/

4、Scheme design
4.1 Program summary
injection：
In order to solve the problem of how to inject faults into ss, the commonly used solution is pingCAP open source Chaos Mesh or Litmus Chaos, which provides a variety of common fault types, but for the construction of automated ss chaotic scenario flow, it can not be introduced directly because of its complexity and independence of configuration.
Chaos Mesh has provided the corresponding API of all CRD resource definitions, which provides the possibility of simplifying the operation. We can abstract our own chaotic scenarios and interact with Chao Mesh to obtain experimental information. For the implementation of interaction, you can refer to Chaos Mesh's official Chaos DashBoard.
Generating pressure：
With regard to the configuration environment and pressure, you can use DistSQL to make a request to the ss-proxy, inject data into the environment, and use it as proof to verify the steady state.
Verification：
In the verification of steady state, we can grab the monitoring log to observe whether the CPU,NetWork IO fluctuates in the steady state, and verify the correctness of the previous request in the pressure phase by DistSQL.
4.2 Holistic design

The chaos experiment for ss-proxy has the following parts

Use DistSQL to specify the configuration of proxy-environment to create the specified experimental environment
Establish a steady-state hypothesis, declare a specific fault, ss-Chaos converts the fault into a Chaos Mesh fault, and Chaos Mesh injects this fault into the environment
In the experiment, ssChaos puts the declared fields that generate traffic (.spec.accountReq) into jobs, and jobs send traffic requests to the experimental environment.
After fault injection and the start of the experiment, ssChaos grabs the data and indicators in the experimental environment as a criterion for judging whether the final experiment is in a steady state.

The specific process is as follows:

ComputeNode
ss-proxy, as an object for upstream service interaction, interacts with the downstream database

StorageNode
Connect to the database of ss, the node that actually stores the data

Governance node
Used to store status and configuration information in ComputeNode, such as logical libraries, logical tables, etc.

DistSQL
It is a unique operating language of Apache ShardingSphere. It is used in exactly the same way as standard SQL and is used to provide SQL-level operational capabilities for incremental functionality.

proxy-environment
A fully functional ss-proxy environment

Chaos APIs
Different kinds of chaos experiments are provided, which are responsible for the actual injection and execution of faults.

ssChaos Controller
Responsible for managing the created ssChaos resources

4.3 Function design
It is functionally divided into three parts: injection fault, voltage generation and fault; users can use related functions by defining cr declaration files
4.3.1 Feature list

Injection chaos
Convert the fault declared by the user to the fault type in Chaos Mesh and inject it into the specified experimental environment
Generating pressure
Inject traffic into the experimental environment
Verification

The important indexes such as CPU and network IO of the experimental target and the program output are collected and compared with the steady-state conditions, and the correctness of the flow in the pressure phase is verified.
4.4 CRD design
4.4.1 Spec

Injection fault
.spec.chaosKind Used to specify the type of injection failure
To specify the type of injection fault, the common fault field is configured in the spec. When accessing the fault provided by the platform, the platform type needs to be written in the annotations, and the fields not mentioned in the fault spec for this platform are written in the annotations.

Common configuration field

Selector
Fault target selector

namespaces
Specify namespaces

labelSelectors
Specify selection label

annotationSelectors
Specify comment

nodes
Specify nodes

pods
Specified as a namespace-pod name

nodeSelectors
Select nodes with label

PodChaosSpec

This part of the statement is in spec.podChaos
A fault that defines the type of pod, and the action field declares the type of fault that is injected into pod

action
Specify the fault type of pod, divided into podFailure,containerKill

podFailure.Duration
Specify the effective time of the PodFailureAction

containerKill.containerNames
Specify the container to be killed

networkSpec
This part of the statement is in .spec.networkChaos

Define faults of network type

Action
Define chaos of network type, divided into delay,duplicate,corrupt,partition,loss

Duration
Specify the duration of chaos

Direction
It is used to specify the direction of network failure. When not specified, it defaults to to, which is divided into to (- > target), from (target < -), and both (<-> target).

target
selector,Used to select target object

Source
selector,Used to select source object

delay.latencydelay.correlationdelay.jitter
latency: Indicates the network latencycorrelation: Indicates the correlation between the current latency and the previous onejitter: Indicates the range of the network latency

loss.correlationloss.loss
loss: Indicates the probability of packet losscorrelation: Indicates the correlation between the probability of current packet loss and the previous time's packet loss.

duplicate.correlationduplicate.duplicate
correlation: Indicates the correlation between the probability of current packet duplicatingduplicate: Indicates the probability of packet duplicating

corrupt.corruptcorrupt.correlation
corrupt: Indicates the probability of packet corruptioncorrelation: Indicates the correlation between the probability of current packet corruption and the previous time's packet corruption.

Specific configuration spec
This part needs to be declared in annotations or env

chaos-mesh

Configuration field of podchaos
spec/mode <-----> selector.modespec/value <-----> selector.valuespec/pod/action <-----> specify .actionspec/pod/gracePeriod <-----> specify .gracePeriod

Configuration field of networkchaos
spec/device <-----> .devicespec/targetDevice <-----> .targetDevicespec/target/mode <-----> .selector.modespec/target/value <-----> .valuespec/network/action <-----> specify .actionspec/network/rate <-----> .bandwidth.ratespec/network/limit <-----> .bandwidth.limitspec/network/buffer <-----> .bandwidth.bufferspec/network/peakrate <-----> .bandwidth.peakratespec/network/minburst <-----> .bandwidth.minburst

- Litmus chaos

Configuration field of podchaos
- pod-deletespec/random <-------> RANDOMNESS- Container-killspec/signal <------> SIGNALspec/chaos_interval <-----> CHAOS_INTERVAL

Configuration field of networkchaos

Public field
spec/action <----> .spec.experiments.namespec/ramp_time <-----> RAMP_TIMEspec/duration <-------> TOTAL_CHAOS_DURATIONspec/sequence <-----> SEQUENCEspec/lib_image <-----> LIB_IMAGEspec/lib <----> LIB spec/force <-----> FORCE

generating pressure
Verification

4.4.2 Status

DeploymentCondition
This field records the progress of the injection chaos, which has the following four phases

Creating
It means that chaos is in the creation stage and has not yet completed the injection.

AllRecovered
Indicates that the environment has recovered from failure

Paused
The experiment may be paused because the selected node does not exist. Consider whether there is a problem with the definition of crd.

AllInjected
This stage indicates that the fault has been successfully injected into the environment.

4.4.3 Controller design

Overall logic of the controller

Convert the ssChaos to apply to the fault type in chaos-mesh and create.
According to ssChaos's .spec.EmbedChaos declaration, create the corresponding Chaos Mesh type and set .status.DeploymentCondition to the Creating state.
status

update .status.DeploymentCondition

For chaos-mesh
Chaos Mesh indicates the progress of the current experiment by updating the Status of four types of Type. They are used as the basis for changing .status.DeploymentCondition
The change logic is as follows:
After all the faults currently concerned in chaos-mesh have entered the AllInjected phase, we can change our state from creating to AllInjected.

When there is a fault in paused, we should check whether the pod and container of our choice are working properly..
We update our status to AllRecovered in the case of all malfunctioning Recovered
What is mentioned in the chaos-mesh document is also used as a basis for updating status.

Pressure and verification at different stages of  .status.DeploymentCondition

AllInjected

At this time, the fault has been injected, pressure operation should be carried out, and data collection should be carried out.

AllRecovered
Verify the operation and check whether the operation during the pressure period is performed correctly.
Extended platform
When you need to extend more API interfaces of chaos, the interfaces that need to be implemented for pod and network types are as follows:

About the get/set interface of chaos
type ChaosGetter interface {
   GetPodChaosByNamespacedName(context.Context, types.NamespacedName) (PodChaos, error)
   GetNetworkChaosByNamespacedName(context.Context, types.NamespacedName) (NetworkChaos, error)
}

type ChaosSetter interface {
}

About the update/create/New  interface of chaos
type ChaosHandler interface {
   NewPodChaos(ssChao *v1alpha1.ShardingSphereChaos) chaos.PodChaos
   NewNetworkPodChaos(ssChao *v1alpha1.ShardingSphereChaos) chaos.NetworkChaos
   UpdateNetworkChaos(ctx context.Context, ssChaos *v1alpha1.ShardingSphereChaos, r client.Client, cur chaos.NetworkChaos) error
   UpdatePodChaos(ctx context.Context, ssChaos *v1alpha1.ShardingSphereChaos, r client.Client, cur chaos.PodChaos) error
   CreatePodChaos(ctx context.Context, r client.Client, podChao chaos.PodChaos) error
   CreateNetworkChaos(ctx context.Context, r client.Client, networkChao chaos.NetworkChaos) error
}

4.5 Expected
4.5.1 Expected effect
Create a definition yaml file for CR
apiVersion: shardingsphere.apache.org/v1alpha1
kind: ShardingSphereChaos
metadata:
  labels:
    app.kubernetes.io/name: shardingsphereChaos
  name: shardingspherechaos-lala
  annotations:
    spec/mode: all
spec:
  chaosKind: podChaos
  podChaos:
    selector:
      labelSelectors:
        app.kubernetes.io/component: zookeeper-new
      namespaces: [ "mesh-test" ]
    podFailure:
      duration: "1m"
    action: "podFailure"

After applying, the chaos object is created successfully, and you can see the following information

5、Demo
6、References

Chaos Mesh 原理分析与控制面开发
chao-mesh.org
ShardingSphere

ShardingSphereChaos CRD Design document
1、Background
It is necessary to introduce the automatic experiment flow of chaos into ss to enhance the toughness and failure recovery ability of ss.
2、Problem description
Chaos experiment should be automated to avoid the experimental environment, injection flow, verification of the duplication of work
2.1 Question 1: How to inject
How can specific failure scenarios be introduced into ss
2.2 Question 2: How to generate pressure
How would a large number of specified requests be sent to ss-proxy during a failure to simulate a real production environment
2.3 Question 3: How to verify the Result
During the experiment, how to collect relevant information and set the steady-state to prove whether the system is in steady-state
3、Technical research
Chaos Mesh or Litmus provides different kinds of chaos experiments, covering most usage scenarios. It only has the ability to inject faults, while experimental environments and verifying the influence of faults on steady state need to be repeated in each experiment. Therefore, we need to define our own crd to realize the automated experiment process for ss-proxy, and use kubebuilder to generate the skeleton code of crd
technology	address
Chaos Mesh API definition	https://github.com/chaos-mesh/chaos-mesh
kubebuilder	https://github.com/kubernetes-sigs/kubebuilder
Litmus chaos	https://litmuschaos.io/
4、Scheme design
4.1 Program summary
injection：
In order to solve the problem of how to inject faults into ss, the commonly used solution is pingCAP open source Chaos Mesh or Litmus Chaos, which provides a variety of common fault types, but for the construction of automated ss chaotic scenario flow, it can not be introduced directly because of its complexity and independence of configuration. Chaos Mesh has provided the corresponding API of all CRD resource definitions, which provides the possibility of simplifying the operation. We can abstract our own chaotic scenarios and interact with Chao Mesh to obtain experimental information. For the implementation of interaction, you can refer to Chaos Mesh's official Chaos DashBoard.
Generating pressure：
With regard to the configuration environment and pressure, you can use DistSQL to make a request to the ss-proxy, inject data into the environment, and use it as proof to verify the steady state.
Verification：
In the verification of steady state, we can grab the monitoring log to observe whether the CPU,NetWork IO fluctuates in the steady state, and verify the correctness of the previous request in the pressure phase by DistSQL.
4.2 Holistic design

The chaos experiment for ss-proxy has the following parts

Use DistSQL to specify the configuration of proxy-environment to create the specified experimental environment
Establish a steady-state hypothesis, declare a specific fault, ss-Chaos converts the fault into a Chaos Mesh fault, and Chaos Mesh injects this fault into the environment
In the experiment, ssChaos puts the declared fields that generate traffic (.spec.accountReq) into jobs, and jobs send traffic requests to the experimental environment.
After fault injection and the start of the experiment, ssChaos grabs the data and indicators in the experimental environment as a criterion for judging whether the final experiment is in a steady state.

The specific process is as follows:

ComputeNode	ss-proxy, as an object for upstream service interaction, interacts with the downstream database
StorageNode	Connect to the database of ss, the node that actually stores the data
Governance node	Used to store status and configuration information in ComputeNode, such as logical libraries, logical tables, etc.
DistSQL	It is a unique operating language of Apache ShardingSphere. It is used in exactly the same way as standard SQL and is used to provide SQL-level operational capabilities for incremental functionality.
proxy-environment	A fully functional ss-proxy environment
Chaos APIs	Different kinds of chaos experiments are provided, which are responsible for the actual injection and execution of faults.
ssChaos Controller	Responsible for managing the created ssChaos resources
4.3 Function design
It is functionally divided into three parts: injection fault, voltage generation and fault; users can use related functions by defining cr declaration files
4.3.1 Feature list

Injection chaos
Convert the fault declared by the user to the fault type in Chaos Mesh and inject it into the specified experimental environment
Generating pressure
Inject traffic into the experimental environment
Verification

The important indexes such as CPU and network IO of the experimental target and the program output are collected and compared with the steady-state conditions, and the correctness of the flow in the pressure phase is verified.
4.4 CRD design
4.4.1 Spec

Injection fault
.spec.chaosKind Used to specify the type of injection failure
To specify the type of injection fault, the common fault field is configured in the spec. When accessing the fault provided by the platform, the platform type needs to be written in the annotations, and the fields not mentioned in the fault spec for this platform are written in the annotations.

Common configuration field

Selector
Fault target selector

namespaces	Specify namespaces
labelSelectors	Specify selection label
annotationSelectors	Specify comment
nodes	Specify nodes
pods	Specified as a namespace-pod name
nodeSelectors	Select nodes with label

PodChaosSpec

This part of the statement is in spec.podChaos A fault that defines the type of pod, and the action field declares the type of fault that is injected into pod
action	Specify the fault type of pod, divided into podFailure,containerKill
podFailure.Duration	Specify the effective time of the PodFailureAction
containerKill.containerNames	Specify the container to be killed

networkSpec
This part of the statement is in .spec.networkChaos

Define faults of network type
Action	Define chaos of network type, divided into delay,duplicate,corrupt,partition,loss
Duration	Specify the duration of chaos
Direction	It is used to specify the direction of network failure. When not specified, it defaults to to, which is divided into to (- > target), from (target < -), and both (<-> target).
target	selector,Used to select target object
Source	selector,Used to select source object
delay.latency
delay.correlation
delay.jitter	latency: Indicates the network latency
correlation: Indicates the correlation between the current latency and the previous one
jitter: Indicates the range of the network latency
loss.correlation
loss.loss	loss: Indicates the probability of packet loss
correlation: Indicates the correlation between the probability of current packet loss and the previous time's packet loss.
duplicate.correlation
duplicate.duplicate	correlation: Indicates the correlation between the probability of current packet duplicating
duplicate: Indicates the probability of packet duplicating
corrupt.corrupt
corrupt.correlation	corrupt: Indicates the probability of packet corruption
correlation: Indicates the correlation between the probability of current packet corruption and the previous time's packet corruption.

Specific configuration spec
This part needs to be declared in annotations or env

chaos-mesh

Configuration field of podchaos	spec/mode <-----> selector.mode
spec/value <-----> selector.value
spec/pod/action <-----> specify .action
spec/pod/gracePeriod <-----> specify .gracePeriod
Configuration field of networkchaos	spec/device <-----> .device
spec/targetDevice <-----> .targetDevice
spec/target/mode <-----> .selector.mode
spec/target/value <-----> .value
spec/network/action <-----> specify .action
spec/network/rate <-----> .bandwidth.rate
spec/network/limit <-----> .bandwidth.limit
spec/network/buffer <-----> .bandwidth.buffer
spec/network/peakrate <-----> .bandwidth.peakrate
spec/network/minburst <-----> .bandwidth.minburst
- Litmus chaos

Configuration field of podchaos	- pod-delete
spec/random <-------> RANDOMNESS

Container-kill
spec/signal <------> SIGNAL
spec/chaos_interval <-----> CHAOS_INTERVAL
Configuration field of networkchaos
Public field	spec/action <----> .spec.experiments.name
spec/ramp_time <-----> RAMP_TIME
spec/duration <-------> TOTAL_CHAOS_DURATION
spec/sequence <-----> SEQUENCE
spec/lib_image <-----> LIB_IMAGE
spec/lib <----> LIB
spec/force <-----> FORCE

generating pressure
Verification

4.4.2 Status

DeploymentCondition
This field records the progress of the injection chaos, which has the following four phases

Creating	It means that chaos is in the creation stage and has not yet completed the injection.
AllRecovered	Indicates that the environment has recovered from failure
Paused	The experiment may be paused because the selected node does not exist. Consider whether there is a problem with the definition of crd.
AllInjected	This stage indicates that the fault has been successfully injected into the environment.
4.4.3 Controller design

Overall logic of the controller

Convert the ssChaos to apply to the fault type in chaos-mesh and create.
According to ssChaos's .spec.EmbedChaos declaration, create the corresponding Chaos Mesh type and set .status.DeploymentCondition to the Creating state.
status

update .status.DeploymentCondition

For chaos-mesh
Chaos Mesh indicates the progress of the current experiment by updating the Status of four types of Type. They are used as the basis for changing .status.DeploymentCondition
The change logic is as follows:
After all the faults currently concerned in chaos-mesh have entered the AllInjected phase, we can change our state from creating to AllInjected.

When there is a fault in paused, we should check whether the pod and container of our choice are working properly.. We update our status to AllRecovered in the case of all malfunctioning Recovered What is mentioned in the chaos-mesh document is also used as a basis for updating status.

Pressure and verification at different stages of  .status.DeploymentCondition

AllInjected

At this time, the fault has been injected, pressure operation should be carried out, and data collection should be carried out.

AllRecovered
Verify the operation and check whether the operation during the pressure period is performed correctly.
Extended platform
When you need to extend more API interfaces of chaos, the interfaces that need to be implemented for pod and network types are as follows:

About the get/set interface of chaos
type ChaosGetter interface {
   GetPodChaosByNamespacedName(context.Context, types.NamespacedName) (PodChaos, error)
   GetNetworkChaosByNamespacedName(context.Context, types.NamespacedName) (NetworkChaos, error)
}

type ChaosSetter interface {
}

About the update/create/New  interface of chaos
type ChaosHandler interface {
   NewPodChaos(ssChao *v1alpha1.ShardingSphereChaos) chaos.PodChaos
   NewNetworkPodChaos(ssChao *v1alpha1.ShardingSphereChaos) chaos.NetworkChaos
   UpdateNetworkChaos(ctx context.Context, ssChaos *v1alpha1.ShardingSphereChaos, r client.Client, cur chaos.NetworkChaos) error
   UpdatePodChaos(ctx context.Context, ssChaos *v1alpha1.ShardingSphereChaos, r client.Client, cur chaos.PodChaos) error
   CreatePodChaos(ctx context.Context, r client.Client, podChao chaos.PodChaos) error
   CreateNetworkChaos(ctx context.Context, r client.Client, networkChao chaos.NetworkChaos) error
}

4.5 Expected
4.5.1 Expected effect
Create a definition yaml file for CR
apiVersion: shardingsphere.apache.org/v1alpha1
kind: ShardingSphereChaos
metadata:
  labels:
    app.kubernetes.io/name: shardingsphereChaos
  name: shardingspherechaos-lala
  annotations:
    spec/mode: all
spec:
  chaosKind: podChaos
  podChaos:
    selector:
      labelSelectors:
        app.kubernetes.io/component: zookeeper-new
      namespaces: [ "mesh-test" ]
    podFailure:
      duration: "1m"
    action: "podFailure"

After applying, the chaos object is created successfully, and you can see the following information

5、Demo
6、References

Chaos Mesh 原理分析与控制面开发
chao-mesh.org
ShardingSphere

issue-272

issue-272

#291

#272

How about change this CRD name from ShardingSphereChaos to Chaos ?

How about change this CRD name from ShardingSphereChaos to Chaos ?

sure


Translation of about?

I have a multilingual page and switching between translations of a page works fine. What does not work is the translation of the information in the "about" widget. Even if I switch to English, the German name will be shown.
I use these settings:
defaultContentLanguage = "de"
defaultContentLanguageInSubdir = true

[languages.de]
  languageCode = "de-de"

[languages.de.params]
  name = "Heinrich"

[languages.en]
  languageCode = "en-us"

[languages.en.params]
  name = "Henry"

What am I doing wrong?

@sfischer13 another user previously raised a similar issue. There appears to be a bug in Hugo. For now, the workaround is to place your params values directly under the language section like below:
[languages.de]
  languageCode = "de-de"
  name = "Heinrich"


req.options undefined

I have the following route:
  'get /users/:name': 'UserController.findOne'

and the controller looks like this (I borrowed stuff from the blueprints):
var actionUtil = require('sails/lib/hooks/blueprints/actionUtil'),
  _ = require('lodash'),
  util = require('util');

/**
 * UserController
 *
 * @description :: Server-side logic for managing users
 * @help        :: See http://links.sailsjs.org/docs/controllers
 */

module.exports = {
  find: function(res, req) {
    // Parse parameters
    var where = actionUtil.parseCriteria(req),
      limit = actionUtil.parseLimit(req),
      skip = actionUtil.parseSkip(req),
      sort = actionUtil.parseSort(req);

    ...
  }
};

but unfortunately an error is triggered:
TypeError: Cannot read property 'criteria' of undefined
  at Object.module.exports.parseCriteria (/home/ubuntu/workspace/node_modules/sails/lib/hooks/blueprints/actionUtil.js:168:39)
  ...

When I debug req in my controller I do not see req.options either. Shouldn't this always be available?

First argument of the controller endpoint method is always the request object, and after that comes the response object, req and then res. You have the oposite order in the example, find method should look like this:
find: function(req, res) {
    // Parse parameters
    var where = actionUtil.parseCriteria(req),
      limit = actionUtil.parseLimit(req),
      skip = actionUtil.parseSkip(req),
      sort = actionUtil.parseSort(req);

    ...
   You are right :-)


Tokenization Key or client token was invalid.

Can you confirm the plugin is still working?
I implemented Braintree payment a while ago on both, web and with your plugin. Both was working on my tests. Web is still working but in my app i get allways the message:
"Tokenization Key or client token was invalid."
I don't do anything special:
`Future braintreePay(double amount) async {
String clientNonce;
try {
  clientNonce = await _dataService.fetchBraintreeToken();
} on Exception {
  return PaymentResult(credit: -1, valid: false);
}

BraintreePayment braintreePayment = new BraintreePayment();
var data = await braintreePayment.showDropIn(
    nonce: clientNonce, amount: amount.toString(), enableGooglePay: false);
//data contains the error message...

}`
The clientNonce comes from a .NET Core Backend. As suggested before, nothing special here:
`
private void CreateGateway(ConfigData data)
{
Braintree.Environment environment;
        if (data.Environment == "SANDBOX")
            environment = Braintree.Environment.SANDBOX;
        else
            environment = Braintree.Environment.PRODUCTION;

        gateway = new BraintreeGateway()
        {
            Environment = environment,
            MerchantId = data.MerchantId,
            PublicKey = data.PublicKey,
            PrivateKey = data.PrivateKey
        };
    }

[HttpGet]
public IActionResult GetToken(string customerId)
{
var clientToken = gateway.ClientToken.Generate();
        return Ok(clientToken);
    }`

I tested on sandbox only.

The plugin seems to be working. Will check why it's not working on your end and what's causing this issue.

Hello,
in the meantime i have found my mistake. .NET Core wraps my token in quotes. Ubelievable that i don't saw that earlier.
A simple text/plain and the error is gone:
[HttpGet, Produces("text/plain")]  public IActionResult GetToken(string customerId)  {      var clientToken = gateway.ClientToken.Generate();      return Ok(clientToken);  }
Maybe it helps someone!


Investigate why newer React-Toastify versions break d3 panning and zooming

The problem occurs whenever a toast is open while using the react router to navigate to the tree viewer. If we can't find a fix, we might want to switch to a different notification library.
Staying on version 5.x resolves this issue, any version from 6.x to the current 9.1.3 have this issue. Since I'm not sure if this is an issue in our code, react-toastify, d3, or react-router, finding the issue seems difficult, so any help is appreciated.

Fixed by commit 00eb1ec.


Some tokens are being dropped

I'm having an issue where it seems some tokens are being dropped. Most frequently, it's the first token but in the attached screenshot below it looks like it might have dropped one in the middle too—the missing space between "I" and "assist".

In order to confirm it wasn't a client-side only issue with my code, I logged each token as it was decoded via the new onParse callback. Even there the token was dropped.
In my initial search, I found this thread on the OpenAI forums describing a similar issue. If we're running into the same issue here, this may not be a problem with openai-streams at all, but instead with eventsource-parser.
I'll post more findings—and hopefully a fix too—once I look into it. I plan on investigating in the next couple days, but if anyone has an idea of what the issue is I'd love to hear any thoughts.

Can we repro this in any way? If we can, I can test for it and we can fix it.
I originally wrote the SSE parser myself, but eventsource-parser seemed stabler.

Can you put together a repository that reproduces this?

Took another look today and it must have been strangeness on OpenAI's end. Closing this issue for now. Will re-open if I can reproduce it reliably and confirm it's coming from this library. Thanks!


tweak driver to allow non-climatology

need to come up with system to tell driver which set of metrics to use (-m/-e option?)

@gleckler1 why did you close this? You do not want this anymore?

@doutriaux1   We need to discuss strategy for PMP expansion that will include additional mean climate metrics (e.g., monsoon precip index, regional statistics) as well as inter-annual variability and high frequency analysis... will these all be driven by the same driver?   I tend to think not, except possibly for the additional analysis using climatologies (monsoon, regional,...) we may decide to add to current driver.   So to answer your question yes, this is very important, but before we get specific with a task-based issue lets talk how best to approach this - ps: part of the reason I closed this was an attempt (perhaps unwisely) to get us down to 1 page of issues (25).


A way to access all glyphs within a font

Maybe I'm just not seeing it. Is there a way to access all glyphs and measure them individually, rather than absolutely requiring that a string is provided to measure the text?

There's no such way. As glyphs are rendered on demand to the underlying texture atlas.
Read this for more details: https://github.com/FontStashSharp/FontStashSharp/wiki/Dealing-With-Texture-Atlas-Overflow


Fix RunKit example file

I noticed that the RunKit example doesn't actually work, so I think this should fix it.

This wouldn't fix anything


Update to setup.py & new func

Modified setup.py to include resources and fonts on pip install.
Corrected a suspected typo in setup.py so dataclasses should now correctly install.
Added function list_materials() to display what materials are saved in resources

Thanks, @ColdAdam !


[v2] JSX with vhtml.js and async templating

This is a enhancement
Actually I need something like this:
component: {
  asyncTemplate: (render) => {
    request(...)
       .then(html => {
         render(html)
       })
  }
}

There any way to exists this method?
Other idea is allow to return dom elements in .render() or/and .template() methods like this:
component: {
  render: () => {
    return domElement
  },
  // or
  render: domElement
}

This would be awesome because allows developers to uses libs like jsx-dom or vhtml and do something beautiful like this:
component: {
  render: () => {
    return (

          {items.map(item, =>

          )}

    )
  },
}

@russiann @nolimits4web
Definitely need that :)

There is no much sense to have async templates because, there is no way to load component until it requested. There is an async routes for that covered in this article https://blog.framework7.io/mastering-v2-router-958ea2dbd24f. As for render() function it is already supported, you must return HTMLElement or string template inside of this function

@nolimits4web
Wow! I did not know about the async method. This definitely solves my problem. I will test it today. Thank you!!

@nolimits4web
I noticed that to use click events in the template I need to use an @ (@click=).
As you can see above I'm using JSX with vhtml.js and it only accept attributes with `standard` names. The @ causes an error :/
There any way to add a second way to do this? Like a f7 prefix ( f7-click= )?

@russiann not at the moment, i'll add f-click support

@russiann does it support the following format f7-on:click="doSomething"?

@nolimits4web Not, the same error with :
Link to test: https://jsfiddle.net/developit/9q0vyskg/

Shame, then it will f7-on-...

well no, because some events have colon in names like page:init or swipeout:open so something like f7-on-page:init won't work as well

What about f7-on="click:method"?

f7-on="page:init"

No, because it is support a bit more logic like @click="alert(5)". And same f7-on="page:init:method" looks bad and not really parseable

This is so sad...

Agree, there probably could be some kind of babel jsx plugin to understand custom attributes. I see Vue js have their own babel jsx plugin.
But anyway, if you are going to use babel, you can just use es-next templates to achieve almost the same:
...
render() {
  const self = this;
  const { items } = self;
  return `

Hi!

Here is a list of ${items.length} items:

        ${items.map(item => `

${item}

        `).join('')}

  `;
},
data() {
  return {
    items: ['one', 'two', 'three'],
  }
},
...

I found a workaround to 'fix' this sad thing about JSX:

render() {
  const events = {
    '@click': 'method'
    '@foo:bar:buzz': 'method'
  };

  return (

      <button {...events}>Click </button>

  )

}

So, I can do something like this:
const attr = (name, value) => {
  return {[name]: value}
}

...

<button {...attr('@click', 'method')} > Click </button>

Not ideal but works :)

I know about es6 template but I want to use vhtml.js with JSX because it allows me to create Pure Functional Components like this:
let items = ['one', 'two'];

const Item = ({ item, index, children }) => (

{item}

    {children}

);

const Element = (

Hi!

      { items.map( (item, index) => (
        <Item {...{ item, index }}>
          This is item {item}!
        </Item>
      )) }

);

and this + f7 = awesome :D

I changed the issue name to make the search easier.
Maybe other developers would like to use JSX as well and now they can easily found this issue.


[bug] V1.1.0 profile file is not generated moon run --profile=cpu pkg-a:build --log=trace -u

Describe the bug
profile file is not generated

Steps to reproduce

Expected behavior
generated the cpu profile file

Screenshots

Environment

Additional context

I'll check this tonight. It's okay to assign it to me.

Can you paste the --log trace output?

Yeah profiling requires the binary in question to support it natively. I can probably look into this logging a warning for tasks that don't support it.


Decide on settings name workbench.editor.tabHeight

We should consider to begin a new settings namespace for moving settings that are related to compactness of the workbench. Another candidate for this is: notebook.compactView.
One idea would be window.density and then properties within to configure per component. But as a user you can set window.density: compact to toggle them all.
Related: https://github.com/microsoft/vscode/issues/168671
//cc @rebornix @Tyriar @daviddossett

window.density sounds good to me. Would this mean the tabHeight setting will be called:
windows.density.editor.tabHeight or  windows.density.tabHeight ?
Also, what should the options be? I liked compact & default (instead of normal which we are currently using for tabHeight)

My feeling is that I would not have more layers of settings after window.density but just one. So for example window.density.editorTabHeight so that as a user you either configure window.density: <option> or individual settings one level below.
https://github.com/microsoft/vscode/issues/168671 talks about default, comfortable and compact, so I like the idea of using default instead of normal.

window.density.notebookCompactView is good, I think it makes sense to have it under a density setting other than notebook.

Ok, updating the issue then, I think we should do both for September if possible.

I didn't get a chance to take a look yesterday. Considering that we need update the setting and also do the migration work (from notebook.compactView to window.density.notebookCompactView), I would prefer to handle this in October.
An alternative is we add window.density.notebookCompactView and for this month, we support both and call out in the setting description in notebook.compactView that we are deprecating. What do you think @bpasero @benibenj ?


Create referral links to triage requests into specific queues.

As stewards we are discussing different ways we can help innocent users caught in rangeblocks - one idea floated around was to direct them to ACC using a specific link in the blocking template so they could be triaged directly to the stewards' queue for handling.
Something like https://accounts.wmflabs.org?queue=1 /  https://accounts.wmflabs.org/stewards or something similar and having the ability to have those requests directly triaged would be quite useful.
This could potentially be extended to checkuserblocks on enwiki as well, potentially.

[x] #604
[x] #605
[ ] #606

Note that there's some crossover with #281 and #532 here.

This is split into #604, #605, and #606 as part of the multiproject work, so I'll leave this as a tracking task.

@jonkolbert This functionality is now deployed to production; if you want a custom form to be created, let me know.


parameter example value are not retrieved

What happens?
It seems like the api client is not retrieving the parameter example, and yet not display it as a query parameter table value:
  parameters:
  - example: example value
    in: query
    name: parameter_name
    required: true
    type: string

What did you expect to happen?

OpenAPI Document
No response

I think hans may have fixed this one already

@amritk @antlio confirmed fixed in latest release

I'm still experiencing this issue while using the HTML API Reference. I have some query params defined, for example:
- name: user-id
  in: query
  required: true
  schema:
    type: string
    format: uuid
  example: 00000000-0000-0000-0000-000000000001
  x-go-name: UserIDQueryParam
  x-oapi-codegen-extra-tags:
    validate: "required,uuid"

In the API reference I can see this example in the curl command for example:

But it's not filled when opening the API client:

hey @kovapatrik, sorry about that! will look into it!


Getting Uncaught (in promise) ReferenceError: process is not defined

Getting Uncaught (in promise) ReferenceError: process is not defined

The error is thrown from this line. Commenting this code and statically setting the const authorizationEndpoint = 'https://shield.appblocks.com/'solves this issue

Need this fix in the published version. Thank you

Please make the following changes in the webpack config.
plugins: [
    new DefinePlugin({
      process: { env: JSON.stringify(Dotenv.parsed) },
    }),

hope this solves the issue.

OK THAT WORKS!! 😄

It would be great if this fix is also in the CLI generated webpack configuration


Update changelog before publishing

Description
CHANGELOG.md file containing ## [Unreleased] - yyyy-mm-dd is published on crates.io by the CD pipeline.
Expected behavior
The version and the release date must be edited in CHANGELOG.md before publishing.

CD pipeline has returned the following error:
error: 1 files in the working directory contain changes that were not yet committed into git:

CHANGELOG.md

to proceed despite this and include the uncommitted changes, pass the `--allow-dirty` flag
Error: Process completed with exit code 101.

So the changes have been rollbacked in #31.
It means that the changelog file with "Unreleased" version will be packaged, but it's actually not a big deal as this file will rarely be read.


TypeError: Cannot read property 'description' of undefined when running @microsoft/eslint-formatter-sarif

This issue previously proposed in here, since the eslint formatter move to this repo, I move this issue as well.
When I running eslint -f @microsoft/eslint-formatter-sarif foo.js in a project met below error:
TypeError: Cannot read property 'description' of undefined
    at node_modules/@microsoft/eslint-formatter-sarif/sarif.js:152:57
    at Array.forEach (<anonymous>)

The line that caused above error is here
I found reason why I encounter this error is that some of the rulesMeta do not the property named docs
e.g.
  'ember-best-practices/no-lifecycle-events': {
    message: 'Do not use events for lifecycle hooks. Please use the actual hooks instead: https://github.com/ember-best-practices/eslint-plugin-ember-best-practices/blob/master/guides/rules/no-lifecycle-events.md'
  },
  'ember-best-practices/no-observers': {
    message: 'Do not use observers. Consider using computed properties instead. Please see following guide for more information: https://github.com/ember-best-practices/eslint-plugin-ember-best-practices/blob/master/guides/rules/no-observers.md'
  },
  'ember-best-practices/no-send-action': {
    message: 'Do not use send action. Consider using closure actions to work with JS functions instead of relying on the old action system. Please see following guide for more information: https://github.com/ember-best-practices/eslint-plugin-ember-best-practices/blob/master/guides/rules/no-send-action.md'
  },

This will cause the command eslint -f @microsoft/eslint-formatter-sarif failed and can not output sarif.

Closing, since this is duplicated.


"The task 'make' is already active..." when trying to run task a second time.

VSCode Version: Code 1.18.1 (929bacba01ef658b873545e26034d1a8067445e9, 2017-11-16T18:23:26.125Z)
OS Version: Darwin x64 17.3.0
Extensions:

Extension
Author (truncated)
Version

material-icon-theme
PKi
3.1.0

haskero
Van
1.3.1

haskell-linter
hoo
0.0.6

vscode-ghc-mod
hoo
1.2.0

hoogle-vscode
jca
0.0.4

language-haskell
jus
2.4.0

vscode-rust
kal
0.4.2

python
ms-
0.8.0

cpptools
ms-
0.14.3

phoityne-vscode
pho
0.0.16

vscode-icons
rob
7.18.1

vscode-tidalcycles
tid
0.4.1

cmake
twx
0.0.17

cmake-tools
vec
0.10.3

vim
vsc
0.10.5

vscode-todo-highlight
way
0.5.11

clang-format
xav
1.6.1

Steps to Reproduce:

Run my default build task, "make"
The task completes in console, make exits, but Code thinks it is still running. Verified task processes complete with pstree.
I am only able to run the task again after I manually terminate it with the "Tasks: Terminate Task" command.

This just started happening today, as far as I can tell. The only major change was I installed the latest High Sierra update yesterday.
My tasks.json is below:
{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make",
            "command": "make",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": "$gcc"
        },
        {
            "label": "clean",
            "command": "make clean",
            "type": "shell",
            "group": "build",
            "problemMatcher": []
        },
        {
            "label": "release",
            "command": "make release",
            "type": "shell",
            "group": "build",
            "problemMatcher": []
        },
        {
            "label": "test",
            "command": "make test",
            "type": "shell",
            "group": {
                "kind": "test",
                "isDefault": true
            }
        }
    ]
}

Reproduces without extensions: Yes

+1

Dups 37846.


Update

Can you update to the latest version of Minecraft server docker?

You can adjust the container version in the build file: hamc-server-java/build.yaml.
I don't have the time to test if the latest version will work properly, but I welcome a PR or fork if you're willing to put in the time!


Auto-generate batch names

E.g. something based on prefix, date, time. Must be human-readable to some degree (so no UUIDs here).

Done: https://github.com/KBNLresearch/iromlab/commit/f0ae2773c957d554bca86981974f7a562fd084be
Based on UUIDs so NOT very human-readable. Reason: simpler schemes (e.g. based on YYY-MM-DD and number) can result in duplicates if the code is run in parallel on different machines. This can result in all sorts of trouble, so keeping the batch names unique is probably more important than human-readability.


Add support for k8s secrets backed credentials

Remove client side understanding of talking directly to registry
Fix a few bugs

@bmelville

Thanks for the quick review, addressed comments. PTAL.


it's not thread safe

@rultor release, tag is 0.0.5

@rultor release, tag is 0.0.5

@yegor256 OK, I will release it now. Please check the progress here

@rultor release, tag is 0.0.5

@yegor256 Done! FYI, the full log is here (took me 6min)


localhost JSON-RPC provider config

Changes to allow for selection of a JSON-RPC ethers provider, useful in testing against a local node.
Not sure how welcoming of the JSDOC type comments you are. Happy to remove them if they're unwanted.
Added a section to the README documenting the new configuration options.

Untested but concept ACK, thank you!
I don't mind the jsdoc comments but I'd prefer not to add additional dependencies (@types/node) especially because this project otherwise isn't typescript. The README additions are great, thanks for that as well. The only implementation comment I have before testing locally is could we set the mainnet ENS contract as a default? And then if the user sets that option, it overrides ?


Deeplink error messages when getting Person Credential

Description of problem
Error messages displayed when getting the Person Credential issued to BC Wallet
Expected behavior
No error messages shown through process
Steps to reproduce

Install BC Wallet Build 1740
Click Start to get Person Credential
Followed all "happy path" steps
When I get to the step clicking the button "Create Person Credential", the next screen show error "Unable to handle deeplink. There was a problem handing a deeplink." Click Show Details... "Unable to handle deeplink. Error code 1039 - Network request failed"
Click OK on error screen, it shows the Credential Offer screen
All details are correct, click Accept
Credential is added successfully

Screenshots and/or log output

Environment

[X] Occurs on Android
[] Occurs on iOS

Build #: 1740
Android Device Model: Samsung Galaxy S23 Ultra
iOS Device Model:
Workaround
Well, it still issued the PC to my wallet
Severity

[ ] High
[X] Medium
[ ] Low

Fixed in build # 1744


Feat(curves): Add BN254

Add BN254
Description
Implementation of BN254 #548  to be finished with @protocolwhisper
Implements:

[x] Adds BN254 curve
[x] Adds Towered Extension
[x] Adds Twist
[ ] Adds Unit tests
[ ] Adds Differential Fuzzer
[ ] Adds Pairing
[ ] Adds Optimized Pairing Final Exponentiation as described in https://eprint.iacr.org/2015/192.pdf

Type of change
Please delete options that are not relevant.

[x] New feature

Checklist

[x] Linked to Github Issue
[ ] Unit tests added
[ ] This change requires new documentation.

[ ] Documentation has been added/updated.

[ ] This change is an Optimization

[ ] Benchmarks added/run

Codecov Report

Merging #627 (4dd7507) into main (f1f1341) will decrease coverage by 0.51%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main     #627      +/-   ##
==========================================
- Coverage   97.12%   96.61%   -0.51%
==========================================
  Files         114      119       +5
  Lines       26599    26738     +139
==========================================
  Hits        25834    25834
- Misses        765      904     +139

Files
Coverage Δ

...e/short_weierstrass/curves/bn_254/default_types.rs
0.00% <0.00%> (ø)

...tic_curve/short_weierstrass/curves/bn_254/curve.rs
0.00% <0.00%> (ø)

...tic_curve/short_weierstrass/curves/bn_254/twist.rs
0.00% <0.00%> (ø)

...c_curve/short_weierstrass/curves/bn_254/pairing.rs
0.00% <0.00%> (ø)

...short_weierstrass/curves/bn_254/field_extension.rs
0.00% <0.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


fix flaky privileges test

tests should contain the schema name in the table ident

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@240f5c2). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master    #5945   +/-   ##
=========================================
  Coverage          ?   83.11%
  Complexity        ?    12365
=========================================
  Files             ?     1429
  Lines             ?    46745
  Branches          ?     5740
=========================================
  Hits              ?    38852
  Misses            ?     5231
  Partials          ?     2662

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 240f5c2...741a1f0. Read the comment docs.


USB fails to enumerate when running CPU at 480MHz

It was noted today that USB devices appear to not function if the CPU SYSCLK is set to 480MHz. However, if the CPU is dropped to 400MHz, USB works fine.
It's unknown if this is a HAL-related issue, USB-device issue, or silicon defect at this time.
I'm opening this just so we can get an initial read on things and get this documented somewhere.

@jamesmunns noted that he fixed an errata around this in embassy in https://github.com/embassy-rs/embassy/pull/2823 that relates to USB being used in multiple ISR contexts

I think I ran in to this when I started my Arduino H7 project. I'm running at 480MHz but I'm specifying that USB should use the HSI48 clock source which seems to work fine.
https://github.com/olback/h7/blob/907250a846aacf50beab726f9387dd30a5ee3129/h7-cm7/src/main.rs#L123-L125

@olback That's interesting to me because we're running with very similar clock configurations: https://github.com/quartiq/stabilizer/blob/main/src/hardware/setup.rs#L292
Can you confirm that you're not seeing any USB-related issues with the cod eyou just referenced? I'm confused because yous aid you ran into this issue, but also that it seems to work fine now

I experienced this issue. The USB peripheral did work ~1 out of 5 flashing attempts. Also, I noticed my code specifically hang in the usb_device::device_builder::UsbDeviceBuilder::build() call

Noting that ::build() is where the USB core is enabled via RCC, meaning it might actually be closer to https://github.com/embassy-rs/embassy/pull/2677, where it takes a little bit before the RCC is actually active, which the software may be racing.
My suggestion is to insert a delay here: https://docs.rs/synopsys-usb-otg/latest/src/synopsys_usb_otg/bus.rs.html#366-517 after USB::enable().

On Matrix, it was noted that a user was able to resolve this by adding a ~1ms delay after the FDMOD register is configured. The datasheet specifies this needs to be at least 25ms:

This is likely a defect in synopsys-usb-otg.


Decrease shader TIME rollover to 30 seconds on mobile platforms

This avoids precision issues that became obvious when exporting a project to a mobile platform.
Shader animations will have to loop over 30 seconds to avoid visual discrepancies when TIME is reset back to 0.

In general, this looks good. Before merging we should double check what the behaviour on the vulkan-mobile backend is (e.g. does it default to 16p or 32p floats)

In general, this looks good. Before merging we should double check what the behaviour on the vulkan-mobile backend is (e.g. does it default to 16p or 32p floats)

https://github.com/godotengine/godot/pull/52500 wasn't merged, so it might still be defaulting to 32-bit floats right now.

Some notes:

All mobile hardware supports 32 bits (highp) on the vertex shader.
All mobile hardware supports > 16 bits as highp on the fragment shader. Only some (Qualcom old devices) I think are restricted to 20.
I would check we are not mislabeling as mediump by mistake
In Godot 4 we have global shaders, so if you really need something specific, you can use that.
If there is no workaround, I would add a new constant like TIME_SHORT, or something.


Provide prebuilt binaries

Having Rust as a mandatory dependency increases friction when adopting super_native_extensions. We should provide prebuilt binaries to alleviate this. At the same time, there should be an easy opt-in for users who do not wish to use prebuilt binaries and would prefer to build the Rust code as part of Flutter build.
From top top level here are the required steps:
Port cargokit build_tool from Rust to Dart.
build_tool is responsible for preparing the environment for the Rust build (downloading Rust targets, installing NDK, setting up correct environment), running the actual build (cargo) and post process build artifacts (i.e. lipo libraries on macOS and iOS).
Removing Rust as mandatory dependency means that we can no longer use Rust for the build_tool itself. Dart is a natural second choice since the dart-sdk is always available during Flutter build.
Extend build_tool to support prebuilt binaries
In case user did not opt-in to Run local build, the build_tool will

Compute hash for the included Rust code
Download artifacts for current platform and target architecture matching the hash
Verify signature of the prebuilt binaries to ensure that they are original built artifacts created by super_native_extensions CI
Postprocess prebuilt binaries if necessary (i.e. lipo for target architecture on macOS)

Computing hash for Rust code
To make sure that the binaries are matching the code, a SHA 256 hash for Rust source files, Cargo.toml and Cargo.lock is computed. Because this will be done locally this must take into account that the code being hashed might be part of Git checkout with converted line endings.
Verifying binaries
When CI builds the binaries, an EdDSA signature is computed from the private key stored as repository secret. The public key is part of Flutter package. Bundle_tool will download the signature along-side each binary and verify that the signature indeed matches downloaded binary and public key.
Forcing local build
If for any reason user prefers to build the artifacts locally, they can put a cargokit_config file is in the root directory of Flutter project. In case the file is present, bundle_tool will read the configuration and force local build.
Building native libraries
For every commit in main branch, a hash for Rust code is computed. If there are no artifacts available for this hash, CI actions for each platform will prebuilt binaries, generate signature (as described above) and publish the binaries as a Github artifacts.

Ideally, most of what is described here should be a part of cargokit so that it can be reused across projects.


*: expose Raft leader transfer

To simplify leader transfer work in server side, let's separate out the simple parts from https://github.com/coreos/etcd/pull/6038.
/cc @xiang90 @heyitsanthony
Thanks.

Seem you will support transfer leader API later?

@siddontang We will implement leader transfer in etcd layer, right after this.
Just trying to have simpler preceding PR.
Thanks.

lgtm


Robot Singleton Refactor: Fully expand back-compatibility shims

The new protocol API (i.e. the robot with the new protocol API feature flag set) must be able to run Python protocols that use the old api (e.g. from opentrons import robot)

When uploaded from the runapp
When run directly in a terminal both on and off the robot

When the protocol is in charge, it's OK to change the entry point, for instance by adding a script that should be run to run a protocol. However, that script should accept both an old and new protocol.
This can be accomplished either by replacing the implementation of the robot singleton or by fleshing out the rest of the back-compat layer in protocol_api/back_compat.py
Done is a feature-complete reimplementation of the robot singleton API that relies on the new protocol API as an implementation. This should be confirmed by using as many of the robot singleton API tests as possible.

Closed in favor of https://github.com/Opentrons/opentrons/milestone/103


Read about state returned when getting access token (anti CRF attack)

https://docs.microsoft.com/en-us/linkedin/shared/authentication/authorization-code-flow?context=linkedin%2Fcontext&view=li-lms-2022-08&tabs=HTTPS#member-approves-request


Why does the documentation talk about xc3sprog?

The tool we are generally using for doing bitstream loading is OpenOCD (which is also what is packaged in conda and referenced by cmake) yet the instructions at https://symbiflow.readthedocs.io/en/latest/symbiflow-arch-defs/docs/source/getting-started.html#load-bitstream don't talk about OpenOCD at all? (Also it doesn't mention where or how to get xc3sprog either?)

Closing because the docs were updated and they don't talk about xc3sprog anymore:

https://github.com/SymbiFlow/f4pga-arch-defs/pull/2233
https://github.com/SymbiFlow/f4pga-arch-defs/pull/2240


Add GI support to light shows

https://missionpinball.com/forum/topic/blinking-gis-scriptlet/

Added in 0.18.0a17


syntax: dsenv: reimplement shorten_lid by trimming of prefixes

From the commit message:
shorten_lid worked by taking the path of a lid, shortening it as per the
current modules in scope, and reattaching the shortened path to the lid.
However this causes issues since it is not taking shadowing caused by
definitions (see https://github.com/FStarLang/FStar/issues/2702).

This patch reimplements shorten_lid by leveraging lid resolution. To
shorten a name such as A.B.C.x, we try to resolve (in order) x, C.x,
B.C.x and A.B.C.x, and use the first one that works.

Fixes #2702

Posting since I'm not 100% sure this is acceptable. I thought it may be slow.. but I think this is only called when printing, so it should be fine?
Also, should tails (and the analogous inits) be made part of FStar.List.Tot.Base?

Note: this will not make use of prefixes in order to shorten names. So with something like this:
module Test

module T = FStar.Tactics

let x = T.mapply

The printing of x gives this in Emacs:
Test.x
/home/guido/r/fstar/shorten_lid/Test.fst(5,4-5,5)

Type
  t: Reflection.Types.term -> FStar.Tactics.Effect.Tac unit

Definition
  [@ ]
  visible let  x  : t: FStar.Reflection.Types.term -> FStar.Tactics.Effect.Tac Prims.unit = FStar.Tactics.Derived.mapply

which is not great (although correct). I'll try to do something better

I've updated this, and now resugaring will take into account module abbreviations. For instance, the following:
module P

let apply = "fake apply"
let x = apply

open FStar.Tactics
module TD = FStar.Tactics.Derived

let t () : Tac unit =
  FStar.Tactics.Derived.debug "test";
  apply (`id);
  fail ""

The policy is that the most specific abbreviation (if any) is always used, but we try to shrink the tail. So t prints like so:

and x like so:

While at this, I changed the printing of sigelts to use the pretty printer (!). We were previously calling the "ugly" sigelt_to_string'. Though it was calling the "pretty" term_to_string for every subterm, the structure of the sigelt itself was not going by resugaring. I also added some missing desugaring envs into these calls, so more abbreviations happen.
This two changes affect the output of --dump_module and error messages (see https://github.com/FStarLang/FStar/pull/2707/commits/4a5b355792426f6bdbcf36ddfb9de2d0f22b9684), for the better I think, but I think this breaks vale as it needs to look for the empty attribute marker ([@ ]).
A missing nit (seen in the picture above): we should not print a fully qualified name for a top level let binding. So not yet 100% ready.


Allow RPC handlers to accept context as first argument

Resolved comments, rebased, added two more tests.


Intersection of Two Linked Lists

Hello there! I would like to solve the "Intersection of Two Linked Lists" problem available on LeetCode. Can you please assign it to me?

Hey I have assigned you the issue you may work on it. Thanks!

Hey I have assigned you the issue you may work on it. Thanks!

Thanks!! I am working on it!

@ankit0313 can you please add the hactoberfest accepted labels??

@RichaBanerjee the repository already has all the tags so it will automatically be considered for the Hacktoberfest 2023. This repo is operational from last year so no issues with that label.

Can you please assign me this issue? I would like to work on it.


dyld error when used with Carthage

I'm getting the following error when I try to run an app which links to web3swift built with Carthage:
dyld: Library not loaded: @rpath/keccak.framework/keccak
  Referenced from: /Users/dawiddr/Library/Developer/CoreSimulator/Devices/C36121C6-6707-4E38-B345-7D25243EEF14/data/Containers/Bundle/Application/E6AB2AC3-998B-486A-A020-49D08A04AFFF/CryptoWalletPrototype.app/Frameworks/web3swift.framework/web3swift
  Reason: image not found

Unfortunately there's no keccak.framework in Carthage/Build/iOS:
$ find Carthage/Build/iOS -name "*.framework"
Carthage/Build/iOS/BigInt.framework
Carthage/Build/iOS/PromiseKit.framework
Carthage/Build/iOS/SipHash.framework
Carthage/Build/iOS/web3swift.framework

The app links to all four.
My Cartfile:
github "BANKEX/web3swift"

My Cartfile.resolved:
github "BANKEX/web3swift" "2.1.3"
github "attaswift/BigInt" "v3.1.0"
github "attaswift/SipHash" "v1.2.2"
github "mxcl/PromiseKit" "6.7.0"

Any clues? Thanks

Let me check that

Works now. Thank you for acting so quickly!


Using Multi-line Content, Using Basic Markdown Syntax

Vue-markdown does not seem to render properly with multi-line markdown unless I append   for example immediately after the opening tag. Basic markdown syntax such as headers and lists do not appear to render.

Sorry to comment too late!!!
Maybe i don't get your point clearly, can you post the example script on this occasion?
Thx~


Point to latest version in peer dependencies of little-state-machine in package.json

When installing this package, it looks like its peerDependencies look for ittle-state-machine version 3.0.0. Copied from the package.json at its current release (version 2.0.0):
  "peerDependencies": {
    "little-state-machine": "^3.0.0",
    "react": "^16.8.0",
    "react-dom": "^16.8.0"
  },
  "dependencies": {
    "little-state-machine": "^4.0.2",
    "lodash.clonedeep": "^4.5.0",
    "lodash.isempty": "^4.4.0",
    "lodash.isequal": "^4.5.0",
    "lodash.isobject": "^3.0.2",
    "lodash.transform": "^4.6.0",
    "react-json-view": "^1.19.1",
    "react-simple-animate": "^3.3.0"
  }

So if a user only have little-state-machine 4.0.2, trying to do an install (npm install little-state-machine-devtools --save-dev) will throw an error, asking the user to either fix the upstream dependency conflict, or use --force to accept the broken dependency resolution:

npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>
Should we bump both to the latest version? Should we just go ahead with --legacy-peer-deps? What do you recommend?
Thanks for the awesome package!

let's point to the latest. Do you want to send a PR?

Thank you for the fast response; Submitted #20  to bump the version. Feel free to close the issue! This should also fix the demo that is linked to on the github readme:

thanks, patch released.


send_media_group returned error:  "Bad Request: media to send are not specified"

I'm using latest version of gem <IP_ADDRESS>. This error when I try to set 2 photos in my channel. I Use this code:

 Telegram::Bot::Client.run(TOKEN) do |bot|
  media = [Telegram::Bot::Types::InputMediaPhoto.new(media: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSMzFLAE9nbpaqjU9CYVUfcuI_m4U83TYsG3_-T1t3s2q1dzTSO0w"),
           Telegram::Bot::Types::InputMediaPhoto.new(media: "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSMzFLAE9nbpaqjU9CYVUfcuI_m4U83TYsG3_-T1t3s2q1dzTSO0w")]
  bot.api.send_media_group(chat_id: CHAT_ID, media: media )
end

And I get this error:
 telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/api.rb:76:in call': Telegram API has returned the error. (ok: "false", error_code: "400", description: "Bad Request: media to send are not specified") (Telegram::Bot::Exceptions::ResponseError)         from /Users/antonkachan/.rvm/gems/ruby-2.4.2/gems/telegram-bot-ruby-<IP_ADDRESS>/lib/telegram/bot/api.rb:60:in method_missing'

Probably InputMediaPhoto and InputMediaVideo types are missed in '/lib/telegram/bot/api.rb' file, in the INLINE_QUERY_RESULT_TYPES constant. When I added there Telegram::Bot::Types::InputMediaPhoto my code has worked. Resolve this problem please

OMG this is still happenning, is this gem abandoned @atipugin? do you want help in maintaining?

@KachanAnton350504 this issue also happens if using Faraday::UploadIO and isn't fixed by @krelly's patch

using multiple you have to use "attach://" as in https://github.com/php-telegram-bot/core/issues/811, then @krelly patch works

OMG this is still happening, is this gem abandoned @atipugin? do you want help in maintaining?

@brauliobo Gem is maintained as you can see by releases and changelog. PR #215 wasn't merged because it adds InputMedia* types to list of InlineQueryResult* which is not correct.
Anyway i've added some changes to master, following code should work now:
bot.api.send_media_group(
  chat_id: message.chat.id,
  media: [
    Telegram::Bot::Types::InputMediaPhoto.new(media: 'attach://file1'),
    Telegram::Bot::Types::InputMediaPhoto.new(media: 'attach://file2')
  ],
  file1: Faraday::UploadIO.new('/path/to/file1.png', 'image/png'),
  file2: Faraday::UploadIO.new('/path/to/file2.png', 'image/png')
)

Please check if everything's ok.

Hi! I have trouble making the send_media_group sample code above work.
Cant seem to read file1 and file2. I suspect there is something with the faraday im not doing right. Any faraday boiler code i need to write in front to make it work? I installed the gem what is clueless of how it works.
Please help! Thanks

The below code dont work! Possible to help me?
`   photos = [Telegram::Bot::Types::InputMediaPhoto.new(media: "photo_2021-10-26_15-04-01-2.jpeg"),
Telegram::Bot::Types::InputMediaPhoto.new(media: "photo_2021-10-26_15-04-01-2.jpeg")]
Telegram::Bot::Client.run(@token) do |bot|
   bot.api.send_media_group(chat_id: message.chat.id, media: photos)
end`

@antondgx Found the solution, can you try this one:
photos = [
  Telegram::Bot::Types::InputMediaPhoto.new(
    type: 'photo',
    media: 'https://images.unsplash.com/photo-1453728013993-6d66e9c9123a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1000&q=80',
    caption: 'MyCaption',
    parse_mode: ''
  ),

  Telegram::Bot::Types::InputMediaPhoto.new(
    type: 'photo',
    media: 'https://images.unsplash.com/photo-1453728013993-6d66e9c9123a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1000&q=80',
    caption: 'MyCaption',
    parse_mode: ''
  )
]

Telegram::Bot::Client.run('token') do |bot|
  bot.api.send_media_group(
    chat_id: 'chat_id',
    media: photos,
    caption: 'MyCaption'
  )
end

It works too for me (you can try to open the file or try the code above instead of sending a request as in my case):
Telegram::Bot::Client.run('token') do |bot|
  bot.api.send_media_group(
    chat_id: 'chat_id',
    media: [
      Telegram::Bot::Types::InputMediaPhoto.new(media: 'attach://file1', caption: '123', parse_mode: ''),
      Telegram::Bot::Types::InputMediaPhoto.new(media: 'attach://file2', caption: '123', parse_mode: ''),
      Telegram::Bot::Types::InputMediaPhoto.new(media: 'attach://file3', caption: '123', parse_mode: '')
    ],
    file1: Faraday::FilePart.new(StringIO.new(send_request("/api/v1/cameras/1/snapshot", :get)), 'image/jpeg'),
    file2: Faraday::FilePart.new(StringIO.new(send_request("/api/v1/cameras/2/snapshot", :get)), 'image/jpeg'),
    file3: Faraday::FilePart.new(StringIO.new(send_request("/api/v1/cameras/3/snapshot", :get)), 'image/jpeg'),
    caption: 'My capture'
  )
end

Actually had a problem, just added caption: '123', parse_mode: '' to the Telegram::Bot::Types::InputMediaPhoto and it started work


cannot read property classList of null when using mobile in developer tools

When I try the demo page [https://q448x.github.io/timepicker-ui-docs/] in chrome in developer mode, setting the device toolbar to an android phone, the clockface control gives an error. Changing the hour hand causes an error "cannot read properly classList of null", and then sets the displayed time to NaN.
This does not happen when I set the device to iPhone. It also didn't happen on my actual android phone, so maybe there isn't an issue here at all, but I'm uneasy about deploying this in production when it doesn't work in developer mode.
(the mobile setting works fine, but I prefer the clockface, even on mobile)

Hi, thanks for the report I will look into that.

I think I fixed this problem, I will close this topic. If you find other or similar bugs, please report them. Thanks!


Add support for kotlin [WIP]

Don't merge this yet.
This adds preliminary support for Kotlin but there are some missing peaces yet.
The current status of this PR is:

[X] Support kotlin language
[X] packages
[X] parcelable
[X] Import kotlin types
[X] Import class references
[ ] generate files in directories that matches the packages

@hebertialmeida Hey, this PR is almost finished but I think I need your help in the remaining steps.
The Kotlin files need to be generated in a directory that matches the package, so one class with the package com.github.hebertialmeida.modelgen needs to be generated with the path com/github/hebertialmeida/modelgen.
I tried to implement this, but since I don't know the project very well, It's a bit hard for me.
Can you implement this please?
Another point that may or may not be improved is the class reference.
This is working in the current state of the PR, but it's not my preferred way of doing this.
In Kotlin when you reference a class that is not in the same package as the current one, you need to import it.
Here is an example of what I'm saying:
import java.util.Date
val date: Date

Another way of doing this, it's by reference the class using the full path, package and class like, like in the following example:
val date: java.util.Date

Personally I prefer the first approach because it's easier to read, but the second one was easier to implement, because this way the imports aren't needed.
What do you think about this?

I think your approach for packages is really great! Do you think that it should cover most cases of types?
Regarding the generation path, I was thinking, do you think that the spec JSON file should also follow the generation folder structure or it can be flat as it is today?
I ask that because I think we should find a common-sense between both platforms while keeping it flexible at the same time.

I think your approach for packages is really great! Do you think that it should cover most cases of types?

The basic types are more or less covered, we can try to add more like Set, or others if you remember more.
Despite this, one thing that can be a bit harder to support is external dependencies.
If you want to support depending on handwritten classes, we may need to change the json files to declare external classes with the class name and package.
But maybe that can be a future improvement.
What do you think?

Regarding the generation path, I was thinking, do you think that the spec JSON file should also follow the generation folder structure or it can be flat as it is today?

The correct way of doing this in Kotlin would be generate the folder structure, otherwise the IDE will show a warning because the package doesn't correspond with the folder structure.


.yml

so mecha karen is a security scanner now? cool is that mecha karens real name?

u cheeky little


Aligning input and output formats

Description
This PR aligns input and output field names. It also adds statistics and therefore resolves #ENG-3078. It furthermore adds the time to solution in the statistics section and therefore resolves #ENG-3072. It also resolves #ENG-3057 by adding progression to the statistics section. This PR adds a context to run.CLI and run.HTTP - this is needed to determine when we started a run, which we need to compute the duration of a run as part of statistics.
Resolves ENG-3020, ENG-3078, ENG-3072, ENG-3057

How do we envision users to add custom data to the output and/or how can I locally use my verbose output?

There are CustomData fields on the schema.Output struct that you can use.


Window screen placement is not consistent between sessions

The window is able to restore its last session when it comes to height, width and position, but it doesn't retain the screen it last resided.
https://user-images.githubusercontent.com/28309837/150586944-c8255483-889d-4882-80f7-8628f4e1fc93.mp4
The expected behavior would be for the window to remember the screen on the last session.

The current implementation should work actually, as it saves the x and y coordinates and height and width. Can you attach your config.json (~/.config/whatsapp-desktop-linux/) when closing the app after moving it to your second screen?