Better discoverability of contributing guides

Having a conversation in the #docs channel in Discord. We're proposing:

creating a Contributing directory for all our various kinds of contributing guides
renaming and moving ALL BUT CONTRIBUTING.md (since that's an expected file people look for)

this way, files don't need to follow the ALLCAPS.md file format and can actually be more descriptive
e.g. Do people know that RECIPES.md is a writing guide? :sweat_smile:

updating the docs contributing page with the new links, now that locations and filenames have changed
linking all these other contributing guides in the new directory prominently in CONTRIBUTING.md for discoverability from there.

I think we are willing to experiment with this change! BUT...
DO NOT make a PR yet, because I we are talking about renaming/moving files, and it will be easier to agree to that here first.
So, propose filenames for the ALLCAPS.md contributing guides in this thread first.

I think that since they will be in the contributing directory, suffixing each file with "guide" might be enough. (Recipes-Guide.md, Writing-Guide.md) Personally, I find the all caps style pretty hard to read. I think for readability of long file names it's best if the words are separated by a symbols. To be more explicit they could be suffixed with "contributing guide" (Writing-Contributing-Guide.md, Recipes-Contributing-Guide.md). It is verbose, but I prefer this way because it is the most explicit. Thought?

I've honestly looked at RECIPES in the codebase and went... What is that?
Names are super important when trying to provide clarity. Clever names work, but can be misleading or confusing to the uninitiated.
WRITING GUIDE might actually be a better name. If it's a writing guide for a specific subject then:
WRITING GUIDE- DOCS

I've honestly looked at RECIPES in the codebase and went... What is that?
Names are super important when trying to provide clarity. Clever names work, but can be misleading or confusing to the uninitiated.
WRITING GUIDE might actually be a better name. If it's a writing guide for a specific subject then: WRITING GUIDE- DOCS

Same here @Jothsa! I’m new to Astro so when I saw “recipes” and thought “so are we cooking or??” Do you want to work on this together once @sarah11918 gives the thumbs up? :)

@CBID2 you quoted @Hopelezz but tagged me 😆

@CBID2 you quoted @Hopelezz but tagged me 😆

Ooh sorry lol. My offer still remains though :)

I'd be fine working on it with you if you want. It shouldn't be too much to do.

@Jothsa and @CBID2 , I'm down for team effort 🔥. If either of you want to we can tackle it this weekend?
Free Saturday @5pm CST and possibly Sunday.
Discord name is Hopelezz#1878

I would say our naming was less clever and more, "If the convention is ALLCAPS then we need a single word or this will be very difficult to read."  :sweat_smile:
OK, so what I want to see in this thread is a proposal for all the new file names here. We no longer need caps, and yes, we'll want - separators between words.
Once we agree on the file names, then I think a PR can go forward! :raised_hands:

@Jothsa and @CBID2 , I'm down for team effort 🔥. If either of you want to we can tackle it this weekend?
Free Saturday @5pm CST and possibly Sunday.
Discord name is Hopelezz#1878

That's 6:23pm EDT for me, so that's fine :)

@sarah11918 , would you mind providing us with a list of file names to be relabeled and we can collaborate on names?

Hopelezz#1878
Just sent you a friend request on Discord! I'm Chrissy(she/her)!

It should be all the ALLCAPS Markdown  files at the root of the project EXCEPT for CONTRIBUTING.md. That one should stay as is. anything that looks like a guide (for topic, or by role of contributor) of any kind that I would have written! And, they're probably all linked to in docs from the new contributing page. I'm not looking at the repo right now, but I think that should give you enough to go on!

I didn't discover the writing guides for weeks while writing a guide for the docs :).
I didn't even think to check the Astro docs for that. I'm very happy I asked on Discord and found @sarah11918 who pointed me to the docs contributing page, because that's some good stuff there.
Cool to see this improvement happening!

In my specific case I would have probably found the guides sooner if they had been prominently featured in CONTRIBUTING.md or mb README.md. I especially combed through CONTRIBUTING.md a few times to find specific writing guidelines or links to such documents.
For me this would have already made a difference - a section in CONTRIBUTING.md with a heading like Writing Guidelines and a link to the existing page in the docs.
The question of naming is kind of secondary for me, but might point to a larger issue - people being confronted with 3 lengthy files could be a lot (CONTRIBUTING.md + WRITING GUIDE.md + RECIPES.md). It didn't break me but it got a little messy 😵💫.
In my case -  expanding on an existing stub in the CMS recipes section, being sort of familiar with PRs - a few paragraphs of the WRITING GUIDE.md were really the thing that I needed: 'write informally but not too casually', 'say you not we', 'don't add narratives'.
Reading RECIPES.md was fascinating tho, I learned what recipes are 😅.
I'm not sure if this is even such a problem. But maybe it kind of points back at the issue of discoverability of relevant information. Just another facet.

More ideas

Put the existing guides in a folder called Writing guides. Link to it in CONTRIBUTING.md. Introduce the links with a guiding explanation - e.g.
'WRITING GUIDE.MD is to learn about the tone we use, and to learn how we structure our guides.
RECIPES.md is for people contributing to the following sections of the docs: recipes, CMS, xyz...'

Make one giga file for all things about writing. I know You've probably thought this one through and rejected it already for good reasons, so I'm simply adding this for completeness :). It would be necessary to give it a table of contents at the top and a clear, welcoming intro. This set up might have the advantage that the guiding explanation (see idea 1) would be closer to the content.

I was thinking something more along the lines of:

Guide - Maintainer.md
Guide - Translating.md
Guide - Writing.md
Guide -  Recipies (How-Tos).md

Inside CONTRIBUTING.md we would give a brief shoutout to each file and what they do:

Guide - Maintainer: A how-to guide on maintaining the project
Guide - Translating: A guide on translating project content
Guide - Writing: A guide on writing for the project
Guide - Recipes (How-Tos): Step-by-step how-to guides for accomplishing specific tasks

@CBID2 Sorry I was able to be on last evening. I'm swamped trying to buy a house 😅

I was thinking something more along the lines of:

Guide - Maintainer.md

Guide - Translating.md

Guide - Writing.md

Guide -  Recipies (How-Tos).md

Inside CONTRIBUTING.md we would give a brief shoutout to each file and what they do:

Guide - Maintainer: A how-to guide on maintaining the project

Guide - Translating: A guide on translating project content

Guide - Writing: A guide on writing for the project

Guide - Recipes (How-Tos): Step-by-step how-to guides for accomplishing specific tasks

@CBID2 Sorry I was able to be on last evening. I'm swamped trying to buy a house 😅

Hmm.. How about we turn recipes into How-tos instead?

I opted against it in my head because the whole guide is calling them recipes. Unless we change every reference from Recipies to How-To

I opted against it in my head because the whole guide is calling them recipes. Unless we change every reference from Recipies to How-To

Ohh I see @Hopelezz. By the way, Recipies should be Recipes.

In the context of programming the so called "cookbooks" are books which contain short code snippets - "recipes" that help you solve some very specific and self contained problem.
I'm not sure if there's a better name for this type of content other than recipes. The term "how to" feels more general (hyperonymous) to me personally

Hey everyone. Here’s a spreadsheet that I created to address this issue: https://docs.google.com/spreadsheets/d/1-SFhgI-mSVB9mkDyYfnNXw7DvIVqt6_WR0e4waD-3G0/edit
@sarah11918, you made a good point on How-tos being unclear. Maybe we can name them Explainer Guides?

OK, just so these are all copied here and people don't have to go to another page to view the spreadsheet, I'm copying the data here:

Curent Name
Proposed Name

README.md
README.md

SUPPORT.md
SUPPORT.md

WRITING.md
Guide-WRITING.md

RECIPES.md
Guide-HOW-TOS.md

MAINTAINERS.md
Guide-MAINTAINERS.md

TRANSLATING.md
Guide-TRANSLATING.md

So, let's go one-by-one:
README has to stay as README! That's what people expect. This should link to the Contributing guide (ooh, I don't see that one above. I'll do that one next)
CONTRIBUTING.md Also has to stay the same! That's what people expect. I think it's also OK for this one to stay at the root of the project, since it's such a common file to have. So, no changes to the filenames of either of these.
If we are going to make a new folder e.g. /contributor-guides/ then I don't think all the files need to start with "guide." If someone navigates into that folder, I think that would be distracting to see as the start of all the file names, and would make them need to work harder to see which guides they actually are.
So, what do we think about renaming and moving to /contributor-guides/:

Curent Name
Proposed Name

SUPPORT.md
astro-support-squad-guide-to-docs.md

WRITING.md
writing-and-style-guide.md

RECIPES.md
submitting-a-recipe.md

MAINTAINERS.md
astro-maintainers-guide-to-docs.md

TRANSLATING.md
translating-astro-docs.md

I think these all make it clear that sometimes it's about a role needing to have their own generic "guide" to the docs (all the ways that, in your role, you might have special responsibilities) and otherwise, the title based on an action like submitting a recipe or translating the docs.
By giving a longer "writing and style guide", I think we catch both people who are execting to find a writing guide, and people who are expecting to find a style guide!

/contribution-guides/
Contributor sounds odd.

Curent Name
My Proposed Name

SUPPORT.md
support-squad-guide-to-docs.md

WRITING.md
writing-and-style-guide-to-docs.md

RECIPES.md
submitting-a-recipe-guide-to-docs.md

MAINTAINERS.md
maintainers-guide-to-docs.md

TRANSLATING.md
translating-guide-to-docs.md

It's understood we're in Astro. So I think we can remove it from the names.
The Context in front makes it cleaner I feel.

OK, I'm going to make some executive decisions here and give y'all some PR tasks to do!! :partying_face:
My decisions:

the folder really should be /contributor-guides/ and not "contribution" because these folders are FOR the contributors. Not every guide is specifically about "making a contribution" or "how to make a contribution". There are some guides that are for particular roles, like maintainers and support squad. So, the folder should refer to the people, not the contribution itself.

I like writing-and-style-guide.md BECAUSE it is too long! I think it will stand out and people will notice it! Some people expect to see a writing guide, and some expect to see a style guide, so this makes sure everyone knows they have the right file!

I do want the maintainers file to be labelled astro-maintainers-guide-to-docs because unlike many projects, our docs are an entirely separate repo, and sometimes people think of themselves as an "astro maintainer" but not necessarily a maintainer when it comes to this docs repo. This document is to be a bit of a reminder and nudge for them specifically for that reason, to remind them that as an Astro maintainer, you have a special role here in this docs repo. I agree in general with not using Astro when it's assumed, and that's why I chose not to use it for the support squad document.

We're going to do this in stages so that nothing breaks  :laughing:
@CBID2 I'd love for you to submit a PR that:

creates a new folder at the root of the project (not in src or anything) called /contributor-guides/
makes an EXACT COPY of the content of the existing files I listed above and puts them in this new folder, with the new names I suggested in my earlier post. (Do not delete the existing files, because other places link to them.)

This means that when we're done, we will have two versions of all those guides, one with the old name at the root and one with the new name in the new folder. That's fine. We'll handle searching for and updating any links to point to these new files in a subsequent PR. So, these new files will just sit there, waiting to be linked to in the next PR, which we can put @Hopelezz on once this is done!

OK, I'm going to make some executive decisions here and give y'all some PR tasks to do!! 🥳
My decisions:

the folder really should be /contributor-guides/ and not "contribution" because these folders are FOR the contributors. Not every guide is specifically about "making a contribution" or "how to make a contribution". There are some guides that are for particular roles, like maintainers and support squad. So, the folder should refer to the people, not the contribution itself.
I like writing-and-style-guide.md BECAUSE it is too long! I think it will stand out and people will notice it! Some people expect to see a writing guide, and some expect to see a style guide, so this makes sure everyone knows they have the right file!
I do want the maintainers file to be labelled astro-maintainers-guide-to-docs because unlike many projects, our docs are an entirely separate repo, and sometimes people think of themselves as an "astro maintainer" but not necessarily a maintainer when it comes to this docs repo. This document is to be a bit of a reminder and nudge for them specifically for that reason, to remind them that as an Astro maintainer, you have a special role here in this docs repo. I agree in general with not using Astro when it's assumed, and that's why I chose not to use it for the support squad document.

We're going to do this in stages so that nothing breaks 😆
@CBID2 I'd love for you to submit a PR that:

creates a new folder at the root of the project (not in src or anything) called /contributor-guides/
makes an EXACT COPY of the content of the existing files I listed above and puts them in this new folder, with the new names I suggested in my earlier post. (Do not delete the existing files, because other places link to them.)

This means that when we're done, we will have two versions of all those guides, one with the old name at the root and one with the new name in the new folder. That's fine. We'll handle searching for and updating any links to point to these new files in a subsequent PR. So, these new files will just sit there, waiting to be linked to in the next PR, which we can put @Hopelezz on once this is done!

Yes I am @sarah11918! :)

@sarah11918

My PR: #3392

Reopening this, since the issue isn't done, and @Hopelezz is up next to finish it!  :raised_hands:

Now, @Hopelezz , when you're ready, you get to....
Do a search on the entire docs repo for SUPPORT.md / WRITING.md / RECIPES.md / MAINTAINERS.md / TRANSLATING.md and update any links that still point there. This should include (but might not be limited to...):

Update the links on our Contribute to Docs page in docs https://docs.astro.build/en/contribute/ so they point to the new files with the better names
Update the "Translate this page" link in the RightSidebar which currently links to the translator guide. It should now point to the new one
Update all the new guides in contributor-guides that point to other guides
Update the existing README.md and CONTRIBUTING.md that should NOT have changed/moved, but still probably link to other guides.

Only when you're sure you've caught and updated EVERYTHING, we can delete from the root:
SUPPORT.md
WRITING.md
RECIPES.md
MAINTAINERS.md
TRANSLATING.md
Remember, please do NOT move/delete README.md nor CONTRIBUTING.md. Those should both stay in the root, with their existing titles! Only their content should be updated so that they now link to the newly-named/located guide!

Now, @Hopelezz , when you're ready, you get to....
Do a search on the entire docs repo for SUPPORT.md / WRITING.md / RECIPES.md / MAINTAINERS.md / TRANSLATING.md and update any links that still point there. This should include (but might not be limited to...):

Update the links on our Contribute to Docs page in docs https://docs.astro.build/en/contribute/ so they point to the new files with the better names
Update the "Translate this page" link in the RightSidebar which currently links to the translator guide. It should now point to the new one
Update all the new guides in contributor-guides that point to other guides
Update the existing README.md and CONTRIBUTING.md that should NOT have changed/moved, but still probably link to other guides.

Only when you're sure you've caught and updated EVERYTHING, we can delete from the root: SUPPORT.md WRITING.md RECIPES.md MAINTAINERS.md TRANSLATING.md
Remember, please do NOT move/delete README.md nor CONTRIBUTING.md. Those should both stay in the root, with their existing titles! Only their content should be updated so that they now link to the newly-named/located guide!

Hey @sarah11918. It’s been a while since you reopened this issue. If Hopeless still does not respond, I’d be happy to do the other PR for this issue, so it won’t go stale.

Hi @CBID2, we haven't heard from @Hopelezz , so I guess Mark is still busy. Don't worry Mark, we'll get you involved next time!
Sure, go ahead and start this next part of the Issue. Please start by following only the four bullet points above. (Don't do any file deleting when you initially create the PR, because that's harder to recover from.  :sweat_smile: ) Let's make sure the rest of the PR tasks are fully working first.

Hi @CBID2, we haven't heard from @Hopelezz , so I guess Mark is still busy. Don't worry Mark, we'll get you involved next time!
Sure, go ahead and start this next part of the Issue. Please start by following only the four bullet points above. (Don't do any file deleting when you initially create the PR, because that's harder to recover from.  :sweat_smile: ) Let's make sure the rest of the PR tasks are fully working first.

Got it @sarah11918

Hi @CBID2, we haven't heard from @Hopelezz , so I guess Mark is still busy. Don't worry Mark, we'll get you involved next time!
Sure, go ahead and start this next part of the Issue. Please start by following only the four bullet points above. (Don't do any file deleting when you initially create the PR, because that's harder to recover from.  :sweat_smile: ) Let's make sure the rest of the PR tasks are fully working first.

Got it @sarah11918

Just to be clear @sarah11918, you mean the first four here?

Yes:
Do a search on the entire docs repo for SUPPORT.md / WRITING.md / RECIPES.md / MAINTAINERS.md / TRANSLATING.md and update any links that still point there. This should include (but might not be limited to...):

Update the links on our Contribute to Docs page in docs docs.astro.build/en/contribute so they point to the new files with the better names
Update the "Translate this page" link in the RightSidebar which currently links to the translator guide. It should now point to the new one
Update any links inside the new guides in contributor-guides that point to other guides
Update any necessary links inside of the existing README.md and CONTRIBUTING.md (again, these files themselves should not be changed/moved, but still probably link to other guides)

Yes:
Do a search on the entire docs repo for SUPPORT.md / WRITING.md / RECIPES.md / MAINTAINERS.md / TRANSLATING.md and update any links that still point there. This should include (but might not be limited to...):

Update the links on our Contribute to Docs page in docs docs.astro.build/en/contribute so they point to the new files with the better names
Update the "Translate this page" link in the RightSidebar which currently links to the translator guide. It should now point to the new one
Update any links inside the new guides in contributor-guides that point to other guides
Update any necessary links inside of the existing README.md and CONTRIBUTING.md (again, these files themselves should not be changed/moved, but still probably link to other guides)

Done! :) Here is the pull request


[core-http] bump major version to v3

For the runtime behavior change in deserializing parsed project from XML.
Packages impacted by this PR
@azure/core-http

API change check
API changes are not detected in this pull request.


Share.share iOS sms got an extra information not wanted

🐛 Bug Report
When i share my content ( which is a simple text ) by choosing sms on iOS, i find an object not wanted "xxxxx.app" in my content.

To Reproduce

Import Share from react-native
Use it with this content : {  message: 'text',
title: 'text',
url: null }
Go on iOS and share using sms

Expected Behavior
I thought that content will just contain my text.
Code Example
`import React, { Component } from 'react';
import {Share, View, Button} from 'react-native';
export default class Example extends Component {
constructor(props){
    super(props);

}

async link(code){
    if (code !== undefined){

        try {
            const result = await Share.share({
                message: 'Code d\'accès Seezam : '+code,
                title: 'Partage du code d\'accès Sezaam',
                url: null
            }, {
                // Android only:
                dialogTitle: 'Partager votre code',
                subject: 'Partage d\'accès à la box Sezaam'
            });

            if (result.action === Share.sharedAction) {
                if (result.activityType) {
                    console.log('ACTIVITY TYPE :: ',result.activityType);
                    // shared with activity type of result.activityType
                } else {
                    // shared
                }
            } else if (result.action === Share.dismissedAction) {
                // do nothing
            }
        } catch (error) {
            alert(error.message);
        }

    }
}

render() {
    return (
        <View>
            <Button onPress={()=>{this.link(code)}}/>
        </View>
    );
}

}`
Environment
React Native Environment Info:
react-native : 0.58
System:
OS: Linux 4.15 Linux Mint 18.3 (Sylvia)
CPU: x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
Memory: 6.69 GB / 15.55 GB
Shell: 4.3.48 - /bin/bash
Binaries:
Node: 10.8.0 - /usr/local/bin/node
npm: 6.2.0 - /usr/local/bin/npm
SDKs:
Android SDK:
Build Tools: 23.0.3, 25.0.0, 26.0.2, 26.0.3, 27.0.3, 28.0.0, 28.0.2, 28.0.3
API Levels: 21, 23, 24, 25, 26, 27
npmGlobalPackages:
create-react-native-app: 1.0.0
react-native-cli: 2.0.1

Which version of react-native are you using? The Env info doesn't show.
Also, I can see that you are relying on https://github.com/react-community/create-react-native-app, which has been archived. You should use Expo-CLI instead.
LMK if the issue still appears with the latest version of React Native.

I'm using react-native 0.58.

And i can't a way to delete this object into my content.

👋 there.
So, I just tried to use your code and it didn't actually work. To get it to a working state I had to change it to:
import * as React from 'react';
import { Button, View, StyleSheet, Share } from 'react-native';

export default class App extends React.Component {
  async link(code) {
    if (code !== undefined) {
      try {
        const result = await Share.share(
          {
            message: "Code d'accès Seezam : " + code,
            title: "Partage du code d'accès Sezaam",
            url: 'string'
          },
          {
            // Android only:
            dialogTitle: 'Partager votre code',
            subject: "Partage d'accès à la box Sezaam"
          }
        );

        if (result.action === Share.sharedAction) {
          if (result.activityType) {
            console.log('ACTIVITY TYPE :: ', result.activityType);
            // shared with activity type of result.activityType
          } else {
            // shared
          }
        } else if (result.action === Share.dismissedAction) {
          // do nothing
        }
      } catch (error) {
        alert(error.message);
      }
    }
  }

  render() {
    return (
      <View style={styles.container}>
        <Button
          title="test"
          onPress={() => {
            this.link('123123');
          }}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    paddingTop: 40,
    backgroundColor: '#ecf0f1'
  }
});

That said, once I got the code to work I couldn't repro your issue with version RN 0.59. I'm going to close this, please provide a new (which means, a react-native init-ed project with the minimal changes that leads to creating the same issue you are reporting) if this still happens to you in RN 0.59.


Settings Profiles - should status bar item label be singular?

Might be clearer as "Settings Profile" rather than "Settings Profiles".
If so, for consistency the color customizations should perhaps get renamed as well:

/assign @sandy081

@gjsjohnmurray Thanks for the feedback, very much appreciated 👏
Settings Profiles is the feature name and is used everywhere like in command pallette. So to be consistent used that everywhere.

Fair enough.


not compiling on openSUSE-LEAP-15.1

OS: openSUSE-LEAP-15.1
Compiling didn't worked with bazel-0.22 by openSUSE-15.1 and with the current bazel from here: https://github.com/bazelbuild/bazel/releases/download/0.28.1/bazel-0.28.1-linux-x86_64
I always got this error:
ERROR: Unrecognized option: --incompatible_package_name_is_a_function=false
There's a bug report at bazel which says, that this option has been removed in bazel>=0.22.
https://github.com/bazelbuild/bazel/issues/7295
--
So I tried: https://github.com/bazelbuild/bazel/releases/download/0.21.0/bazel-0.21.0-linux-x86_64
And I also tried it one more time with bazel-0.22 and bazel-0.28.1, after commenting out this line in .bazelrc:
https://github.com/sorbet/sorbet/blob/a67fb84c40af292048272db8c229e5bb2b8cca08/.bazelrc#L7
Commenting out that line or using bazel-0.21 successfully workarounded that error!
--
Sadly I just ran into another error (same for bazel-0.21, bazel-0.22 and bazel-0.28.1).
ERROR: /home/user/Sorbet/build/sorbet/main/BUILD:9:1: every rule of type cc_binary implicitly depends upon the target '@llvm_toolchain//:toolchain', but this target could not be found because of: no such package '@llvm_toolchain//': Traceback (most recent call last):
        File "/home/user/.cache/bazel/_bazel_user/cdcf9e782084ebba1bd09c1d7b94d687/external/com_grail_bazel_toolchain/toolchain/internal/configure.bzl", line 87
                _download_llvm_preconfigured(rctx)
        File "/home/user/.cache/bazel/_bazel_user/cdcf9e782084ebba1bd09c1d7b94d687/external/com_grail_bazel_toolchain/toolchain/internal/llvm_distributions.bzl", line 78, in _download_llvm_preconfigured
                fail(("Failed to detect host OS versi...)))
Failed to detect host OS version:

Unsupported linux distribution and version: opensuse-leap, 15.1
ERROR: Analysis of target '//main:sorbet' failed; build aborted: no such package '@llvm_toolchain//': Traceback (most recent call last):
        File "/home/user/.cache/bazel/_bazel_user/cdcf9e782084ebba1bd09c1d7b94d687/external/com_grail_bazel_toolchain/toolchain/internal/configure.bzl", line 87
                _download_llvm_preconfigured(rctx)
        File "/home/user/.cache/bazel/_bazel_user/cdcf9e782084ebba1bd09c1d7b94d687/external/com_grail_bazel_toolchain/toolchain/internal/llvm_distributions.bzl", line 78, in _download_llvm_preconfigured
                fail(("Failed to detect host OS versi...)))
Failed to detect host OS version:

Unsupported linux distribution and version: opensuse-leap, 15.1
INFO: Elapsed time: 69.512s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (18 packages loaded, 96 targets configured)
    Fetching @llvm_toolchain; fetching

I got LLVM and Clang installed.
$ rpm -qa '*llvm|LLVM|clang*'
llvm7-LTO-devel-7.0.1-lp<IP_ADDRESS>.x86_64
llvm7-devel-7.0.1-lp<IP_ADDRESS>.x86_64
llvm7-polly-7.0.1-lp<IP_ADDRESS>.x86_64
llvm-7.0.1-lp151.1.1.x86_64
llvm7-7.0.1-lp<IP_ADDRESS>.x86_64
libLLVM7-7.0.1-lp<IP_ADDRESS>.x86_64
clang-checker-7.0.1-lp151.1.1.x86_64
clang7-7.0.1-lp<IP_ADDRESS>.x86_64
llvm-devel-7.0.1-lp151.1.1.x86_64
libLLVM7-32bit-7.0.1-lp<IP_ADDRESS>.x86_64
llvm7-polly-devel-7.0.1-lp<IP_ADDRESS>.x86_64
libclang7-7.0.1-lp<IP_ADDRESS>.x86_64
clang7-checker-7.0.1-lp<IP_ADDRESS>.x86_64
llvm7-gold-7.0.1-lp<IP_ADDRESS>.x86_64
llvm-gold-7.0.1-lp151.1.1.x86_64

https://stackoverflow.com/questions/57384896/how-to-build-sorbet-on-centos-7-missing-llvm-toolchain/57388212#57388212


Remove sig-osm from userdata and cloudprovider ownership

Signed-off-by: Waleed Malik<EMAIL_ADDRESS>What this PR does / why we need it:
With https://github.com/kubermatic/machine-controller/pull/1146, we introduced sig-osm as the code owners for pkg/userdata and pkg/cloudprovider. This was done to ensure that we keep OSM and machine-controller userdata in sync.
Now that the understanding has been built and MC userdata is considered deprecated, we are safe to remove this temporary ownership.
Which issue(s) this PR fixes:

Fixes #
What type of PR is this?

/kind chore
Special notes for your reviewer:
Does this PR introduce a user-facing change? Then add your Release Note here:

NONE

Documentation:

NONE

/test pull-machine-controller-e2e-azure-custom-image-reference
Sure buddy you failed because of my changes 🦖

/test pull-machine-controller-e2e-aws-arm


Send to contact selects multiple contacts

In 175 upgraded app -  test account (possibly can be replicated for all accounts) - try selecting one contact, multiple contact gets selected and then entering the amount enters it on both.

Swati to recreate

Cant recreate on FI dev


result of go mod tidy has errors，but go build not

What version of Go are you using (go version)?

$ go version
go version go1.14.7 windows/amd64

Does this issue reproduce with the latest release?
no
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\tdl\AppData\Local\go-build
set GOENV=C:\data\moved_software\golang\env
set GOEXE=.exe
set GOFLAGS=-mod=mod
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOOS=windows
set GOPATH=C:\data\tdl\share_data\godata
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\data\moved_software\golang
set GOSUMDB=off
set GOTMPDIR=
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\tdl\AppData\Local\Temp\go-build965195838=/tmp/go-build -gno-record-gcc-switches

What did you do?

i run with go build, that has no errors, but i run with go mod tidy, it is wrong
$ go mod tidy
sso-safety-count/src/common imports
        github.com/spf13/viper imports
        github.com/spf13/afero imports
        io/fs: package io/fs is not in GOROOT (C:\data\moved_software\golang\src\io\fs)
go-project/src/common imports
        github.com/spf13/viper imports
        github.com/spf13/afero tested by
        github.com/spf13/afero.test imports
        testing/fstest: package testing/fstest is not in GOROOT (C:\data\moved_software\golang\src\testing\fstest)

i found go build will build with discriminating  go version, but go mod tidy not
What did you expect to see?
go mod tidy will run with discriminating  go version
What did you see instead?
tdl@DESKTOP-HA3BA9Q MINGW64 go-project(master)
$ go mod tidy
tdl@DESKTOP-HA3BA9Q MINGW64 go-project(master)

This is fixed in later versions and 1.14 is no longer supported


Changed logic and optimized ObjectID in ObjectDB and Variant, removed…

Refactored how ObjectID works in ObjectDB, it is now very fast to obtain an object pointer from an ObjectID. Also, RefPtr was removed and the referencing logic for Refecence has been replicated inside Variant. This hugely simplifies the code and logic.
Finally, the functions to check if an object pointer is invalid were removed given they are dangerous and unfixable. Instead, Variant now contains an ObjectID together with the pointer, which ensures validity can be checked at all times.
Also fixes #32383

This fixes the mono build:
diff --git a/modules/mono/csharp_script.cpp b/modules/mono/csharp_script.cpp
index 43cdd19411..c722076fe2 100644
--- a/modules/mono/csharp_script.cpp
+++ b/modules/mono/csharp_script.cpp
@@ -854,7 +854,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {

 		while (script->instances.front()) {
 			Object *obj = script->instances.front()->get();
-			obj->set_script(RefPtr()); // Remove script and existing script instances (placeholder are not removed before domain reload)
+			obj->set_script(REF()); // Remove script and existing script instances (placeholder are not removed before domain reload)
 		}

 		script->_clear();
@@ -877,7 +877,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {

 				// Use a placeholder for now to avoid losing the state when saving a scene

-				obj->set_script(scr.get_ref_ptr());
+				obj->set_script(scr);

 				PlaceHolderScriptInstance *placeholder = scr->placeholder_instance_create(obj);
 				obj->set_script_instance(placeholder);
@@ -1003,7 +1003,7 @@ void CSharpLanguage::reload_assemblies(bool p_soft_reload) {
 				CRASH_COND(si != NULL);
 #endif
 				// Re-create script instance
-				obj->set_script(script.get_ref_ptr()); // will create the script instance as well
+				obj->set_script(script); // will create the script instance as well
 			}
 		}

diff --git a/modules/mono/mono_gd/gd_mono_internals.cpp b/modules/mono/mono_gd/gd_mono_internals.cpp
index 75aa77c7b0..74ffa90cb3 100644
--- a/modules/mono/mono_gd/gd_mono_internals.cpp
+++ b/modules/mono/mono_gd/gd_mono_internals.cpp
@@ -107,7 +107,7 @@ void tie_managed_to_unmanaged(MonoObject *managed, Object *unmanaged) {

 	ScriptInstance *si = CSharpInstance::create_for_managed_type(unmanaged, script.ptr(), gchandle);

-	unmanaged->set_script_and_instance(script.get_ref_ptr(), si);
+	unmanaged->set_script_and_instance(script, si);
 }

 void unhandled_exception(MonoException *p_exc) {

See above note on shadowing though, this warning spams the build a lot.

Thanks!


Update PT-hostile-to-insecure-code.md

File includes the following smaller files, all from Research folder, that have been added:
Portuguese tech world
PT Hacking Service
Hacking Created the Internet
Military
PT Hackathons
Education

hi @Ambg05 can you resubmit these as file deletions? (where still relevant)


CNX-8397-DLL-Conflict-Handling in existing DUI2 connectors

Description & motivation

Changes:
Added DllConlfictManagement project
DllConflictManager

Detects conflicts between assemblies referenced by the connector and currently loaded assemblies in the app domain

I think we probably need to add this exception handling in more places. I currently only have it for the loading of the connector when Revit starts up

DllConflictUserNotifier

Handles any exceptions that occur, reference them with the conflictManager, and report them to the user. This is an abstract class that is expected to be implemented by the host app to use the host app specific way of notifying a user.

DllConflictManagmentOptions

Holds a list of dll conflicts that the user has elected to ignore
DllConflictManagmentOptionsLoader class will load these options from a json file in the same directory as the connector dll

RevitExternalApplication

Moved all types that are not either connector, System, or Revit types out of the "OnStartup" method.

This is because if there are conflicting dll types in this method, then an exception will be thrown before the method is even entered
By putting the other types in different methods, the type loading exception will be thrown on entering that method. Therefore we can alert the user about the exception

To-do before merge:
Questions to be answered (probably by @AlanRynne)

Where in appdata should I keep options.json file? Can this be the same for all c# connectors that use this?
Currently I'm only trying to catch typeLoadException and MissingMethodException. Are there others that will be thrown when dll mismatch occurs?
I'm only catching the above exceptions in the plugin initialization. I'm thinking we also want to catch these for the operations. Is this needed / is it okay to do?
How to log while detecting plugin conflicts? Should I prioritize logger dependencies and then move to connector dependencies?
I'm referencing the System.Text.Json nuget in the new project because it isn't built into .net standard. Should I reference a really new version or a really old version of this?

Screenshots:

Validation of changes:

Checklist:

[x] My pull request follows the guidelines in the Contributing guide?
[x] My pull request does not duplicate any other open Pull Requests for the same update/change?
[x] My commits are related to the pull request and do not amend unrelated code or documentation.
[x] My code follows a similar style to existing code.
[ ] I have added appropriate tests.
[ ] I have updated or added relevant documentation.

References

@teocomi,
the distinct id's that you're probably seeing are when I was using a fallback value that didn't come from the accounts (you should know that I pulled this fallback value from the existing Analytics class, so this alternate distinct_id may be being used already). I have changed this and have hard-coded an id of "undefined" for the "lite" version of the analytics.
some system object types (System.Type, System.Reflection.AssemblyName, System.Reflection.Assembly) were throwing when attempting to be serialized so I just made a custom serialization to string. However, I have now implemented a data transfer object which has good serialization behavior, and I am sending that object instead of just a string.
identifiedConflictingAssemblyName can be null if a single conflict was not identified to be the culprit of a thrown exception. Is there a more clear way to handle this?
Here is an example of a couple events. The first is a "DllConflictsDetected" event and the second is a "DllConflictExceptionDialogShown" event

I've been poking around this new feature in debug and I have a couple considerations:

When a user sees this pop-up, it is unclear what they are expected to do about it.
It is unclear what the consequences are of "not warning about this again"
The checkbox to not warn will apply to each conflict individually, but users can't individually choose which ones to ignore
From Matteo: We should have metrics on when does this pop-up get shown, how many conflicts we find or not, etc...

Further discussions may be needed.

For this we could have a blog post and a link to that.

For this we could have a blog post and a link to that.

There's already a docs page about dll conflicts, if you want to link to it we can add some more explanation about the dialog...


edits.

Category

[X] Content fix

Docs Build status updates of commit c1e1560:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Community/includes/content-disclaimer.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Include play instructions in the game

Players who just open the page are not going to know what keybindings should be used for an action. We should briefly include some instructions in the game to help with this.

Maybe be add a section left of the play area including the active actions and available keyboard commands.


Specify an edge for the connection

In the parameters for ngrok.forward() (see full configuration param's list) I don't see any option to specify an edge or other label for the tunnel.
Is this possible from the python api?

Hello, thanks for your question! There is a labels kwarg that can be used, here's an example:
ngrok.forward("localhost:8080", proto="labeled", labels="edge:edghts_2G...", authtoken_from_env=True)
We'll get the documentation updated to add it. Thanks again!

That's great it's already supported by the API!
A couple other points:

I created a suggestion to make this a named parameter.

It would probably make sense to add an option to the ngrok dashboard for creating a tunnel using the Python (Rust, Go, etc.) APIs, as described in the screenshot below:

@bobzilladev another thought:

The example you provided labels="edge:edghts_2G..." shows a truncated string.  What's the format for passing multiple labels? e.g. is it a comma-delimited list like labels="key1:value1,key2:value2"?

Will try to answer these questions here:

For a more concrete style the builder pattern configuration can be used, here's an example of that which is more explicit: ngrok-labeled.py
Adding to the start a tunnel pane has been discussed, for now the python getting started page is a dashboard resource to help initial setup: dashboard.ngrok.com/get-started/setup/python
The labels kwarg can take an array as well, labels=["key1:value1", "key2:value2"]

Hopefully that's useful, thanks for the feedback!

Yes, thanks!


Fix BlockUser notification

DatabaseBlock::$mReason was made protected in MW 1.35
Same fix as https://github.com/kulttuuri/DiscordNotifications/commit/eca3b3d013e916e8de255849c9e61196d0ea92eb

Thanks!


Keycloak backend plugin is not wotking as expected

Describe the bug
I have setup the Keycloak backend plugin by following the steps given on below this link - https://janus-idp.io/plugins/keycloak/ . Plugin configure successfully and it started syncing users and groups, but  then abruptly, it stopped syncing with below error.
Processor BuiltinKindsEntityProcessor threw an error while validating the entity group:default/mainstream-engineering-admin; caused by TypeError: /spec/members/2 must be string - type: string entity=group:default/mainstream-engineering-admin location=url:https://authusqa.devops.sws.company.com/auth/admin/realms/chim/groups/480049ad-7a33-41ab-87a6-382a797831e0
I am using the new backend and followed the plugin configuration steps accordingly.
Expected Behavior
All users and groups from keyclock realm should be synced
What are the steps to reproduce this bug?

Setup backstage
Configure the Keycloak plugin for new backup configuration (using steps from https://janus-idp.io/plugins/keycloak/)

Versions of software used and environment
@janus-idp/backstage-plugin-keycloak-backend": "^1.13.1",
Backstage - 1.30.4<EMAIL_ADDRESS>

Any comments here please?

@paralika This looks like an invalid group definition. Is the mainstream-engineering-admin group something that you created, or is it imported by the plugin?
Can you share what this group looks like? Find this group in Catalog, lick on 3 dots in top right corner, and select inspect entity, there you can find Raw Yaml.

@kadel "mainstream-engineering-admin" is available in Keycloak. The plugin is trying to import it, but it is not successful yet. I have ~1k groups in Keycloak. Out of that, only 341 groups were imported successfully and for others it is failing with this error.

The error message complains about a third member of that group. Can you check the members of that group? Maybe you notice something suspicious. For example, isn't there a user with numeric username?

@kadel I do not see any suspicious chars. Please see the screenshot below. The username is an alphanumeric value pointing to the users.

No, I do not have any custom transformer set. I am following the instructions given at - https://janus-idp.io/plugins/keycloak/
Did you follow the same instructions? Wondering if I missed anything.

I figured out 2 problems:

The groups.members hat entries wich are not in parsedUsers
https://github.com/janus-idp/backstage-plugins/blob/58d2baa1073428a77e5c723c8bad1c24e83fd440/plugins/keycloak-backend/src/lib/read.ts#L300

Members are missing when a group has many members  (> options?.userQuerySize)
https://github.com/janus-idp/backstage-plugins/blob/58d2baa1073428a77e5c723c8bad1c24e83fd440/plugins/keycloak-backend/src/lib/read.ts#L229

The groups.members hat entries wich are not in parsedUsers
https://github.com/janus-idp/backstage-plugins/blob/58d2baa1073428a77e5c723c8bad1c24e83fd440/plugins/keycloak-backend/src/lib/read.ts#L300

Good catch, I agree with that. Current code could puts undefined value to the group entity member list. Then plugin will try to commit this group to catalog backend and will fail with TypeError on member list validation. I think when you have very large database, then Keycloak plugin will fetch them using pagination. But it one of more  user fetch requests could fail. Current code skips this error and doesn't logging them. Then parsed user list will be not completed. And group member list could get undefined values for some users.

Members are missing when a group has many members  (> options?.userQuerySize)
https://github.com/janus-idp/backstage-plugins/blob/58d2baa1073428a77e5c723c8bad1c24e83fd440/plugins/keycloak-backend/src/lib/read.ts#L229

Good catch too, but I think we need to fix it like separated issue.

Members are missing when a group has many members (> options?.userQuerySize)

@JohannesWill, thanks. I created issue: https://issues.redhat.com/browse/RHIDP-4391 . Fix is in the road: https://github.com/janus-idp/backstage-plugins/pull/2324

@JohannesWill Good catch, I agree with that. The current code could add an undefined value to the group entity member list. Then the plugin will attempt to commit this group to the catalog backend and fail with a TypeError during member list validation. I believe that with a very large database, the Keycloak plugin fetches users using pagination. However, one or more user fetch requests could fail. The current code skips this error and doesn't log it. As a result, the parsed user list will be incomplete, and the group member list could contain undefined values for some users.

In our case, we have 8 users (service-account-*), which are not included in 'parsedUsers'

Fixed with https://github.com/janus-idp/backstage-plugins/pull/2319

Thanks @JohannesWill and @AndrienkoAleksandr. It's working.

Apparently fixed in 1.3.1 with update to "@janus-idp/backstage-plugin-keycloak-backend": "1.13.4" in https://github.com/janus-idp/backstage-showcase/pull/1823/files
Related update in 1.3 branch of plugins is https://github.com/janus-idp/backstage-plugins/pull/2429/files#diff-9a8714e6876ad3175b960df6dbacd41b4c818c4dee1617fef0d9e5202e847928R2 ... which is a MAJOR bump, not a patch one?
Ah but then fixed with https://github.com/janus-idp/backstage-plugins/commit/b3835da8bc84edc762e36b81857296fca085b109 to move to 1.13.4
So... I think we're good here! for both 1.3.z and 1.4.


Openni .exe run problem

Camera Model: D435
Realsense: WIN10-<IP_ADDRESS>7
OS : Windows 10
I compiled openni2 wrapper to get rs2driver.dll. Then i copied this file and Intel RealSense SDK 2.0\bin\x64\rs2driver.dll to C:\Program Files\OpenNI2\Samples\Bin\OpenNI2\Drivers.
My Global variable are:
OPENNI2_DIR C:\Program Files\OpenNI2
REALSENSE2_DIR C:\Program Files (x86)\Intel RealSense SDK 2.0
In Intel RealSense Viewer stream is avaible.
In OpenNI2 Simple read i got
C:\Program Files\OpenNI2\Samples\Bin>"C:\Program Files\OpenNI2\Samples\Bin\SimpleRead.exe"
Couldn't open device DeviceOpen using default: no devices found
I would appreciate any advice.
Best Regards

Hi @alexx600
I didn't build the samples but was able to run NiViewer by copying binaries also to C:\Program Files (x86)\OpenNI2\Tools\OpenNI2\Drivers. Please note that NiViewer is 32-bit application.
I'd recommend checking 64/32 versions, and check that both realsense2.dll and rs2driver.dll are in the right place.

Hi @dorodnic thank you very much for advice. I noticed that openni2 i have installed was x64. So i installed x86 version and copied dll. Now it workds.


Feature/add send sync

This PR makes the public error type Send + Sync and fixes #74

Should I also bump the version for this one?


Add caching to API calls

Strava api calls are limited in time

In memory vs on disk (eg Akavache)
Different timespans as some endpoints expire faster (eg kudos/comments)

I've already added some in memory caches through use of a ConcurrentDictionary<key, T> where T is a Task. That way when multiple requests are made of the same data, it will only go 'online' once for  the first request.
These caches are not yet time based, so not invalidated during the use of the app. But for the information we are using this, it's not yet that critical ( Photo and Athlete ).
We still need to see how we also cache results on disk and add timestamps.

Some of this is fixed with CKILB for the activity list.
I extended the AthleteService to hold a cache of the actual athlete objects, or tasks to fetch them. So calling GetAthleteAsync(athleteID) will give back either a cached value, or a task to fetch it.
The consolidateWithCache method will take an athleteMeta|athleteSummary|athlete and determine whether the cache or the one passed in has more data and is more recent (due to timestamp from the service) and return the most appropriate.


SvgDocument.Draw() Poor Text Rendering

When I use SvgDocument.Draw(), everything is rendered ok apart from the text, the text is very grainy and poor quality. I've tried changing the PPI and increasing the size but it doesn't seem to make a difference.
I'm using version 2.2.1 and I am trying to create a bitmap image (either png or jpg) from an existing SVG file. I am opening the document and calling the Draw method, then saving the bitmap as either a jpg or a png like so:
var svgDocument = SvgDocument.FromSvg<SvgDocument>(svgDoc.InnerXml);
var bitmap = svgDocument.Draw();

bitmap.Save(directory, ImageFormat.Png);

Is there a better way to do this or a way to improve the quality or some sort of workaround for getting clear text in my images?
Thanks

Having the same Problem here, Text looks far too grainy, @MelanieGinger did you find a workaround or anything?

@FLoibl No I've not found a fix for this yet. I'm currently going through the process of converting the svg to a Windows Metafile and trying to render the image from there. I'll let you know how it goes.
I did have a look at those issues but a)these say the fix for this has been merged into the latest version which I already have and b)for me the text looks grainy on any background not just coloured.

@MelanieGinger I've gone back to 2.1.0 nuget in the meantime, that's the last version without the Bug imho.

I may well do the same.

Just out of curiosity, how would you go about converting SVG to EMF without losing Information? Running Inkscape as Process?

I am using the code that can be found in MetafileRenderingTest which is in SVG/Tests/Svg.UnitTests/MetafileRenderingTest.cs. I copied the DrawSvg(SvgDocument svgDoc) method which looks like this:
protected override Image DrawSvg(SvgDocument svgDoc)
        {
            // GDI+
            Metafile metafile;
            using (var stream = new MemoryStream())
            using (var img = new Bitmap((int)svgDoc.Width.Value, (int)svgDoc.Height.Value)) // Not necessary if you use Control.CreateGraphics().
            using (Graphics ctrlGraphics = Graphics.FromImage(img)) // Control.CreateGraphics()
            {
                IntPtr handle = ctrlGraphics.GetHdc();

                var rect = new RectangleF(0, 0, svgDoc.Width, svgDoc.Height);
                metafile = new Metafile(stream,
                    handle,
                    rect,
                    MetafileFrameUnit.Pixel,
                    EmfType.EmfPlusOnly);

                using (Graphics ig = Graphics.FromImage(metafile))
                {
                    svgDoc.Draw(ig);
                }

                ctrlGraphics.ReleaseHdc(handle);
            }

            return metafile;
        }
protected override Image DrawSvg(SvgDocument svgDoc)
        {
            // GDI+
            Metafile metafile;
            using (var stream = new MemoryStream())
            using (var img = new Bitmap((int)svgDoc.Width.Value, (int)svgDoc.Height.Value)) // Not necessary if you use Control.CreateGraphics().
            using (Graphics ctrlGraphics = Graphics.FromImage(img)) // Control.CreateGraphics()
            {
                IntPtr handle = ctrlGraphics.GetHdc();

                var rect = new RectangleF(0, 0, svgDoc.Width, svgDoc.Height);
                metafile = new Metafile(stream,
                    handle,
                    rect,
                    MetafileFrameUnit.Pixel,
                    EmfType.EmfPlusOnly);

                using (Graphics ig = Graphics.FromImage(metafile))
                {
                    svgDoc.Draw(ig);
                }

                ctrlGraphics.ReleaseHdc(handle);
            }

            return metafile;
        }

I've just tried using this by passing my svgDocument in and them saving the resulting image to a .png, it works but the text is still fuzzy. Note: I am still using 2.21, the next thing I am going to try is reverting back to version 2.1.0.

So apparently reverting back to version 2.1.0 fixes the fuzzy text issue, this is definitely a bug with version 2.2.1 (not tried 2.2.0).

2.2.0 is also broken, i tried it.

Cheers @FLoibl for suggesting changing the version, I've been stuck trying to find ways round using jpg/png images, unfortunately not everything supports svg images.

hello, thanks for finding the right version... i might have to revert the changes on how the layers are composed. or find a better algorithm. anyone up for it? :)

@tebjan somebody mentioned something about TextCompositing in .NET in one of the related issues i mentioned above.

please try with latest nuget 2.3.0, there was a problem with text rendering that might now be fixed.

I use BitmapEncoder when creating actual image files, seems to give more reliable results. See ExportImageFile in https://github.com/jonthysell/Chordious/blob/master/Chordious.WPF/Utils/ImageUtils.cs

@jonthysell Holy heck, i like that approach 👍

Text rendering is fixed in 2.3.0 but there is OutOfMemory Exception drawing small objects. Could you fix it in SvgVisualElements.cs or share a link to source code for 2.3.0 to fit it myself?
try
{
renderer.DrawPath(pen, path);
}
catch { }

Closing - the initial issue is fixed, and problem mentioned in the last comment has a separate issue.


Can't ionide support multi F# interactive window

and if I want to extend this function by myself, is there any guide

No it can't. It would create way more complex code, and lead to unexpected behaviors that may be confusing for users. Thanks for suggestion!


[rocksplicator/timer] remove unused function

@shuzhang1989 I vaguely remember you used to write a function which inherits from Timer class. However, I couldn't find it now. Does it use the Timer::now() function anywhere?


listen to the default queue error

when i make a server which istalled the clearml-agent and i let the agent listen to the queue named default ,an error happened,can someone tell me how to solve it?

Hi @rui1998 is this a duplicate of another issue?


Shared EBS volume does not exist

Environment:

AWS ParallelCluster version 2.3.1
OS: ubuntu1604
Scheduler: sge
Master instance type: r3.2xlarge
Compute instance type: r3.2xlarge

Bug description and how to reproduce:
My team are long-time users of parallelcluster/cfncluster and are migrating to a new AWS environment so I've been working on updating and recreating our cluster. In doing so, I'm encountering errors during the master node creation step where parallelcluster is trying to attach a volume (the shared ebs volume) that does not actually exist. I checked in the AWS console and it looks like this shared 20GB volume is not being created during cluster creation. When the _master_base_config recipe is run during setup and pulls the volume name from /etc/parallelcluster/cfnconfig (where does that come from?), it tries to attach this nonexistent volume resulting in an error.
I have tried our usual template (see config_redacted.txt) below which uses default EBS settings, as well as uncommenting the ebs custom1 section and using that instead, same error.
Notable changes since we last had this working are:

we're working within a new account/vpc
we've upgraded from 2.1.1 to 2.3.1

Additional context:
config_redacted.txt
cloud-init.log
cloud-init-output.log
cfn-init.log
Any ideas or suggestions as I continue to troubleshoot this?
Thanks in advance!

Update - I tried with a 2.4.0-based AMI and pcluster 2.4.0 and am still encountering the issue.

Looking into it.
/etc/parallelcluster/cfnconfig contains the configuration.
The configuration is not well formed, you are using section that are commented out, e.g.
"efs_settings = customfs" points to "#[efs customfs]"
(minor) the configuration is an old one, because the scaling parameters changed since 1.6.0
Can you check the events of the "EBS CFN stack" in the CloudFormation console?

Thanks @lukeseawalker  for the config suggestions! The EFS section was commented out recently during some testing but I wasn't aware of the changes to scaling parameters, will update those to the latest.
I've confirmed via CloudTrail that the other cluster in the same subnet is the source of the DeleteVolume API call, and am confirming with the maintainer the details of that cluster. In the meantime, I tried again and took a look at the CFN stack events and it looks normal - the stack still thinks the volume is there, and there is no delete event logged (screenshots are after the volume disappears).

Looked into this further and it turns out the other cluster was running a cleanup script that checked for and deleted unattached volumes matching certain specs every few minutes. The problem was not related to parallelcluster itself, so I am going to close this issue.

Cool! Thank you for the update!


Refactor schema entities

###v1:

This PR is an attempt to start removing some of the complexities of the dataset-compliance container component while keeping everything operational.
Moves some of the header information for the schema-entities into the schema-entities component. Use placeholders and temporarily passing in properties and methods to make sure everything still works
Removes some old unused logic for the compliance editSteps wizard that were still in the codebase
Updates the action bar partial in order to handle a generic ui track event
Changes were made to be as non-disruptive as possible

Manually tested to ensure application builds and behaves as expected
ember test results:
1..501
# tests 501
# pass  494
# skip  7
# fail  0

# ok

Coverage remained the same at 22.974% when pulling dc456343ca566c83e7c9e121d5f5ed09d79c0c85 on cptran777:refactor-schema-entities into 34bcbfc56d56c6063b28120519717827bd03db71 on linkedin:master.

Codecov Report

Merging #1428 into master will decrease coverage by 0.14%.
The diff coverage is 29.16%.

@@            Coverage Diff             @@
##           master    #1428      +/-   ##
==========================================
- Coverage   60.63%   60.48%   -0.15%
==========================================
  Files         184      185       +1
  Lines        4044     4034      -10
  Branches      936      938       +2
==========================================
- Hits         2452     2440      -12
- Misses       1592     1594       +2

Impacted Files
Coverage Δ

wherehows-web/app/constants/dataset-compliance.ts
74.52% <ø> (-1.15%)
:arrow_down:

wherehows-web/app/components/dataset-compliance.ts
24.76% <100%> (-0.53%)
:arrow_down:

.../components/datasets/compliance/schema-entities.ts
29.16% <26.08%> (ø)

wherehows-web/app/components/purge-policy.ts
81.48% <0%> (-18.52%)
:arrow_down:

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 34bcbfc...dc45634. Read the comment docs.


[question]/[feature request] Normalization for offline states [and rewards]

Normalizing inputs generally accelerates training of machine learning models.  Does stable baselines have an approach for normalization in offline algorithms?  Or can we create one?
Using VecNormalize to normalize states/rewards would provide inconsistent normalization to samples in the replay buffer that were collected at different times.

Hello,

Does stable baselines have an approach for normalization in offline algorithms?

You mean for normalizing in an offline manner? or for off-policy algorithms ?
If you have a constant normalization, can't you write it as part of your environment? (that is to say, the normalization is done before returning the observation and reward to the agent)
Or, if you want to be more general, you can create a custom VecEnv.

This would be non-constant normalization for off-policy algorithms that use a replay buffer.  For real-world applications or where you can't rely on the environment pre-normalizing states/rewards reasonably.
I imagine this could be implemented using non-trainable variables in the tensorflow graph.

This would be non-constant normalization for off-policy algorithms that use a replay buffer.

I don't get it. Could you elaborate? (because if you do a constant normalization in the env, I don't understand how it would not be constant for the agent)

For real-world applications or where you can't rely on the environment pre-normalizing states/rewards reasonably.

It seems contradictory with what you want. On one hand, you say that you want a normalization that stay the same (constant) and on the other hand it seems that you want to learn it (for "real world applications").
Also, I think that inconsistency is only valid for very few samples, as the normalization usually converges quickly.
A solution for you, if you want to re-evaluate samples from the replay buffer with a new normalization, would be to store the raw observation in the buffer and apply current normalization when sampling them.

To "store the raw observation in the buffer and apply current normalization when sampling them" is exactly what I'm interested in.  Is this implemented?
I've tried to lay out my point more clearly below by introducing some notation.
Let tci = t_c(sample_i) = the time that "sample_i" was collected
Let tb = denote the time when you are training on batch "b"
Let N_t(sample) denote normalization of "sample" WRT all data collected by time "t"
The problem with using VecNormalize (that normalizes as samples are produced by the environment) and replay buffers together is that, when training, samples in a single training batch are normalized differently/inconsistently.  So, for instance, at time tb you would train on a batch like:
N_tc1(sample_1)
N_tc2(sample_2)
...
N_tcNB(sample_NB)
This inconsistent normalization makes it impossible for a neural network to learn well.
What we want is, at time tb, to apply N_tb to all samples, so that normalization is consistent within each batch during training:
N_tb(sample_1)
N_tb(sample_2)
...
N_tb(sample_NB)
So the normalization has to be applied to samples each time a batch is sampled from the replay buffer for training, not prior to inserting each sample into the replay buffer...

To "store the raw observation in the buffer and apply current normalization when sampling them" is exactly what I'm interested in. Is this implemented?

It is not implemented but should not be too much work for you:

you will need to use .get_original_obs() from the VecNormalize wrapper
store this observation in the buffer (instead of the normalized one)
normalize when sampling from the buffer (calling _normalize_observation() method of the wrapper)

For that, you need to change directly the code of the algorithms (see install from source instructions).

This inconsistent normalization makes it impossible for a neural network to learn well.

From my experience, I mostly disagree with this statement (the rl zoo where several agents are successfully trained using this wrapper)
I don't think this will make a big difference but I'm still interested by your results ;) (we would consider integrating this mechanism if it helps the agent to learn)

On reflection, we should update VecNormalize (add .get_original_reward()) and the algos using the replay buffer (DQN, DDPG, SAC, TD3) especially for the normalization of the reward.


np.bool is deprecated

np.bool is deprecated at numpy 1.20.
The latest version is numpy 1.26.0.

This will cause an error.


mekanism ethylene rf/mb wrong?

I am testing this on a server where all the defaults are used and 1000mb from a gas tank of ethylene is producing without fuel air/gas mix
6,599,950 RF which is  6599.95rf/mb and the wiki says it should make 600 rf/mb whoppsie!
syngas with alot of testing got for 1000mb
1,100,000 rf or 1100 rf/mb ( this is also higher then expected)
I know https://github.com/bdew/generators/issues/64 brought something like this up but i don't think it was addressed.
I would expect to get out 600,000 RF not 10x the ammount
we are using version <IP_ADDRESS>
could you explain how i am misunderstanding or if its wrong?

Yeah i haven't actually updated the site after the discussion in #64, sorry.
It should be up to date now. I've also clarified (i hope) that the value is modified by the efficiency multiplier (110% by default, up to 185% with upgrades).
https://bdew.net/generators/turbine-generator/
If there's still something unclear or incorrect - please let me know.

huggles I was thinking it was majorly broken!!! glad it was intended.. but it does cut out the syngas machines as a normal way of fueling outside the mod :/ but thats just how the cookie is made


fix: update image cropper to 2.0.0 #1672

What

updated the image cropper to 2.0.0

Fixes bug(s)

#1672

Codecov Report

Merging #1695 (23775e9) into develop (2ea0da3) will decrease coverage by 0.57%.
The diff coverage is 0.74%.

@@            Coverage Diff             @@
##           develop   #1695      +/-   ##
==========================================
- Coverage     8.86%   8.29%   -0.58%
==========================================
  Files          161     165       +4
  Lines         6623    7128     +505
==========================================
+ Hits           587     591       +4
- Misses        6036    6537     +501

Impacted Files
Coverage Δ

...h_app/lib/cards/category_cards/abstract_cache.dart
0.00% <0.00%> (ø)

...p/lib/cards/category_cards/asset_cache_helper.dart
0.00% <0.00%> (ø)

...p/lib/cards/category_cards/raster_async_asset.dart
0.00% <0.00%> (ø)

...oth_app/lib/cards/category_cards/raster_cache.dart
0.00% <0.00%> (ø)

..._app/lib/cards/category_cards/svg_async_asset.dart
0.00% <0.00%> (ø)

...smooth_app/lib/cards/category_cards/svg_cache.dart
0.00% <0.00%> (ø)

...t_cards/knowledge_panels/knowledge_panel_card.dart
0.00% <ø> (ø)

...s/knowledge_panels/knowledge_panel_table_card.dart
0.00% <0.00%> (ø)

...pp/lib/cards/product_cards/product_title_card.dart
0.00% <0.00%> (ø)

...cards/product_cards/smooth_product_card_found.dart
0.00% <0.00%> (ø)

... and 47 more

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 bb89eb5...23775e9. Read the comment docs.


[FEATURE] Optimise chained transformations

Describe the solution you'd like
We should optimise chained transformations in a similar way as what Apache Spark does: they should be lazy and re-ordered so that transformations reducing the number of elements are always executed first.

That's a good idea. Do you have any clues about how we would be able to get the information that calls are being chained?

We could instantiate an object that keeps track in a dict of what methods have been called whenever we call a transformation, re-orders them and executes them. For example if we do list.map(...).filter(...) the map instantiates the object, that records the map operation. Then, it stores filter as well, re-orders the operation to run filter first, then runs them.

Mmhh yes sounds good! Just, how do you know when the last call occurs to execute them all?

I guess here's why Spark has transformations and actions haha
We could do the same, but I don't like it very much

haha most probably ^^
Without doing something of the sort, I don't really see yet how we could do it... I'll think about it but my intuition is that we can't without either manipulate AST or having explicit call to execute transformations


Question: Why can't we support createAsyncSelector?

Hey folks! 👋 First of all, great work on this library! 👏
I have a question. I'd like to understand where the problem lies. I know that reselect doesn't support async selectors, and if we need to fetch data, we should use a thunk or another approach. That's fine and it works. But what if we need to use, let's say, a 3rd party library inside of a selector that computes something, but does that only in an async way?
For example, something like this:
const asyncSelector = createAsyncSelector(
   (state) => state.a,
   (state) => state.b,
   async (a, b) => {
     return await computeSomethingAsync(a, b);
   }

Also, if I want to use this as the input of another async selector:
const anotherAsyncSelector = createAsyncSelector(
   asyncSelector,
   (state) => state.c,
   async (resultAB, c) => {
     return await computeSomethingAsync(resultAB, c);
   }

I would just like to understand why this is considered an antipattern. Why can't we support this? This is not a case of fetching data; it's deriving data from the Redux store asynchronously.

That's actually the problem.  A selector is, by definition, 100% synchronous and pure (same as a reducer, actually).  It gets called synchronously, is expected to return a value immediately, and that value is based solely on the arguments that were passed in (typically the Redux store state, plus optional parameters).
You can write other async function that are similar (in that they take the state as an argument), but they would no longer be selectors.
Where and how would you expect to use one of these "async selectors"?

Appreciate very quick response 🙏
We use https://jsonata.org. It's very simple query language that "unfortunately" works async (in a future version). Here is a simplified example:
const asyncSelector = createAsyncSelector(
  (state) => state.a,
  (state) => state.b,
  async (a, b) => {
     const context = { a, b }
     return await jsonataEvaluator("a+b", context)
  }

Then in React world I would do this:
function PrintAsyncSelector() {
   const result = useSelector(asyncSelector)

   return <p>{result}</p>
}

function Component() {
   return (
      <Suspense>
         <PrintAsyncSelector />
      </Suspense>
   )
}

The Component is suspended while evaluating asyncSelector. That would mean the useSelector would need to throw promise.

Another use case would be in "side effects". If you want to get current and derivated data from the store in callback executed on click.
function Button() {
  const onSubmit = async () => {
     const result = await asyncSelector(store.getState())
     await doRestCallWithCurrentValue(result)
  }

  return <Button onClick={onSubmit}>Submit</Button>
}

I know I could do the await jsonataEvaluator("a+b", context) directly in the onSubmit callback, but I'd like to re-use the same code from the selector.
Hope it makes sense.

Yeah, unfortunately that won't work with Redux. useSelector (and the underlying React useSyncExternalStore hook) do expect standard 100% synchronous selector functions.
What are you actually trying to retrieve with JSONata?  is it actual data in the Redux store state?

Yes, it is data in the Redux store. It is very complex network of createSelector that collects data from redux and then use jsonata to evaluate the expression.
I guess I could do something like this:
function useHook() {
   const [result, setResult] = useState()
   const context = useSelector(collectDataFromRedux)

   useEffect(() => {
      setResult(await jsonataEvaluator("a+b", context))
   }, [context])

   return result
}

But that complicates the code and it feels like unnecessary work-around of React's Suspense.

you could try using the suspense util library for it?

Part of the issue is it seems like the entire state is needed as an argument.  Normally to get that you'd have to use useSelector(state => state), which would force a re-render 100% of the time and is bad.

Sorry, maybe it is just a lack of knowledge about all these libraries. But if I am not wrong there is no problem of making createSelector work async, right? We can discuss what exactly pure function means and how strict we need to be about it but for the sake of conversation let's say that the following would still be pure action.
We use await/async and the jsonata (in our case) evaluates the same inputs to the same outputs without any side effects, I think we can consider such a function as pure.
The problem is the connection between React and Redux, where useSelector doesn't wait for the reselect's selector to be done. But that shouldn't be a problem to support with a few adjustments, right?
I put together this code sandbox that might better illustrate what I mean - https://codesandbox.io/p/sandbox/use-external-storage-forked-yflsy3
Please let me know if I am missing something

IMO async selectors are the missing key for Redux state management when it comes comparisons of atom-based state libraries. They'd would be a huge upgrade, even if implemented somewhat separately, given the reasons @markerikson mentions here

@kyranjamie : can you give an example of what a notional "async selector" API would look like, how it would be used, and thoughts on it would work?

Say I'm working on an app that has to perform expensive cryptographic operations on an underlying key in a Redux store. Assume a library exposes some logic to derive child key information via an async method.
const rootKey = createSelector(state => state.key);
const childKey = createAsyncSelector(rootKey, async key => await deriveChildKey(key));

function LayoutComponent () {
  const childKey = useAsyncSelector(childKey); // suspends or has default value of `undefined`
  return <KeyView childKey={key} />;
}

This is super easy in a library like Jotai. I've actually refactored an app to Redux from Jotai and the lack of an API like this is the biggest pain point.

That is effectively the RTK Query useQuery API:

https://redux-toolkit.js.org/rtk-query/usage/queries
https://redux.js.org/tutorials/essentials/part-7-rtk-query-basics


set the default check for ClientAliveInterval to be 1800 sec

This is the default timeout value for ssh sessions that is set. Matching the inspec check to look for this value otherwise the check will fail.

retest

retest


wp_filter for test

@see8ch Hey, so we have things built right now so that the test is loaded via the wp footer filter, but set to display none, and there is an event listener in the app.js that looks for a click event on a element with an #OHQ_Button_Start, which toggles the display to block.
However in talking with Austin, it looks like we only want it to load on certain pages. We've tried having it entirely as a shortcode, which can just be placed on the page somewhere, but we run into some weird z-index issues because of how the AGX Hearing site is structured, which prevents us from escaping the level of z-index scope we need to get on top of everything.
So is there a way to use wp footer hook, but only on pages where another filter or action fires first? (like can we do a apply_filter or do_action from within another filter or action? And then not have the wp footer filter apply until the parent filter or action catches the hook?)
Basically we're trying to avoid having it load in every footer on every page load.

Ok, think I figured something out.
function agx_OHQ_Button($content) {
    add_filter('wp_footer', 'agx_hearing_test');

    echo '<div>
   <button id="OHQ_Start_Btn" onclick="AGX_OHQ_toggleClass()" >Start Quiz</button>
   </div>';
};

add_shortcode( 'OHQ_Button', 'agx_OHQ_Button' );

Did the solution above work? If not you could build an option that displays on the WP admin view for each page and give the user the option to toggle on/off.

@see8ch Yeah! That ended up working. Thankfully the simplest solution worked. Whew.


remove unnecessary attribute: #[allow(dead_code)]

Attribute: #[allow(dead_code)] in src/log.rs is unnecessary now and can be safely removed.

Thanks!


sandbox tool habitat-sim built with bullet check

Motivation and Context
Adds requires_habitat_sim_with_bullet decorator.
Decorates SandboxDriver with requires_habitat_sim_with_bullet to check if habitat-sim is built with bullet before instantiation SandboxDriver.
This seems to me a more informative / general check, but I can change to sim.get_physics_simulation_library() != habitat_sim.physics.PhysicsSimulationLibrary.NoPhysics.

How Has This Been Tested

Types of changes

[Refactoring] Large changes to the code that improve its functionality or performance

Checklist

[x] My code follows the code style of this project.
[x] I have updated the documentation if required.
[x] I have read the CONTRIBUTING document.
[x] I have completed my CLA (see CONTRIBUTING)
[x] I have added tests to cover my changes if required.

Can you test locally with a non-Bullet Habitat, if you haven't already? After that, LGTM!

Thank you, @eundersander. Yes, I've tested locally without bullet, works as expected


Unable to apply animated textures to objects.

I am trying to apply the animated textures to a static. So I took the first texture of the animation range and imported it into wadtool. Then I applied it to the static mesh. The static mesh is showing the textures in the editor but when I compile the level its a black object.
The same results are visible on animated texture as well. Sometimes it crashes the game. This has been repeated using a brand new wad and level.
Test.zip

Animated textures on objects and static meshes is not supported in TEN. It is a known limitation, and @MontyTRC89 (responsible for renderer) is aware of that.


[FEATURE REQ] Post the reference doc for SCA 6.0

Context
The final 6.0 version reference doc for Spring Cloud Azure should be available on the Github io.
Goal
Provide the latest reference doc for 6.0.0 on the Github io, the address is https://microsoft.github.io/spring-cloud-azure/6.0.0-beta.2/reference/html/index.html.

Update the New in 6.0 doc
Update the migration doc from Spring Cloud Azure 4.x to 6.0
Update code snippets
Update versions

@moarychan please change #31895  for Spring Cloud Azure 6.0 Release, and use it for all the related task, no  need to create feature request for each task


Swift 3.1 warnings

Hello. Thanks for this pod! Here it comes a PR to dismissing warnings of FLT_EPSILON

This has been fixed in the swift 4 release. Thanks


As a developer, I would like concise documentation around Kafka load testing

As a:
Infrastructure/ Operations Engineer
Describe the solution you'd like:

[ ] Strimzi +  Portworx needs TLS testing and Perf test metrics outcome (Docs)
[ ] Sanity Test: Validating that messages are received off the Kafka Broker (Related to #508)

[ ] Get the count read off a Broker? (Investigate)

[x] Merge Initial Kafka Perf Outcome + Portworx & Strimz Load Test Docs into Markdown (Docs)

Describe alternatives you've considered:

[ ] Comparison between operator: Strimzi vs Banzai
[ ] Comparison between operator: StorageOS vs Portworx

Additional context:
Docs will be in draft repo until completed - https://github.com/cnadolny/azure-kafka-kubernetes

@cnadolny

@NathanielRose  @cnadolny is the task list update to date?

@NathanielRose @cnadolny where do we stand with this?

@NathanielRose @cnadolny where do we stand with this?

Had a sync up with @NathanielRose today. The testing around the work is completed for this task, and I believe Michael took care of the sanity test requirement in another task.
Nathaniel and I created an internal document analyzing the performance of these tests. I think that it would be a good fit to add that document or parts of that document as a markdown file to the Kafka sample test folder in the Fabrikate repository. Will have another sync up next week after he's had time to go through the document.

Merge Initial Kafka Perf Outcome + Portworx & Strimz Load Test Docs into Markdown (Docs)

Docs added to https://github.com/microsoft/fabrikate-definitions/blob/master/samples/kafka-strimzi-portworx/test/Kafka-Performance.md


Receiving only when the invoice is open?

Can I still receive via the Lightning network, even when I returned to the main screen (i.e. I left the invoice screen)?

Yes you can, as long as your connection stays active.


API Manager allows request to go thru even with a JWT that has missing values and invalid signature

Description:
API Manager allows request to go thru even with a JWT that has missing values and invalid signature, looks like the API M caches the first request and allow all requests from the same token to go thru.
Steps to reproduce:
Publish the Pizzashack API.
Subscribe to the API.
Generate a JWT.
Invoke the API.
Change any part of the token with some random text.
Invoke the API and the request still goes thru.
Invoke a different resource of the same API and it still works.
Affected Product Version:
API Manager 3.2.0
Environment details (with versions):

OS: Mac OS
Client:
Env (Docker/K8s):

Optional Fields
Related Issues:

Suggested Labels:

Suggested Assignees:

Already fixed in 3.2.0


Fix for case where pc_features.npy does not exist

When Kilosort does not output a pc_features.npy file, set CuratedClustering.Unit::spike_depths attribute to null.
Will create new tag, release, and PyPI publication once this is merged.

Thanks @ttngu207!  I have implemented your suggestions.


Feature request: Support authorization access to swagger endpoints

Thanks for maintaining Swagger integration into ASP.NET Core!  It is really exciting to have tool provide the ability to not only show case an applications endpoints, but also provide a UI to test.
My feature request is being able to more easily plug in authorization rules to show/hide Swagger Endpoints.  My use case is that I intend swagger to be only visible to internal devs.  The current work around I have is reimplementing my authorization logic in middleware which then gets called on every request.  See: https://stackoverflow.com/questions/58283386/use-the-authorize-attribute-on-swagger-ui-with-asp-net-core-swashbuckle.
Looking at documentation it doesn't appear that out of the box support for authorization exists.  I think ideally I would be able to pass a Func<HttpContext, bool> as an option in UseSwaggerUI or better yet another option like SwaggerAuthorization = "PolicyName"
Would also be happy if the decision is that adding custom middleware is the best approach, but if that is the case would appreciate documentation on that since looking on SO and other implementations of Swagger it appears that this is a question that is often asked, but there is no ideal solution. See: https://stackoverflow.com/questions/55199383/how-to-protect-swagger-endpoint-in-net-core-api/65094653#65094653 and https://github.com/RicoSuter/NSwag/issues/1604 Would be great if the ASP.NET Core implementation had a clear path/decision on this.

For the swagger documents themselves, I think this is already possible using endpoint-based routing e.g.
app.UseEndpoints(endpoints =>
{
    endpoints.MapSwagger().RequireAuthorization("PolicyName");
});

However this doesn't cover Swagger UI, as that doesn't yet support endpoint-based setup

This can be achieved with the existing SwaggerUIMiddleware like this:
public static IEndpointConventionBuilder MapSwaggerUI(this IEndpointRouteBuilder endpoints)
{
    var options = endpoints.ServiceProvider.GetService<IOptions<SwaggerUIOptions>>()?.Value;
    options ??= new SwaggerUIOptions();

    return endpoints.MapGet(
        options.RoutePrefix + "/{**swagger-ui}",
        endpoints.CreateApplicationBuilder()
            .Use(async (context, next) =>
            {
                context.SetEndpoint(null); // otherwise StaticFileMiddleware will do nothing
                await next(context);
            })
            .UseSwaggerUI(options)
            .Use(_ => Results.NotFound().ExecuteAsync)
            .Build());
}

And then things like this are possible:
endpoints.MapSwaggerUI().RequireAuthorization(); etc.
Another approach is to unpack the entire SwaggerUIMiddleware into endpoints:
public static IEndpointConventionBuilder MapSwaggerUI(this IEndpointRouteBuilder endpoints, string routePrefix)
{
    return new RouteHandlerBuilder(
    [
        endpoints.MapGet(routePrefix, Results.Redirect(routePrefix + "/index.html", permanent: true).ExecuteAsync),

        // RespondWithFile(...) is just a static/parameterized version of SwaggerUIMiddleware.RespondWithFile()
        endpoints.MapGet(routePrefix + "/index.js", context => RespondWithFile(context, "index.js", "application/javascript")),
        endpoints.MapGet(routePrefix + "/index.html", context => RespondWithFile(context, "index.html", "text/html")),

        // This is essentially MapFallbackToFile() but w/o setting context.Request.Path = filePath
        // see https://github.com/dotnet/aspnetcore/blob/faf472dae8a6026dc5256f6d27eeefb26f096d0f/src/Middleware/StaticFiles/src/StaticFilesEndpointRouteBuilderExtensions.cs#L165C46-L165C63
        endpoints.MapFallback(
            routePrefix + "/{**swagger_ui_dist}",
            endpoints.CreateApplicationBuilder()
                .Use(static async (context, next) =>
                {
                    context.SetEndpoint(null); // otherwise StaticFileMiddleware will do nothing
                    await next(context);
                })
                .UseStaticFiles(new StaticFileOptions
                {
                    RequestPath = routePrefix,
                    FileProvider = new EmbeddedFileProvider(
                        typeof(Swashbuckle.AspNetCore.SwaggerUI.ConfigObject).GetTypeInfo().Assembly,
                        "Swashbuckle.AspNetCore.SwaggerUI.node_modules.swagger_ui_dist")
                })
                .Build())
    ]);
}


TimeSeriesGenerator in fit method failed

I've created multistep data using TimeSeriesGenerator according to this code:
	train_data_gen = TimeseriesGenerator(train, train, length=n_input, length_output=n_output,
                                             batch_size=n_batch, sampling_rate=1)
	test_data_gen = TimeseriesGenerator(test, test, length=n_input, length_output=n_output,
				             batch_size=n_batch, sampling_rate=1)

	for i in range(len(train_data_gen)):
		x, y = train_data_gen[i]
		print(x.shape, y.shape)

The shape of x is (n_batch, n_input, 1) and the shape of y is (n_batch, n_output, 1).
In the next step I've created a simple LSTM model:
	model = Sequential()
	model.add(LSTM(n_neurons, input_shape=(n_input, 1)))
	model.add(Dense(n_output))
	model.compile(loss='mean_squared_error', optimizer='adam')

	model.fit(train_data_gen, epochs=100)

However, calling fit() method using train_data_gen causes the following error:
  File "lstm_forecasting.py", line 115, in <module>
    model.fit(train_data_gen, epochs=100)
  File "/home/administrator/AI4BESS/.env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1064, in fit
    steps_per_execution=self._steps_per_execution)
  File "/home/administrator/AI4BESS/.env/lib/python3.6/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 1101, in __init__
    adapter_cls = select_data_adapter(x, y)
  File "/home/administrator/AI4BESS/.env/lib/python3.6/site-packages/tensorflow/python/keras/engine/data_adapter.py", line 964, in select_data_adapter
    _type_name(x), _type_name(y)))
ValueError: Failed to find data adapter that can handle input: <class 'time_series_generator.time_series_generator.TimeseriesGenerator'>, <class 'NoneType'>

I've modified source code
from keras.utils import data_utils # added

class TimeseriesGenerator(object): # from this
class TimeseriesGenerator(data_utils.Sequence): # to this


Html Overlay Table is jittering when zooming

When zooming in, I overlay a html table over the zoomable image.  But this Html Overlay Table jitters as long as I move in.
Here is the example code:
https://jsfiddle.net/4msc9hwx/1/
Is this a bug in openseadragon?

The demo is much faster when I remove the box-shadow from the td (yes, this one is obvious):
https://jsfiddle.net/qr2zLeok/

Hmm... I'm actually impressed the HTML table is making such a good grid! I think that bit of jitter is probably inevitable. If you want more control over how your grid is drawn you might use https://github.com/altert/OpenSeadragonCanvasOverlay or https://github.com/joshua-gould/OpenSeadragonCanvasOverlayHd (or any of the other drawing-based overlays).
Awesome image, BTW!

Thanks a lot for the compliment!
Do you have any idea where this jitter might come from?
I will definitely try out your suggestions.

I imagine the HTML table is trying to orient itself to exact pixel coordinates, whereas to be truly smooth it would need to draw to fractional pixel coordinates. It's making the right choice for an actual table, since keeping it on exact pixels makes it sharper, and normally tables aren't involved in smooth animation like this.

You should write a book one time, the inner life of a table ;-) Yes, your answer makes sense, so the only way to go is to use canvas. Thanks a lot!

Tables have feelings too! ;-)


Player is still alive when he isnt

When testing and trying to revive a friend he is banned and i can't revive him. It says "player is still alive".

Hello, thanks for reporting this. I think the only true fix to this issue is to rewrite the code that deals with checking offline player’s NBT data. Either I need to refine the existing system, or make an improved system that doesn’t require loading NBT data. I’m a bit busy currently, but I will most likely be able to push some fix in a few days.
Again, thank you for creating this issue. It is very hard to test this mod with actual players in the dev environment, so I really appreciate when others can test with real players

This should be fixed in the latest version 1.4.0


Try to make mixed-decls warnings become errors

Because we want to avoid implementing mixed-decls in the future, we will try, if we can tell our packages to create errors instead of warnings, when it comes to such mixed-declarations in our SCSS files.

This task should be time boxed to 1 day. If it's not possible to implement in this time, we'd have to look for another solution.


Copy image to a remote LXD fails with "error: The source remote isn't available over the network"

I have a local image I want to copy to a remote LXD which fails like:
tim@galu:~$ lxc image copy local:mojo canonistack-mojo: --alias mojo-2016-01-11
error: The source remote isn't available over the network

I can use the local image with no problems:
tim@galu:~$ lxc image list
+--------+--------------+--------+-----------------------+--------+----------+------------------------------+
| ALIAS  | FINGERPRINT  | PUBLIC |      DESCRIPTION      |  ARCH  |   SIZE   |         UPLOAD DATE          |
+--------+--------------+--------+-----------------------+--------+----------+------------------------------+
| mojo   | 5acce4745170 | no     |                       | x86_64 | 483.37MB | Jan 11, 2016 at 2:43pm (MST) |
| trusty | c7594c46de23 | no     | Ubuntu trusty (amd64) | x86_64 | 64.03MB  | Jan 8, 2016 at 3:00pm (MST)  |
+--------+--------------+--------+-----------------------+--------+----------+------------------------------+

The remote is also accessible, though currently empty:
tim@galu:~$ lxc remote list
+------------------+-----------------------------------------+--------+
|       NAME       |                   URL                   | PUBLIC |
+------------------+-----------------------------------------+--------+
| canonistack-mojo | https://<IP_ADDRESS>:8443                | NO     |
| images           | https://images.linuxcontainers.org:8443 | YES    |
| local            | unix:///var/lib/lxd/unix.socket         | NO     |
+------------------+-----------------------------------------+--------+
tim@galu:~$ lxc list canonistack-mojo
+------+-------+------+------+-----------+-----------+
| NAME | STATE | IPV4 | IPV6 | EPHEMERAL | SNAPSHOTS |
+------+-------+------+------+-----------+-----------+
+------+-------+------+------+-----------+-----------+

canonistack-mojo was setup with the commands lxc config set core.https_address [::] and lxc config set core.trust_password some-password

Turns out this is because the feature requested at https://github.com/lxc/lxd/issues/553 is not yet implemented. As a work around I was able to do an lxc image export mojo mojo-2016-01-11, scp the file to the remote location and do an lxc image import mojo-2016-01-11 on the remote. Then from my local a lxc image list works:
tim@galu:~/src/mojo-lxd/contrib/LXD$ lxc image list canonistack-mojo:
+-----------------+--------------+--------+-------------------------------------------------+--------+----------+------------------------------+
|      ALIAS      | FINGERPRINT  | PUBLIC |                   DESCRIPTION                   |  ARCH  |   SIZE   |         UPLOAD DATE          |
+-----------------+--------------+--------+-------------------------------------------------+--------+----------+------------------------------+
| mojo-2016-01-11 | 5acce4745170 | yes    | ubuntu trusty x86_64 (default) (20160108_03:49) | x86_64 | 483.37MB | Jan 15, 2016 at 2:34pm (MST) |
+-----------------+--------------+--------+-------------------------------------------------+--------+----------+------------------------------+


Badge status not updating on GitHub

About 3 days ago my project got the approval badge, this in my project displays as in progress

whereas if I display it in a .html file, if it displays that it has the this passing

I'm very sorry about this problem. Can you give me more information so I can track it down? In particular, What is the URL of the badge icon link that is NOT getting properly updated? Does it use https://bestpractices.coreinfrastructure.org/projects/7791/badge or  https://www.bestpractices.dev/projects/7791/badge?
When I directly view it through: https://www.bestpractices.dev/projects/7791/badge I see the correct status (100% passing). That doesn't mean there's no problem. In fact, someone else reported the same problem after we moved domains. In their case a forced reload fixed it, but that's not a proper fix.
For context: We use Fastly as our CDN; we expressly tell Fastly about updates, and they are remarkably fast about doing the update. We just switched domains. That shouldn't matter, but the list of things that "shouldn't matter but do anyway" is very long. I suspect that Fastly is somehow not getting the update. Any info you could give me to help track down the problem would be greatly appreciated.

Hi, I use https://www.bestpractices.dev/projects/7791/badge, I hadn't considered using https://bestpractices.coreinfrastructure.org/projects/7791/badge, but I see that there are projects like apache commons lang that use the latter, I think I could update my Readme.md using the latter and check if it updates correctly

Hi, I use https://www.bestpractices.dev/projects/7791/badge, I hadn't considered using https://bestpractices.coreinfrastructure.org/projects/7791/badge ...

You're using the recommended URL https://www.bestpractices.dev/projects/7791/badge. We're also redirecting https://bestpractices.coreinfrastructure.org/projects/7791/badge for people who use the older URLs. Both should work. However, knowing which one doesn't reliably work helps me debug.
Thank you very much for reporting this. I'm hoping it'll be easy to diagnose and fix. It's probably trivial to fix once diagnosed, but diagnosis can sometimes be tricky. Stay tuned, I guess :-). If you have a hypotheses or more info I'm always happy to hear them!

Hmmm, I think I've found it. I think it's a race condition that only matters if we also have problems sending an email. Well that is annoying. I will need to do a short guru meditation. We probably should probably be more gracious in general when we have problems sending an email.

Thank you very much for following up, I will be attentive to your updates, I thank you in advance for the support provided and I am sorry if perhaps my vocabulary is not so fluent, English is a little difficult for me.
I updated my Readme.md file and I was able to see what it mentioned in the first comment you made, I will update it again with the new link that you recommend and I will be attentive to your updates, thank you very much

I know what needs doing but it will take a little time to fix.
In the meantime, I've temporarily lowered the CDN badge cache time to 10 minutes (BADGE_CACHE_MAX_AGE=600) instead of 10 days. That way, even if the badge is not updated in our CDN cache (as it should be), it will be updated 10 minutes later. That should significantly reduce the impact of the bug until we fix it.

By the way, please do use https://www.bestpractices.dev/projects/7791/badge. The ".dev" domain is our new domain and we'd like people to use it!

The badge configuration has changed so failed emails don't cause failures on badge updates. We also fixed the failing emails in the first place.
I've changed BADGE_CACHE_MAX_AGE=86400 - so if all else fails, obsolete badge images will update in 1 day.
I'm calling this fixed.


<IP_ADDRESS> used as a placeholder, despite being real external website/address

Under edit Proxy Host, it states to use <IP_ADDRESS>/path for sub folder forwarding
<IP_ADDRESS> should not be used like this, as its a valid external address and website

@TopBanana123 seems like an easy fix. Why not open up a PR?

This one can be closed, was fixed with #1396