Better readme and code. Maven project. Code styles. Copyright. Optionals. Null-safety. Expire Feature. Modularity. Nukkit Support. Unit Tests.

Done.
Fixes #2
Fixes #1
Fixes #4
Fixed #5

I think this is a really cool change but this code is just too complex to me. If really like it but I need some time to understand it

np, let it all hang out

you can look at here
https://github.com/portlek/player-inputs
what the general structure is
and what the changes are.

I don't understand why you make everything final. Could you explain?

Sure. Because, immutability(finals) is decreasing the cohesion. and if you make your code less cohesion your project can run in every situation, everywhere. also this makes your code more testable.

you can read more information for the obj. cohesion here
https://www.yegor256.com/2020/02/11/object-cohesion.html
it can be helpful for your understanding.

also for the design this can be helpful
https://www.yegor256.com/2020/02/19/fat-skinny-design.html

I'll check them


WIP: docs and minor ergonomic changes

Documenting exported functions and variables.
Additional justfile helpers.
So far, one set of magic numbers replaced with consts (runtime skip values).
Tests: the tests were found to not be indempotent and so have been updated to compare data on a structural level.
Docs, README.md was already out of date with the error interface and so examples have been moved to godoc where they are tested as part of go test they are also runnable in the online godoc package registry. Offline docs based example look as follows (docs can be started using just docs:

@je4 just requesting re-review on these. I noticed some issues with the unit tests as they were (more info in the respective commit). And I have made some changes to the README.md to provide some more interactivity via godocs and also some plain-examples on the README.


Browser freezes / loop when creating nested resource

Create resource (e.g. class)
Create nested resource in edit form (e.g. property)
On save, screen freezes

@AlexMikhalev  and @turkhale
demo: https://vimeo.com/1030305392/21dbbf3904?share=copy
(haven't replicated it myself, but both Alex T and Alex M have had this)

@AlexMikhalev  @turkhale This was a bug in an older version (the inert attribute on body would sometimes not get removed when closing a dialog). It was fixed in version 0.39 or 0.38 (can't remember which one)


 I hope controll commit manually. could use git add  instead of git commit while save?

Does anybody agree with me?


Non-decimal integer constants lexed incorrectly

The following program
const bit<16> IPV4x = 0x0;
const bit<16> IPV4d = 0d0;
const bit<16> IPV4o = 0o0;
const bit<16> IPV4b = 0b0;
const bit<16> IPV4 = 0;

is being parsed as
const bit<16> IPV4x = 720;
const bit<16> IPV4d = 520;
const bit<16> IPV4o = 630;
const bit<16> IPV4b = 500;
const bit<16> IPV4 = 0;

Root cause appears to be the invocation of Bigint.of_string by the lexer here: https://github.com/cornell-netlab/petr4/blob/981e36f10ee91ac84c23a8a4f5ad04029fdf9cd2/lib/lexer.mll#L78 which is called from https://github.com/cornell-netlab/petr4/blob/981e36f10ee91ac84c23a8a4f5ad04029fdf9cd2/lib/lexer.mll#L126-L133

This is with Core 0.13.0.

Hi, thanks for the bug report. I took a look and our Bigint library only works with base 10, so I think the easiest fix for this is probably replacing the Bigint library with one that handles other bases.

I added the ocaml implementation of biginteger so that we could compile with js_of_ocaml, the issue being that zarith called external functions.
It looks like Jane Street has javascript stubs for zarith now we could try moving to that so that we could just use the normal bigint library and avoid any other problems.
https://github.com/janestreet/zarith_stubs_js


When I open index.html in my browser, it is blank? Should I have Linux installed?

Description
When I open the editor page, it shows this:

What it should do is open the editor. And when I go through the files and finally find the correct editor, it's blank:

Please fix this. Should I have Linux installed?
Version

model-viewer: v2.0.2

Browser Affected

[x] Chrome, version: 106.0.5249.112

OS

[x] Chrome OS

AR

I don't have AR I only have Chrome browser on Chromebook. Can you guys make this compatible for people with/without Linux?

The easy way to open the editor is to navigate to the public version: https://modelviewer.dev/editor/
The only reason to serve it locally (that I can think of) is if you're developing it. In that case you'll want to start by building locally.

But at the beginning of my 3d designing, I used Voxel Builder (also downloaded from GitHub)

Weird, why would Family Link block modelviewer.dev? Anyway, you can follow our README to get a build environment set up, but I have the feeling the much easier thing would be to ask your parents to unblock modelviewer.dev. It's just a Google open-source documentation site.

Ok :) I will ask them. I am making a(n) Hawkins Lab upside down portal room with Demogorgon (Stranger Things setup) in aFrame. So I am looking to view my models in modelviewer.dev to then import it into my 3d vr world.


chore(main): release near.js 2.2.0

:robot: I have created a release beep boop
2.2.0 (2023-03-07)
Features

gh-actions: added release workflow (fbf6a11)
gh-actions: added release workflow (f05b232)
manually bump minor release (79f33c6)

Bug Fixes

add releaserc (7b05de9)
gh-actions: remove dry run flag (b42d30a)
improved git tag format (34a2502)
manually bump major release (b508ed0)
minor cleanup (792b604)
semver version for repo root (db3b4c5)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/switchboard-xyz/sbv2-near/releases/tag/near.js-v2.2.0 :sunflower:


NumericField: Add KeyboardInterceptor to prevent input of invalid chars

KeyboardInterceptor allows to preventDefault specific key strokes directly on the javascript side.
The service significantly improves NumericField which needed some very complex key-handlers to work (and even then it worked only so-so. Before forbidden characters (like [a-z]) were added briefly visible in the text box before being removed by the cleanup logic. With this new interceptor service the keys are prevented and will never show up.
fixes #2592
Using the new KeyboardInterceptor
The interceptor service binds itself against an element reference of the component (in this example _self). That means you need a ref to a top-level div of the component you want the interceptor to work on. It attaches a mutation observer to that DOM node to check for re-arrangements of the elements it attaches key event listeners to. These elements need to be marked with a css class so the interceptor can find them.
Connecting the interceptor to the component:
        protected override async Task OnAfterRenderAsync(bool firstRender)
        {
            if (firstRender)
            {
                await _keyInterceptor.Connect(_self, new KeyInterceptorOptions()
                {
                    //EnableLogging = true,
                    TargetClass = "mud-input-slot",
                    Keys = {
                        new KeyOptions { Key="ArrowUp", PreventDown = "key+none" }, // prevent scrolling page, instead increment
                        new KeyOptions { Key="ArrowDown", PreventDown = "key+none" }, // prevent scrolling page, instead decrement
                        new KeyOptions { Key="/^(?!"+Pattern+").$/", PreventDown = "key+none|key+shift|key+alt" }, // prevent input of all other characters except allowed, like [0-9.,-+]
                    },
                });
            }
            await base.OnAfterRenderAsync(firstRender);
        }

Above we see how it is attached to _self which is the top-level div of numeric field (which I had to add). We also see that the TargetClass is set to mud-input-slot which is one of the css classes of  the <input> we want to intercept key events from.
The Keys configure which individual key combinations to subscribe/preventDefault/stopPropagate.  Here we only apply preventDefault. We prevent the default action of the arrow keys which would scroll the page. And (using a negative lookahead expression) we prevent all single character input keys except [0-9,.\-] (defined in the Pattern property). This means that by changing Pattern the user can define which keys to allow and which to prevent. For instance, we had an issue where a user wanted to prevent input of the minus character. He could just change Pattern to "[0-9],.".
general info on how to match different key combinations
 Configuration for preventDefault() and stopPropagation() control

 For PreventDown, PreventUp, StopDown and StopUp the configuration which key combinations should match
 is a Javascript boolean expression.

 Examples:
 For the examples, let's assume the Tab key was pressed.
 Note: for combinations of more than one modifier the following order of modifiers must be followed strictly: shift+ctrl+alt+meta

  * Don't prevent key down:
          PreventDown=null or PreventDown="none"
  * Prevent key down of unmodified keystrokes such as "Tab":
          PreventDown="key+none"
  * Prevent key down of Tab and Ctrl+Tab
          PreventDown="key+none|key+ctrl"
  * Prevent key down of just Ctrl+Tab
          PreventDown="key+ctrl"
  * Prevent key down of Ctrl+Tab and Shift+Tab but not Shift+Ctrl+Tab:
          PreventDown="key+shift|key+ctrl"
  * Prevent key down of Shift+Ctrl+Tab and Ctrl+Tab but not Shift+Tab:
          PreventDown="key+shift+ctrl|key+ctrl"
  * Prevent any combination of key and modifiers, but not the unmodified key:
          PreventDown="key+any"
  * Prevent any combination of key and modifiers, even the unmodified key:
          PreventDown="any"

key matching
For matching keys you can either use the key representation or a java regex.
Examples: " " for space, "Tab" for tab, "a" for lowercase A-key.
Also allowed: JS regex such as "/[a-z]/" or "/a|b/" but NOT "/[a-z]/g" or "/[a-z]/i"
              regex must be inclosed in two forward slashes!

subscribing matched key events
In this PR we are using the normal keyup and keydown events via Blazor. But you can get selective events via the KeyInterceptor by setting SubscribeUp or SubscribeDown. Then you can attach handlers like so:
_keyinterceptor.KeyDown+=OnKeyDown;
_keyinterceptor.KeyUp+=OnKeyUp;

Of course only matching keys with SubscribeDown or -Up will fire the events.

@JohanArleth: NumericField still has some problems despite @mckaragoz efforts to fix them all (which I am thankful for). But, for instance, the arrow keys still manage to scroll the page sometimes. Also there were side-effects like constant unfocusing and refocusing when going up- or down with the arrow keys. After getting advice from @just-the-benno how to solve the problem I implemented a service that allows us to precisely prevent single key strokes in Javascript before they even enter the Blazor side while allowing others.
This new approach seems to work extremely well. Forbidden characters are not even showing up any more like before. The key handling code in numeric field is much much cleaner and shorter and seems to work exactly the same in BSS and WASM.
@JohanArleth, knowing you and your testing skills, I'd like for you to check this PR out and do your magic. I have checked it and it looks good. If you can confirm it we'll get this method of keyboard prevention rolled out to other components as well where we struggle similarly with preventDefault.
@mikes-gh is the PR police happy with this?
@just-the-benno let me know if you have any thoughts about the key interceptor service

I'll test it today

It's possible to sneak certain illegal characters in that can not be blocked only with keyboard interception:

not sure how these characters are used on other keyboards, but on mine (Danish) I first press that key, and then when I press a number it automatically adds that char before/on the number.
It might be okay to leave this as is. since it is correctly removing these illegal characters when formatting the number.

It's possible to paste text into the numeric field. perhaps this keyboard interceptor can also hook into the paste event? We should reject paste with illegal characters.

This was a bug before as well, but it would be nice if we could find a way to fix it:

Oh, I think I know. After losing focus sometimes it does not format the value.
Anyway, thanks for the review. You found no mayor flaws so I'll merge this soon.

It's not exactly that it is not formatting, it is removing the formatting. It's a bit fast in the gif,  but what i am doing is just removing 1 of the decimall zeroes. When i then focus out, all the formatting is removed. This happens with all changes that only change the text without changing the number value,  such as deleting a thousand seperator.
Overral i agree,  no major issues.

* the second I could handle by cleaning up the pasted text after the paste happened

Handling it after the paste will need all that complicated logic that you just got rid of with the interceptor.
I think it is better to do it before, like the key intercepter.

The cleanup logic is still there. I left it in place which helps with the illegal characters like ^ and ` . It should automatically clean up pasted text already. I think I'll not venture into preventing pasting in this PR on the JS side yet. But I'll see if I can find the other bug.

@JohanArleth I found the third bug and even was able to reproduce it in a test case. It is fixed now.

I also managed to fix the first bug, dead keys like ^ are prevented now

I think merging was a bit early.
The dispose pattern within the KeyInterceptor is different than in other services. For instance, in other components, we are using IAsyncDisposable and specify what type of exception is to catch. I guess that @mikes-gh has also new thoughts on that.
There are some styling mismatches. While being not wrong
var task=_jsRuntime.InvokeVoidAsync($"mudKeyInterceptor.disconnect", _element);
 if (!_isDisposed)
 await task;

I haven't seen other components using this type of expression.
Shouldn't it be InvokeVoidAsync here?
 await _jsRuntime.InvokeAsync<IEnumerable<BoundingClientRect>>("mudKeyInterceptor.connect", _dotNetRef, element, options);
_isObserving = true;

Besides, I missing dedicated test cases for the service. For instance ensuring that even if the service has been disposed, that class to connect/disconnect don't result in an error or are. The same is true for the JS invokable methods. Sure only one line, but also an easy test case, I think.

ad IAsyncDisposable I think it is not needed because we are not waiting for the result anyway. As I understand it, the sole reason for this interface is to allow to dispose things that we want/need to await.

There are some styling mismatches. While being not wrong
var task=_jsRuntime.InvokeVoidAsync($"mudKeyInterceptor.disconnect", _element);
 if (!_isDisposed)
 await task;

I haven't seen other components using this type of expression.

Yes, but this is better than what other services implement because it allows to re-use the disconnect method in dispose instead of copy-paste duplication like for instance in ResizeObserver.

I'll push a correnction with InvokeVoidAsync for connect.

@just-the-benno thanks for the thorough review. I wanted to get it merged ASAP because @mckaragoz is waiting for it to work on Select. I notice now that I also forgot to add docstrings to the service like I had planned.


React Native iOS Photo Library Access working on simulator but showing unavailable on real device

I tried to access the photo library through react-native permissions when I run on my simulator it works fine with no issues, but when I try to use it on my real device through XCODE build using an USB Connection, it says the feature is unavailable. I cannot access my photo_library on a real device.
My Simulator Version: iOS 13.5
My Physical Device VErsion: iOS 13.3.1
Development Versions: macOS Catalina 10.15.4
Using React Native CLI
React Native Permissions:    "^2.1.4"
I tried using 2.1.5 still have the same issue.
My Code is correct as it worked on a simulator.

@SujithStellargoldcoin Hi. unavailable response for photo library === PHAuthorizationStatusRestricted
According to the documentation,

Parental controls or institutional configuration profiles can restrict the user’s ability to grant photo library access to an app.

Could you check both?

Hi @zoontek I got that resolved. In my mobile parent control options was enabled. Thanks for your prompt response.

That could solve this issue


Fix no longer maintained Drupal Console

Description
curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to drupalconsole.com:443
Motivation and Context

Types of Changes

[x] Bug fix (non-breaking change which fixes an issue).
[] New feature (non-breaking change which adds functionality).
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected).

Definition of Done Checklist:

[x] I've read the Contribution Guide.
[] I've updated the documentation. (refer to this for how to do so).


4.0.1 breaks SSR

I upgraded my @loadable/component / react-apollo / ssr / monorepo project to Material-ui 4.0.0 over the weekend. Went pretty well. Did have some struggles with the ssr api and hooks errors. I ended up with this as a working solution:
const reactApplicationMiddleware = async (req, res) => {
try {
    const client = createClient(true, { req, fetch }); // create apollo client

    const sheets = new ServerStyleSheets();

    const extractor = new ChunkExtractor({
        statsFile: webStatsFile,
        entrypoints: ['client'],
    });

    const reactRouterContext = {};

    const TheApp = () => (
        <ApolloProvider client={client}>
            <Theme>
                <App
                    tenantId={tenantId}
                    configVars={configVars}
                />
            </Theme>
        </ApolloProvider>
    );
    try{
        await getDataFromTree(
            extractor.collectChunks(
                <TheApp />,
            ),
        );
    } catch (err) {
        console.error('Error while running `getDataFromTree`', err);
    }
    const initialApolloState = client.extract();

    const jsx = extractor.collectChunks(
        sheets.collect(
            <TheApp />,
        )
    );

    const html = renderToString(jsx);

My Theme component looks like this:
const Theme = ({ children }) => (
	<ThemeProvider theme={theme}>
		<CssBaseline />
		{children}
	</ThemeProvider>
);

export const theme = createMuiTheme({
	typography: {
[...]

After upgrading to @material-ui 4.0.1, the errors are back.
Error while running `getDataFromTree` { Invariant Violation: Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:
1. You might have mismatching versions of React and the renderer (such as React DOM)
2. You might be breaking the Rules of Hooks
3. You might have more than one copy of React in the same app
See https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem.
    at invariant (/Users/mschipperheyn/project/node_modules/react/cjs/react.development.js:88:15)
    at resolveDispatcher (/Users/mschipperheyn/project/node_modules/react/cjs/react.development.js:1436:28)
    at Object.useContext (/Users/mschipperheyn/project/node_modules/react/cjs/react.development.js:1441:20)
    at useTheme (/Users/mschipperheyn/project/node_modules/@material-ui/styles/useTheme/useTheme.js:15:25)
    at /Users/mschipperheyn/project/node_modules/@material-ui/styles/makeStyles/makeStyles.js:247:56
    at CssBaseline (/Users/mschipperheyn/project/packages/server/node_modules/@material-ui/core/CssBaseline/CssBaseline.js:61:3)
    at processChild (/Users/mschipperheyn/project/packages/server/Users/mschipperheyn/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:2888:1)
    at resolve (/Users/mschipperheyn/project/packages/server/build/webpack:/Users/mschipperheyn/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:2812:1)
    at ReactDOMServerRenderer.render (/Users/mschipperheyn/project/packages/server/build/webpack:/Users/mschipperheyn/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:3202:1)
    at ReactDOMServerRenderer.read (/Users/mschipperheyn/project/packages/server/build/webpack:/Users/mschipperheyn/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:3161:1)
    at renderToStaticMarkup (/Users/mschipperheyn/project/packages/server/build/webpack:/Users/mschipperheyn/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:3661:1)
    at process (/Users/mschipperheyn/project/packages/server/build/webpack:/Users/mschipperheyn/project/node_modules/react-apollo/react-apollo.esm.js:1037:1)
    at process._tickCallback (internal/process/next_tick.js:68:7) name: 'Invariant Violation', framesToPop: 1 }

Looks like something went of the rails. The 0.0.1 next day upgrades are always the most dangerous ;-)

With the nature of that hooks-invariant error we need a minimal reproducible example. Since we SSR our own library for the docs it isn't just any SSR setup that is broken. Make sure you're not using linked libraries.

@eps1lon Ok, I will do that when I have some time.

@mschipperheyn may be useful https://github.com/mui-org/material-ui/issues/15893


Added Frisian translation

Creates new legalcode translations for the 4.0 license suite in Frisian.

@TimidRobot These are the Frisian translations of the 4.0 license suite.
Is there a way I can preview them on a staging server to see if we need to make adjustments?


Serial only send when values changed

Hello,
deej was using 0,5% cpu all the time. So i changed the Arduino script, so it only sends the values when

Hey there @MasterTim17, thanks for writing!
Unfortunately this isn't a change I want to introduce into deej's main fork: one of the strong reasons for opting to have constant sends (currently at around 100hz, I believe) is that it allows client-side noise compensation without having to re-flash the Arduino firmware depending on hardware quality and strength of electrical connections. In the future I also plan on relying on this for a keep-alive check that would allow reconnecting on connection loss.
I realize this is a slight trade-off with regards to performance, but the %CPU cost is negligible enough that it has no impact on most everyday users. Let me know your thoughts!

Hey there @MasterTim17, thanks for writing!
Unfortunately this isn't a change I want to introduce into deej's main fork: one of the strong reasons for opting to have constant sends (currently at around 100hz, I believe) is that it allows client-side noise compensation without having to re-flash the Arduino firmware depending on hardware quality and strength of electrical connections. In the future I also plan on relying on this for a keep-alive check that would allow reconnecting on connection loss.
I realize this is a slight trade-off with regards to performance, but the %CPU cost is negligible enough that it has no impact on most everyday users. Let me know your thoughts!


BUG - Accessor, key and label needs to be edited without the UI and YAML in existing files shifts around?

Describe the bug
2 Issues

The accessor, key and label is not configurable via the UI. I had to edit the file manually
The YAML in my file which I configured as keys/accessors  is suddenly placed at the top of the file when making an edit?

The position should not move

My tags which were neatly 1 per line are suddenly comma delimited on a single line when making an edit?

To Reproduce
Tried it - See above
Expected behaviour
See above
Screenshots
Not Applicable
Desktop (please complete the following information):

OS: macOS 12.4
Obsidian: 0.14.12
Dataview: 0.5.20

Smartphone (please complete the following information):
Not Applicable
Additional context
None

Hi @spiritualgeek
About first point. If you click in the header of the column, a menu will be displayed where you can edit the label. If some of the rows had that key, will be modified with the new trimmed  label. (my new label => mynewlabel)

second point. Yes, the edit engine add the column fields at the top of your front matter in order, then adds the rest. It was a design decision of performance to just write once in your file.
third point. I don't understand well the use case. Could you give me an example?
yourfield: #tag1
#tag2
after edit are:
yourfield: #tag1 #tag2
?

I did that, and it did not work that is why I resorted to editing the file
This makes it frustrating when you want to use it on-top of existing notes where each attribute has its proper position (OCD perhaps, but it's somewhat irritating)
My tags are supposed to look like:

tags:
- 🧰
- person/me
- topic/util
- subtopic
- state/open
- activity/sorting

Post your tool it's tags: 📞,person/me,topic/contact,subtopic,state/done,activity/done
Great plugin with a lot of potential!
One last thing - The table has far too much white space (and I'm using 3 4K monitors)
Thanks for the quick response

oh I see, currently yaml list are not supported. Will be added as a bug. Thanks for your testing.
The label editing maybe is affected about the list. I will report the advance here :)

about the position of the frontmatter, I am afraid its not possible to readapt at the position, maybe add the not column fields first an then them. That could fix your issue?

I'm uncertain if the label editing is related, as I created the "DB" first and then copied a few notes for testing into the same directory afterwards

If you think about it an attribute may be called spendamount: $100 but in the table you simply want the label to be Amount- I could not see how you specify the attribute separate from the title?

On the positioning. I don't think it's too much of a big deal, but users will generally have their alias and tags at the beginning. I put my attributes (that a specific to a type of note) further down and always end off with an update: attribute that can contain a few lines of text.

Looking forward to this plugin appear in the gallery :)

This plugin updates the attributes in place if you want to look at it. It also does not touch any other attribute - https://github.com/beaussan/update-time-on-edit-obsidian
I see the update still has issues with putting a list on one line?
Have not played with the updated version extensively yet

export const parseFrontmatterFieldsToString = (databaseFields: RowDatabaseFields, deletedColumn?: string): string => {
    const frontmatterFields = databaseFields.frontmatter;
    const array: string[] = [];
    array.push(`---`);
    Object.keys(frontmatterFields).forEach(key => {
        if (key !== deletedColumn) {
            array.push(...parseLiteralToString(frontmatterFields[key], 0, key));
        }
    });
    array.push(`---`);
    return array.join('\n');
}

function parseLiteralToString(literal: Literal, level: number, key?: string): string[] {
    const literalBlock: string[] = [];
    literal = DataviewService.parseDataArray(literal);
    if (DataviewService.getDataviewAPI().value.isArray(literal)) {
        literalBlock.push(`${" ".repeat(level)}${key}:`);
        literal.forEach((literal, index) => {
            literalBlock.push(...parseLiteralToString(literal, level + 1));
        });
    }
    else if (key) {
        literalBlock.push(`${" ".repeat(level)}${key}: ${literal}`);
    } else {
        literalBlock.push(`${" ".repeat(level)}- ${literal}`);
    }
    return literalBlock;
}

1.3.2 is out! please, let me know if you have any trouble


Add a comment to the piece of news or tips&tricks

As a Logged User I want to add a comment to the piece of News or to the Tips & Tricks so that I can share my thoughts with other users.
Tab.1 'Add Comment' Attributes

#
Name
Type
Condition
Value/Restriction

1
Add a comment
Input Text, alphanumeric and Special characters
Mandatory,Enable
max characters number - 8000min characters number - 1, except ‘space character’.

2
Added comment
Text, alphanumeric and Special characters
Disable
max characters number - 8000min characters number - 1, except ‘space character’.

3
Comment
Button
Enable/ Disable
When Attribute 1 isn’t valid, the button is disabled.When Attribute 1 is valid, the button is enabled.

4
Avatar
Picture
Disable
The avatar of the user who added the comment

5
User name
Text
Disable
The name of the user who added the comment

6
Date
Text, date format[Mont Day, Year]
Disable
The date when the user added the comment

Mockup: News_page_registered_my
Acceptance Criteria:

Only registered and logged user can add a comment to the piece of news.
Only registered and logged user can add a comment to the Tips & Tricks.
Logged User can add a comment on the  ‘News’ page (News Single View).
Logged User can add a comment on the ‘Tips $ Tricks’ page (Tips & Tricks Single View).
Logged User can publish some text pressing the ‘Comment’.
When Logged User presses the ‘Comment’ button:
a) the system saves the comment and displays below,
b) the system displays the date of the comment publishing,
c) the system recalculates the number of the total comments and updates it on the News Single Page or Tips & Tricks Single Page.
d) the system displays the author-name and avatar related to the comment
All users (registered and not registered) can review all related to the piece of news or o the Tips $ Tricks comments.
All Tab.1 Attributes are valid.
Breakpoints 1140, 1024, 768, 576, 320 are done due to provided mockups.

Done without Tips&Tricks functionality


Link to NHS Data Explorer

NHS Data Explorer is now live. (You must be in nhs_saturn_users to see it.)

Hi there! Would you mind re-creating this? Our CI settings weren't building PR's from forks, (I believe) I've fixed that now.


Improve speech enhancement tutorial

The "speech + noise" mixture still has a high SNR, which can't show the effectiveness of MVDR beamforming. To make the task more challenging, amplify the noise waveform to reduce the SNR of mixture speech.
Show the Si-SNR score of mixture speech when visualizing the mixture spectrogram.
FIx the figure in rtf_power subsection.

The description of enhanced spectrogram by rtf_power is wrong. Correct it to rtf_power.

Print PESQ, STOI, and SDR metric scores.

after offline discussion with @boeddeker and @Emrys365, amplifying the current noise by a given SNR value can solve the issue, will remove the gaussian noise.
also Si-SNR may not be the best evaluation metric for reverberant speech. will also add PESQ, STOI, and SDR scores in the tutorial.

updated tutorial page: https://output.circle-artifacts.com/output/job/3b57f109-1a93-444a-a746-2f0f6d870038/artifacts/0/docs/tutorials/mvdr_tutorial.html#result-for-rtfmvdr-with-rtf-power

updated tutorial page: https://output.circle-artifacts.com/output/job/1bd808da-caf5-41d3-862f-9893349c13f5/artifacts/0/docs/tutorials/mvdr_tutorial.html


Nullablereftypesetting

When building in VS Code, I was seeing the following warnings:
C:\Users\m2web\source\repos\dotnet\blazor-in-action\chapter-03\BlazingTrails\BlazingTrails.Web\Features\Home\HomePage.razor(26,18): warning CS8669: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source. [C:\Users\m2web\source\repos\dotnet\blazor-in-action\chapter-03\BlazingTrails\BlazingTrails.Web\BlazingTrails.Web.csproj]
C:\Users\m2web\source\repos\dotnet\blazor-in-action\chapter-03\BlazingTrails\BlazingTrails.Web\Features\Home\TrailDetails.razor(27,29): warning CS8669: The annotation for nullable reference types should only be used in code within a '#nullable' annotations context. Auto-generated code requires an explicit '#nullable' directive in source. [C:\Users\m2web\source\repos\dotnet\blazor-in-action\chapter-03\BlazingTrails\BlazingTrails.Web\BlazingTrails.Web.csproj]
Looking at https://docs.microsoft.com/en-us/dotnet/csharp/nullable-references I annotated the nullable parameters and the warning is now absent.

Sorry for the additional commits, but I omitted to create a new branch for the .gitignore file change, reverted the commit, added the annotations, and then finally formatted the new additions.


Fragment redirect

Core Library
MSAL.js v2 (@azure/msal-browser)
Core Library Version
2.14.2
Wrapper Library
MSAL React (@azure/msal-react)
Wrapper Library Version
1.0.0
Description
Hi, I created the exact flow @jasonnutter described here https://github.com/AzureAD/microsoft-authentication-library-for-js/issues/2531#issuecomment-770110059. Since I am using react-router and azure portal doesn't allow redirect uris with fragments, we created a redirect api to land on the desired pages after redirect. The problem is, since the redirect url has fragments instead of queries (in the form #code=....), the server can't read the part with #code=....., and it can't pass it back to the UI. As a result, handleRedirectPromise() is called with a null result value, and I can't set the msal active account from this value. Am I missing something or can you suggest me a workaround for this?
MSAL Configuration
auth: {
        clientId: "97d488cd-0129-418e-a928-714f227d7ba2",
        authority: "https://login.microsoftonline.com/common",
        redirectUri: `${window.location.origin}/somewhere/manager/azure_oauth_sso_callback`,
        postLogoutRedirectUri: "/"
    },
    cache: {
        cacheLocation: "sessionStorage",
        storeAuthStateInCookie: false
    }

Relevant Code Snippets
No response
Identity Provider
Azure AD / MSA
Source
External (Customer)

@semihucari

The problem is, since the redirect url has fragments instead of queries (in the form #code=....), the server can't read the part with #code=....., and it can't pass it back to the UI.

The response being passed back in the fragment instead of a the query parameter (and thus not being readable by the server) is by design. MSAL.js will understand how to parse the response (when handleRedirectPromise is invoked), validate it, and then trade the auth code for tokens (or throw an error).
Your page used as the redirect should invoke handleRedirectPromise and not attempt to clear the hash from the url (MSAL will do that once it has been processed).

The redirecturl is set to somewhere in the server since I couldn't put fragments in the azure portal redirect urls (fragments for react-router library). Are you saying that the server can pass the fragment part (fragment for msal auth) back to the client side? Sorry I didn't know its possible, I will try thanks.

@semihucari

The redirecturl is set to somewhere in the server since I couldn't put fragments in the azure portal redirect urls (fragments for react-router library).

The reason why fragments aren't support in redirect uris is because AAD needs to send back the response in the fragment.

Are you saying that the server can pass the fragment part (fragment for msal auth) back to the client side? Sorry I didn't know its possible, I will try thanks.

And no, the url fragment is not send to the server, so this is not possible. Why do you want the response sent to your server?
If you require that the redirect response be sent to your server, as opposed to being processed client-side by MSAL.js, you will need to use a library such as MSAL Node which supports initiating and processing requests server-side.
For scenarios like yours where you are using hash-based routing, we recommend using a redirect URI that does not have a hash (such as your home page, or a dedicated html page), and then enabling navigateLoginRequestUrl which will tell MSAL to navigate back to the page that initiated the login request.

Thanks for the fast replies and thanks your time, that helped a lot.


Reconsider the strategy setting

I like that all-in-one is the default value for the strategy setting. However, for new starters with Jaeger it might not be immediately obvious what the difference between all-in-one and production is. I would suggest a different point of view here. Instead of changing the functionality based on strategy, change it based on storage. Consider renaming the strategy option to storage and allow the following values: memory, elasticsearch, cassandra, etc.
The default storage option might be memory. The operator would chose the all-in-one image for that storage type. The user will still have the option to override the image for advanced users but in most cases you can preselect the default jaeger docker images - only request the users to select the version (tag) and image pull policy.
The other benefit of this approach is that if you change functionality based on storage type you can also add some functionality for managing retention. For example, you can delete Elasticsearch indices when they get out of retention. Alternatively, you can have per-service/operation retention and the operator can delete the traces for some busy services from Cassandra after a week but keep others for a month.
I am not saying that this is the best approach, I just wanted to give you a different point of view.

I'm not sure this should be done right now. I'd rather leave this item open and wait for feedback from users.
The reason is that the "all-in-one" is suitable for pretty much all use cases, as it can be used with the same storage backends as the production. It's the default strategy if nothing is provided at all.
The only advantage of the production strategy for most users is that it can be individually scaled and it's used only if it's explicitly set (ie, the user has read about it).

It is decoupled already:
https://github.com/jaegertracing/jaeger-operator/blob/master/deploy/examples/simple-prod.yaml

I see the confusion now. The thing is: right now, the storage.options object goes directly to the args, just like the all-in-one.options. It makes sense to specify the options for the storage as a top-level object, as it's shared among the query and collector, but it doesn't really matter that much for the all-in-one.
For now, I'll then just change the example to use a different configuration switch than memory-max-traces.

I'm closing this, as it seems there's value in having strategy and storage as independent constructs. The storage might be chosen based on the strategy (and vice-versa), but the end user should be able to decide how the jaeger instance is deployed in terms of components (production/streaming/all-in-one) and storage (cassandra/es/kafka).


Support multiple Issuers of e.g. MembershipCredential

Current implementation looks like the VP is verified in MIW and then the content is checked in EDC / an EDC extension.
One of those checks is (also according to the relevant standard CX0018) that the issuer of the VC is the (or to be more precise a) dataspace operator.
And exactly this small difference of the or a is relevant here. The current implementation seems to allow exactly 1 tx.ssi.miw.authority.id which looks like to me that there is only 1 issuer possible.
I think it is important, though, that multiple such issuers are possible. This is the case in a multi-OpCo environment.
I think there are 2 ways forward, a short term workaround and a long term solution.
short term:
Make tx.ssi.miw.authority.id a list instead of a single string.
Beware, that also the prefix is very likely different!
long term:
There should be a hosted list I guess which is signed by the CX association that contains valid (trusted) issuers of VCs.
It needs to be clarified whether a second OpCo is Release 3.2 relevant or not.
--
Matthias Binzer

has been moved to #814 and upstream https://github.com/eclipse-edc/Connector/issues/3602


Migrated pivpn setup allows old clients to connect, but cannot generate new client keys

Issue
After migration, newly generated client configurations do not work. Old configurations work fine; they can connect.
I copied the contents of /etc/openvpn from my old setup to my new, and the old clients are still able to connect normally and everything is fine. But when using pivpn add nopass, a new client configuration is successfully generated but it does not connect and always gives the same error:
Dec 13 21:54:43 piserver ovpn-server[428]: Authenticate/Decrypt packet error: packet HMAC authentication failed
Dec 13 21:54:43 piserver ovpn-server[428]: TLS Error: incoming packet authentication failed from [AF_INET]<IP_ADDRESS>:1024

Console output of pivpn debug
  ::: Generating Debug Output
:::                                     :::
::              PiVPN Debug              ::
:::                                     :::
::      Latest Commit                    ::
:::                                     :::
commit 95f78aa861761bfe9faa6e34e4b7965266e48ef3
Merge: 375faa6 0b4464b
Author: redfast00<EMAIL_ADDRESS>Date:   Sat Oct 20 16:13:34 2018 +0100

    Merge pull request #632 from pivpn/test

    Merge test branch
:::                                     :::
::      Recursive list of files in       ::
::      /etc/openvpn/easy-rsa/pki        ::
:::                                     :::
/etc/openvpn/easy-rsa/pki/:
ca.crt
crl.pem
Default.txt
dh2048.pem
index.txt
index.txt.attr
index.txt.attr.old
index.txt.old
issued
<list of ovpns>

/etc/openvpn/easy-rsa/pki/issued:
<list of certs>

/etc/openvpn/easy-rsa/pki/private:
<list of keys>
:::                                     :::
::      Output of /etc/pivpn/*           ::
:::                                     :::
:: START /etc/pivpn/DET_PLATFORM ::
Raspbian
:: END /etc/pivpn/DET_PLATFORM ::
:: START /etc/pivpn/INSTALL_PORT ::
1194
:: END /etc/pivpn/INSTALL_PORT ::
:: START /etc/pivpn/INSTALL_PROTO ::
udp
:: END /etc/pivpn/INSTALL_PROTO ::
:: START /etc/pivpn/INSTALL_USER ::
pi
:: END /etc/pivpn/INSTALL_USER ::
:: START /etc/pivpn/NO_UFW ::
1
:: END /etc/pivpn/NO_UFW ::
:: START /etc/pivpn/pivpnINTERFACE ::
eth1
:: END /etc/pivpn/pivpnINTERFACE ::
:: START /etc/pivpn/setupVars.conf ::
pivpnUser=pi
UNATTUPG=unattended-upgrades
pivpnInterface=eth1
IPv4dns=<IP_ADDRESS>
IPv4addr=<IP_ADDRESS>
IPv4gw=<IP_ADDRESS>
pivpnProto=udp
PORT=1194
ENCRYPT=256
APPLY_TWO_POINT_FOUR=true
DOWNLOAD_DH_PARAM=false
PUBLICDNS=<public address>
OVPNDNS1=<IP_ADDRESS>
OVPNDNS2=<IP_ADDRESS>
:: END /etc/pivpn/setupVars.conf ::
:: START /etc/pivpn/setupVars.conf.update.bak ::
pivpnUser=pi
UNATTUPG=unattended-upgrades
pivpnInterface=eth1
IPv4dns=<IP_ADDRESS>
IPv4addr=<IP_ADDRESS>
IPv4gw=<IP_ADDRESS>
pivpnProto=udp
PORT=1194
ENCRYPT=256
APPLY_TWO_POINT_FOUR=true
DOWNLOAD_DH_PARAM=false
PUBLICDNS=
OVPNDNS1=<IP_ADDRESS>
OVPNDNS2=<IP_ADDRESS>
:: END /etc/pivpn/setupVars.conf.update.bak ::
:: START /etc/pivpn/TWO_POINT_FOUR ::
:: END /etc/pivpn/TWO_POINT_FOUR ::
:::                                     :::
:: /etc/openvpn/easy-rsa/pki/Default.txt ::
:::                                     :::
client
dev tun
proto udp
remote <publicip> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
key-direction 1
remote-cert-tls server
tls-version-min 1.2
verify-x509-name server_f25KhqmvUDxKqemN name
cipher AES-256-CBC
auth SHA256
comp-lzo
verb 3
:::                                     :::
::      Debug Output Complete            ::
:::                                     :::
:::
::: Debug output completed above.
::: Copy saved to /tmp/debug.txt
:::

Console Output of `pvpn add'
pi@piserver:~ $ pivpn add nopass
Enter a Name for the Client:  test
spawn ./easyrsa build-client-full test nopass

Note: using Easy-RSA configuration from: ./vars
Extra arguments given.
rand: Use -help for summary.
Generating a RSA private key
....................+++++
..........+++++
writing new private key to '/etc/openvpn/easy-rsa/pki/private/test.key.qpsiuPtOWw'
-----
Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :ASN.1 12:'test'
Certificate is to be certified until Dec 10 21:57:38 2028 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated
Client's cert found: test.crt
Client's Private Key found: test.key
CA public Key found: ca.crt
tls-auth Private Key found: ta.key

========================================================
Done! test.ovpn successfully created!
test.ovpn was copied to:
  /home/pi/ovpns
for easy transfer. Please use this profile only on one
device and create additional profiles for other devices.
========================================================

Check the content of the file /etc/openvpn/easy-rsa/pki/ta.key against the content of the text between  and  in a new and old .ovpn file. Do they differ? Do not post the content here, just compare. Instead, post the output of grep ta.key /etc/openvpn/server.conf.

I'm trying to under what changed in the process, I thought tls-auth key was different but it's fine.
Can you post the output of /etc/openvpn/server.conf, /etc/openvpn/easy-rsa/pki/Default.txt and the settings in the new and old ovpn file (lines before <ca> tag). Censor the public ip in the last two outputs f you want.

Ok so, actually you have <tls-crypt> inside NEW ovpns and <tls-auth> inside OLD ovpns. From your first answer I though you had <tls-auth> on both. Fix those new clients by changing tls-crypt to tls-auth (both opening and closing tag). Fix future clients by running sudo rm /etc/pivpn/TWO_POINT_FOUR

Awesome, that fixed it. Thanks!


I was wondering if there was a way to extract objects from the scene individually, thank you very much

I was wondering if there was a way to extract objects from the scene individually, thank you very much

You can use NVIDIA USD library  to parse the scenes in USD format.

Hey, thank you for your interest. And I think , You can manually extract using this tool (USD Composer). Or use python script to implement it through this library


New file name

Type: Bug
Right click on folder
Select "New File"
I start typing but my input is entered in the previous focused app
It appears the focus changes after you select "New File"
VS Code version: Code 1.77.3 (704ed70d4fd1c6bd6342c436f1ede30d1cff4710, 2023-04-12T09:19:37.325Z)
OS version: Darwin x64 22.3.0
Modes:
Sandboxed: No

System Info

Item
Value

CPUs
Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz (16 x 2300)

GPU Status
2d_canvas: enabledcanvas_oop_rasterization: disabled_offdirect_rendering_display_compositor: disabled_off_okgpu_compositing: enabledmetal: disabled_offmultiple_raster_threads: enabled_onopengl: enabled_onrasterization: enabledraw_draw: disabled_off_okskia_renderer: enabled_onvideo_decode: enabledvideo_encode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabledwebgpu: disabled_off

Load (avg)
3, 3, 3

Memory (System)
16.00GB (2.21GB free)

Process Argv
. --crash-reporter-id 497a6349-ae0d-41c5-9c13-f1f334adf1b2

Screen Reader
no

VM
0%

Extensions (17)

Extension
Author (truncated)
Version

better-comments
aar
3.0.2

vscode-eslint
dba
2.4.0

gitlens
eam
13.5.0

prettier-vscode
esb
9.12.0

copilot
Git
1.84.51

zentabs
hit
0.0.7

vue
jcb
0.1.5

remove-unused-imports
kus
1.2.3

vscode-scss
mrm
0.10.0

live-server
ms-
0.4.7

vetur
oct
0.37.3

vscode-css-peek
pra
4.2.0

ruby
reb
0.28.1

sass-indented
syl
1.8.26

sort-lines
Tyr
1.9.1

simple-ruby-erb
vor
0.2.1

vscode-ruby
win
0.28.0

A/B Experiments
vsliv368cf:30146710
vsreu685:30147344
python383cf:30185419
vspor879:30202332
vspor708:30202333
vspor363:30204092
vslsvsres303:30308271
vserr242cf:30382550
pythontb:30283811
vsjup518:30340749
pythonptprofiler:30281270
vshan820:30294714
vstes263:30335439
vscoreces:30445986
pythondataviewer:30285071
vscod805:30301674
binariesv615:30325510
bridge0708:30335490
bridge0723:30353136
cmake_vspar411:30581797
vsaa593cf:30376535
pythonvs932:30410667
cppdebug:30492333
vsclangdc:30486549
c4g48928:30535728
dsvsc012cf:30540253
pynewext54:30695312
azure-dev_surveyone:30548225
vsccc:30610678
nodejswelcome1cf:30587006
3biah626:30602489
pyind779:30671433
89544117:30613380
pythonsymbol12:30671437
vsccsb:30705552
azdwalk:30721579
pythonms35:30701012
pythonfmttextcf:30716743

/gifPlease

Thanks for reporting this issue! Unfortunately, it's hard for us to understand what issue you're seeing. Please help us out by providing a screen recording showing exactly what isn't working as expected. While we can work with most standard formats, .gif files are preferred as they are displayed inline on GitHub. You may find https://gifcap.dev helpful as a browser-based gif recording tool.
If the issue depends on keyboard input, you can help us by enabling screencast mode for the recording (Developer: Toggle Screencast Mode in the command palette). Lastly, please attach this file via the GitHub web interface as emailed responses will strip files out from the issue.
Happy coding!

https://user-images.githubusercontent.com/125695260/236131864-e48cdfb5-1c30-4a9e-a9a7-570e6e4ec2ae.mov

\duplicate https://github.com/microsoft/vscode/issues/143968


Invali Action Object

https://github.com/yiisoft/yii2/blob/22614a5b1fde5902137e3af6a99a7f7ada6b62d4/framework/filters/auth/CompositeAuth.php#L73
This is invalid when the owner of filter behaviors is module; The error is
Getting unknown property: frontend\modules\moduleName\Module::action
please rollback to code base on doc https://www.yiiframework.com/doc/api/2.0/yii-filters-auth-compositeauth#authenticate()-detail
if (
$this->owner instanceof Controller
&& (!isset($this->owner->action) || !$auth->isActive($this->owner->action))
) {
continue;
}

Maybe you can refer to #19581

Thankyou

Duplicate of #19581


MCO Home MH-S412 switch max associatios

Checklist

[ ]  I am not using Home Assistant. Or: a developer has told me to come here.
[ ] I have checked the troubleshooting section and my problem is not described there.
[ ] I have read the changelog and my problem is not mentioned there.

Deploy method
Docker
Z-Wave JS UI version
8.6.2
ZwaveJS version
10.3.1
Describe the bug
Node Group functions doesnt allow to add more than 3 nodes (indeed it's possible if they are not refreshed)  while the max nodes for group 1 and 2 is 5.
https://devices.zwave-js.io/?jumpTo=0x015f:0x4121:0x1302:0.0
To Reproduce
try to add more then 3 nodes to group 1 or 2
Expected behavior
to have max 5 nodes at group 1 or 2
Additional context
it's possible to add more than 3 if group nodes are not displayed (before refreshing them)

Could you go to node debug tab and paste here the content please?

I tried to reproduce your bug without success locally, I have a feel that for some reason you may have an outdated configuration for that device, try to re-interview it please

Still the same after re-interview. How to update config files?

@sebekhtc that max associations comes from what I receive from zwave-js so it's not something I can fix on my side.
If you are running the very last version it should be fixed with a re-interview.
@blhoward2 any clue on what could be wrong here? has that config file been updated recently?

I have the latest versions of zwavejsui and zwavejs (verified latest versions on github). I also found that on github the config file max node is set to correctly to 5. I wonder what is really in the docker.

I did reinterview on node 150, below example of the group 1 maximum # of nodes I found in the log (part of the log file attached):
2022-12-29T13:19:57.946Z DRIVER « [Node 150] [REQ] [ApplicationCommand]
└─[MultiChannelAssociationCCReport]
group id:           1
maximum # of nodes: 3
node ids:           1
endpoints:          166:2, 174:2, 73:2
2022-12-29T13:19:57.952Z CNTRLR « [Node 150] received information for multi channel association group #1:
maximum # of nodes:           3"
zwave-js-ui-store.zip

Ok so that's what is reported by the node, no issue on zui...


AM / PM label in 24 H mode

Hello Jonathas. Thank you for the new clockface. I have installed it and it works. But I have a question about the display of the time in 24-hour format: Why is there still the "A" or the "P"? You don't need that. And then it would be better and visually nicer if the 24-hour format didn't say 8:24 but 08:24. Otherwise everything is great as always and maybe with a new release my wish for the display OFF night switch or an ABC control will come true.
best regards
Burkhard

Fixed in the latest version
https://github.com/jnthas/clockwise/releases/tag/v1.2.1
Closing issue


Add support for GHE

By providing github-api-url we can enable support for Github Enterprise.
In some cases it might be available for octokit automatically but it's
safer to provide an override.

Not sure if there's anything more I should be fixing here.

Sorry for my delayed reply :bow:
Your implementation looks good to me 👍 , but I have stacked to determine the input naming github-api-url or others.
We don't currently use REST API here, so I would like to clarify that the input is used for graphql.
A fundamental problem is that I don't have an environment to test GitHub Enterprise Edition...

I've rebased the changes on latest main (things are a bit simpler now). I'm still interested in getting this merged but if you don't have access to GHE and don't want to merge this support without it I'd prefer if you just rejected the PR so I can make other arrangements.

Sorry for the delay in pending the state for a long time.
And thank you for keeping the interest and updating the codebase. :pray:
I have not forgotten this PR, but I could not determine any action or direction regarding it.
Basically, if I cannot maintain the feature, I would exclude it from my personal project.
However, this suggestion is valuable and similar URLs are found in several repositories.
Also, this does not include a huge difference.
So I'm planning to merge this PR in this or next month.
Please give me some days to take review current code again.

Sorry for the delay in pending the state for a long time. And thank you for keeping the interest and updating the codebase. 🙏

You are an open-source maintainer, providing tools/code for others to reuse for free.  You have no obligation to reply to anyone but I appreciate the gesture :-)

I have not forgotten this PR, but I could not determine any action or direction regarding it.
Basically, if I cannot maintain the feature, I would exclude it from my personal project.

That is absolutely a fair point and would be absolutely acceptable reason to reject my PR.

However, this suggestion is valuable and similar URLs are found in several repositories. Also, this does not include a huge difference.

Yeah, I think with your refactoring the changes became much simpler

So I'm planning to merge this PR in this or next month. Please give me some days to take review current code again.

Great, no rush. For what it's worth I've been using this version on our GH enterprise instance for a while without issues. New version fixed a few issues we had with the matrix jobs etc.

Released in https://github.com/kachick/wait-other-jobs/releases/tag/v3.5.0 🎉


Gradle Sync Failed

I cannot build the demo app in Android Studio.
Unable to find method 'org.gradle.api.file.ProjectLayout.fileProperty(Lorg/gradle/api/provider/Provider;)Lorg/gradle/api/file/RegularFileProperty;'.
Possible causes for this unexpected error include:
Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
Re-download dependencies and sync project (requires network)
The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
Stop Gradle build processes (requires restart)
Your project may be using a third-party plugin which is not compatible with the other plugins in the project or the version of Gradle requested by the project.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

Try to update Android Gradle plugin to 3.3.1 or higher.


sky_tool returns an exit code of 0 for some failures

When I run sky_tool start for a sky app w/o a device of any kind connected, I see:
error: device not found
WARNING: No running simulators found

which is right, but the script exits with an exit code of 0. It would be great to return a non-zero result; I use this code in atom to know when a run succeeded or not.

@iansf

https://github.com/domokit/sky_engine/pull/1054 should fix this
On Thu, Sep 3, 2015 at 4:26 PM, Devon Carew<EMAIL_ADDRESS>wrote:

@iansf https://github.com/iansf
—
Reply to this email directly or view it on GitHub
https://github.com/domokit/sky_engine/issues/1052#issuecomment-137600515
.

Great, thanks!


Remove commented out code

Some code that is commented out and will not be used in the future has been removed. Useful explanations have been added as comments where they belong in the non-commented code.

@plaos @olof-j this should be a quick one, but good if I can get a glance at it before merging.


Ammo.JS Release Builds

Ammo.JS release with add_func and the matching wasm builds.
I dont think need to update What's New for the Ammo Update ???

Ping @CedricGuillemet for validation

LGTM


Display the typing analysis progression in the frontend for Pyright runs

It can be long to run Pyright on big codebases so it would be nice to have a way to see the progression

Done in 0.1.0


WIP: Implemented #[bundle(ignore)] and #[bundle(nest)]

Objective
Fixes #5559
Solution
Because the generated method from_components() creates an instance of Self my implementation requires any field type that is marked to be ignored to implement Default.

Migration Guide
In #[derive(Bundle)] structs:
#[bundle] => #[bundle(nest)]

Seems like you hit a weird github bug from pushing a hard reset to main to your branch: https://discord.com/channels/691052431525675048/692572690833473578/1004950265767661699
You might need to re-open this PR.

Thanks! Yeah I created a new one. Is that ok?


Not working (undefined is not an object)

Hello,
I followed your instructions but when I focus on the text input I got an error:
undefined is not an object (evaluating this.refs.scroll)
Thanks

You forgot to add the scroll ref to your scroll component.

actually I did.
But I used a solution found in previous issue and it's working:
`  _scrollToInput ( event, refName ) {
let node = React.findNodeHandle( this.refs[ refName ] );
let extraHeight = 70; // height of your text input
this.refs.scrollView.scrollToFocusedInput( event, node, extraHeight );
}
_scrollBack ( event, refName ) {
let node = React.findNodeHandle( this.refs[ refName ] );
let extraHeight = 0; // height of your text input
this.refs.scrollView.scrollToFocusedInput( event, node, extraHeight );
}`
      <KeyboardAwareScrollView         ref='scrollView'         contentContainerStyle={ styles.container }>         <Image source={ require( '../resources/picto.png' ) } style={ styles.image }/>         <Text style={ styles.title }>           MULTIPASS         </Text>         <TextInput           ref='email'           style={ styles.input }           placeholder="Email"           autoCapitalize="none"           autoCorrect={ false }           onChangeText={ ( email ) => this.setState({ email }) }           onFocus={ ( event ) => this._scrollToInput( event, 'email' ) }           onBlur={ ( event ) => this._scrollBack( event, 'email' )}           returnKeyType={ 'next'}           clearButtonMode={ 'while-editing' }           onSubmitEditing={ ( event ) => {              this.refs.password.focus();            }}         />
Thanks for your package btw!

Cool!
Let me know if you need something else 👍


Make NativeHostIntegration p/invokes blittable

Switch to blittable p/invokes for native host integration - avoids IL stub generation at run time
Remove allocation of GCHandle for NativeHostApplication

Stick with the singleton method currently being used

@kshyju PTAL
Pull request checklist

[x] My changes do not require documentation changes

[ ] Otherwise: Documentation issue linked to PR

[x] My changes should not be added to the release notes for the next release

[ ] Otherwise: I've added my notes to release_notes.md

[x] My changes do not need to be backported to a previous version

[ ] Otherwise: Backport tracked by issue/PR #issue_or_pr

[ ] I have added all required tests (Unit tests, E2E tests)

Don't merge yet.


[SPARK-32474][SQL][FOLLOWUP] NullAwareAntiJoin multi-column support

What changes were proposed in this pull request?
This is a follow up issue of SPARK-32290.
In SPARK-32290, We only support Single Column NAAJ because of the complexity of Multi Column support, See. http://www.vldb.org/pvldb/vol2/vldb09-423.pdf Section 6.
In this PR, proposed a trade-off that can also support multi column to perform hash lookup in buildSide, but required buildSide with extra duplicate data, the duplication would be 2^numKeys - 1, for example, if we are to support NAAJ with 3 column join key, the buildSide would be expanded into (2^3 - 1) times, 7X.
For example, if there is a UnsafeRow key (1,2,3)
In NullAware Mode, it should be expanded into 7 keys with extra C(3,1), C(3,2) combinations, within the combinations, we duplicated these record with null padding as following.
Original record
(1,2,3)
Extra record to be appended into HashedRelation
(null, 2, 3) (1, null, 3) (1, 2, null)
(null, null, 3) (null, 2, null) (1, null, null))
with the expanded data we can extract a common pattern for both single and multi column. allNull refer to a unsafeRow which has all null columns.

buildSide is empty input => return all rows
allNullColumnKey Exists In buildSide input => reject all rows
if streamedSideRow.allNull is true => drop the row
if streamedSideRow.allNull is false & findMatch in NullAwareHashedRelation => drop the row
if streamedSideRow.allNull is false & notFindMatch in NullAwareHashedRelation => return the row

Why are the changes needed?
Considered that NAAJ in real production usage, the numKeys should not be that big, normally 1~3 keys, I think it's still worth to do such trade-off.
Does this PR introduce any user-facing change?
No.
How was this patch tested?

SQLQueryTestSuite with NOT IN keyword SQL, add CONFIG_DIM with spark.sql.optimizeNullAwareAntiJoin on and off
added case in org.apache.spark.sql.JoinSuite.
added case in org.apache.spark.sql.SubquerySuite.
added case in org.apache.spark.sql.execution.joins.HashedRelationSuite to make sure the data expand logical.
config combination against e2e test (both single and multi column cases) with following

Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "false",
  "spark.sql.codegen.wholeStage" -> "false"
),
Map(
  "sspark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "false",
  "spark.sql.codegen.wholeStage" -> "true"
),
Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "true",
  "spark.sql.codegen.wholeStage" -> "false"
),
Map(
  "spark.sql.optimizeNullAwareAntiJoin" -> "true",
  "spark.sql.adaptive.enabled" -> "true",
  "spark.sql.codegen.wholeStage" -> "true"
)

@cloud-fan @maropu @agrawaldevesh
Could you guys have a look at this follow up, See if is it worth to do such trade-off to support multi-column NAAJ.

can you create a new jira ticket? It's a major feature that shouldn't be treated as a followup.

can you create a new jira ticket? It's a major feature that shouldn't be treated as a followup.

OK, I will re-create JIRA Issue and PR.

PS. Need recreate JIRA and PR, close this one in advanced.


Check for existence of appropriate EXOCTK_DATA directories when necessary

Currently, the EXOCTK_DATA environment variable is checked upon import of exoctk and errors are thrown if the variable doesn't exist or doesn't contain the appropriate sub-directories (see utils.py).
This is not ideal for users and/or dependent projects (such as ExoMAST) who only care about invoking a small part of the exoctk code (for example, ExoMAST only uses exoctk.contam_visibility.visibilityPA.using_gtvt).  Regardless of what code is being used, they have to deal with all of these sub-directories.
The solution would be to go into the code and only insist that the user have the appropriate EXOCTK_DATA directories when necessary.

Tagging @falkben so that he can keep track of this issue for ExoMAST

Hi folks (tagging @falkben) --- this is in our plans for v.1.2 of ExoCTK (i.e., the release after the next release). We'll get it sorted out, but in the meantime, we advise users to install/download the whole dataset before using ExoCTK. We understand this is not ideal, but we'll solve it eventually in the next few months (we have other higher priority issues with which we need to deal with first!).
N.

For reference, from discussion today: https://github.com/ExoCTK/exoctk/blob/master/exoctk/contam_visibility/field_simulator.py

Completed via #488


dd: fix "unused imports" warning in tests

When running cargo test --features "dd" --no-default-features, a unused imports: 'TESTS_BINARY', 'UCommand' warning is shown because of a mismatch between the cfg-attributes of those imports and the function where they are used. This PR fixes this issue.

it has been a while :)


Issues running dotnet core version

Hello,
I am testing the NetstandardModuleSample project targeted at the .net standard framework 2.0. When running from inside of VS 2017, it will launch and act normal. When I switch to command line, I begin to have issues.
When running using: "dotnet gateway.dll" I get following issues:
-A fatal error was encountered. The library 'hostpolicy.dll' required to execute the application was not found. I can resolve this by adding the file: gateway.runtimeconfig.json with the data:
{
"runtimeOptions": {
"framework": {
"name": "Microsoft.NETCore.App",
"version": "2.0.0"
}
}
}
After this is fixed, I get this issue:
-Unhandled Exception: System.BadImageFormatException: Could not load file or assembly iot-edge-samples\dotnetcore\nuget_sample\src\NetstandardModuleSample\bin\Debug\netstandard1.3\gateway.dll'. The module was expected to contain an assembly manifest.
Any help is much appreciated. Thanks!

Duplicate of Issue 384 in iot-edge repo. Following up there...


Remove version: igoogolx.lux version 0.3.0+2

[x] Have you signed the Contributor License Agreement?
[x] Have you checked that there aren't other open pull requests for the same manifest update/change?
[x] This PR only modifies one (1) manifest
[x] Have you validated your manifest locally with winget validate --manifest <path>?

[x] Does your manifest conform to the 1.5 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Microsoft Reviewers: Open in CodeFlow

igoogolx.lux prVersion 0.3.0+2 is less than ManifestVersion 0.4.2


References are always welcome

It would be really nice if you put some references on your project ;) like the name of the project, the description and the file shells.txt, that are the same from this project
github.com/mthbernardes/rsg

This has been kibed, shame on you


Add Dashing to the releases page.

The logo is still to-be-announced and let's not tempt fate by putting
the date on ahead of time.
This is what it looks like rendered via sphinx locally.  I'm not sure if we have an official "pre-release" highlight color.

let's not tempt fate by putting the date on ahead of time.

:rofl: The date is mentioned in the title of the Dashing page. Also your row mentions "May 2019" but doesn't want to commit to a specific data? The planned date is the 31st, so how much can it slip within May...

Also the page already mentions Dashing in the bottom table (also with the date). Not sure if it makes sense to also add it to the top table for the remaining days.

Also the page already mentions Dashing in the bottom table (also with the date

And here I've been typing in the Release-Dashing-Diademata url all this time like a chump because I didn't think to scroll down.
Let me turn this PR into the one we'll wait to merge for the Dashing release then.

Ready for review.


2 Different Shops with Same App in Same Browser leads to Session Sharing Issues

Expected Behavior
A user should be able to have the same app installed on 2 different shops and manage the app for both shops without the session data clashing or causing conflicts.
Current Behavior
Currently all shops that have the same app open in the same browser can end up sharing the same session which can cause things like Shop A overwriting Shop B information.
I have also experienced shops getting redirected to each others myshopify.com domains while testing apps in 2 different shops.
Failure Information
The issue exhibits in an edge case, and may be causing other issues that seem to be unreproducible.
The problem exists because sessions are loaded on a domain basis, and when loading the same app from 2 different stores in the same browser can cause the stores to overwrite each others cookie because they are both actually running on the same domain (the apps domain loaded in the shopify admin iframe).
Steps to Reproduce
Make an app that has a get route as well as a post route.

Launch the app in Shop A and Shop B and dump ShopifyApp::shop()->shopify_domain on the get() route. You should see the correct details because get() routes load the store from the get() variables request()->requestUri values (shop domain, HMAC)
In chrome developer tools check the XXX_session value in each stores cookies for the app domain. You will see the value is the same for both stores.
Submit a post to any post() route that dumps ShopifyApp::shop()->shopify_domain for both shops. You will see that both shops will have the same ShopifyApp::shop()->shopify_domain. You see the incorrect details for 1 store because post() routes load the store from session, and both shops share the same domain (and therefore session) for the app.

Remediation Advice
The only place I see the correct myshopify.com domain coming through is in the HTTP REFERER header available on affected POST requests.
This header cannot be blindly trusted as it is spoofable but the referer also has the HMAC available, so it would be safe to use the domain in the referer header only after the HMAC has been verified. (i.e. validating and loading via the referer in the same way the normal get requests get checked and loaded).
If the referer domain is verified and differs from the session domain it should be safe to prioritise the shop domain in the referer header over the one available in session on post requests.
Context
Requires that 2 shops have the same app installed, and that both shops are being managed in the same browser.

Package Version: v8.0
Laravel Version: v5.8
PHP Version: v7.3
Using a toolset (Docker, Laradock, Vagrant, etc.): None

Hi @darrynten, thanks for this report and you are right, there is a issue as long you click inside the app between 2 different shops. At the moment i think the only (easy) way to get this working is to set a shop=your-shop.myshopify.com param in each request you make inside your app. The problem is, that all shops/app-installations are using the same domain/session.

This would mean you'd have to send the shop domain along with each post request.
If this isn't validated somehow then anyone can send any shop domain and make changes to other peoples app configs.
Your suggestion would mean that each person using this package would have to do this in order to avoid the issue, which places the responsibility on each developer, instead of having the package take responsibility. This issue must be handled by the package as this is where the problem lies.
The only reliable way I've managed to check the true store domain on post requests is to process and verify the details in the HTTP_REFERER header (i.e. check the domain and the HMAC) and then prioritise that domain above others.

@StefanNeuser your solution is spoofable.

@darrynten , you are right, this isnt a solution because its spoofable.

@StefanNeuser the proposed JWT solution would result in the same problem because even though the JWTs will be different they will all load the same session.

than the only way is to generate a token and sent this within the header instead of using the shopify_domain which is easy to figure out, what do you think?

@darrynten its not spoofable because of
    /**
     * Checks if the package has everything it needs in session.
     *
     * @return bool
     */
    public function isValid()
    {
        // No token set or domain in session?
        $result = !empty($this->getToken(true))
            && $this->getDomain() !== null
            && $this->getDomain() == $this->shop->shopify_domain;

        return $result;
    }

My HTTP_REFERER header on all post requests I've tested already have the real domain as well as the HMAC

Ah I believe this falls into the issues present in v8 with auth stuff, which I think was solved with the last release a couple days ago.
I have installed an app on three stores, visiting each store, I can change settings/info fine as the session updates.

@ohmybrew no this issue wasnt fixed with the latest release. if you click inside the app between the different stores your backend will use the same (latest) session for three apps.

@osiset this has become an issue again


Remove this repo?

Has not been used since two years

We now use it to collect renewable DH system components


Problem with scully when building project with --base-href flag

🐞 Bug report
After building my angular app with --base-href flag, scully content is not rendered in the browser.
Description
🔬 Minimal Reproduction
ng build --prod --base-href /project-name/ && npm run scully
scully content not found when navigating to the route in question.
This only happens when specifying --base-href which I obviously need to deploy the static site.
💻Your Environment
Angular Version:

Angular CLI: 9.0.6
Node: 12.13.0
OS: win32 x64

Angular: 9.0.6
... animations, cli, common, compiler, compiler-cli, core, forms
... language-service, platform-browser, platform-browser-dynamic
... router
Ivy Workspace: Yes

Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.900.6
@angular-devkit/build-angular     0.900.6
@angular-devkit/build-optimizer   0.900.6
@angular-devkit/build-webpack     0.900.6
@angular-devkit/core              9.0.6
@angular-devkit/schematics        9.0.6
@ngtools/webpack                  9.0.6
@schematics/angular               9.0.6
@schematics/update                0.900.6
rxjs                              6.5.4
typescript                        3.7.5
webpack                           4.41.2

Scully Version:

"@scullyio/init": "1.0.1",
"@scullyio/ng-lib": "1.0.0",
"@scullyio/scully": "1.0.2",

🔥 Exception or Error

Scully could not find the <.scully-content>. tag in this page.
This error can happen when you forgot to put the mandatory "scully-content" in the component that is rendering this page?

Or when the tag is not shown on page load. Did you put it inside an `*ngIf`?

Duplicate of #699
This is a direct result of what base-href does.
If you need a base-href, use our base-href plugin to set it.
You can use the angular CLI for this, but then you need to move your distribution files into the correct folder structure before Scully can render it.

Thank you @SanderElias . It worked with the plugin 😃


Fix compilation problem on MacOS

Renamed aws/core/platform/Time.h to aws/core/platform/AWSTime.h so the SDK compiles on case insensitive MacOS which has time.h as a system header.

We compile on MacOS consistently. Not sure that this is a problem.
I'll reopen this PR if you add further explanation.

I encountered this issue myself when integrating AWS GameLift into a UE4 project on Win64. It manifests itself as a the following compiler error:
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(10): error C2039: 'clock_t': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(10): error C2873: 'clock_t': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2039: 'asctime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2873: 'asctime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2039: 'clock': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2873: 'clock': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2039: 'ctime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(12): error C2873: 'ctime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2039: 'difftime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2873: 'difftime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2039: 'gmtime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2873: 'gmtime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2039: 'localtime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(13): error C2873: 'localtime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2039: 'mktime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2873: 'mktime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2039: 'strftime': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2873: 'strftime': symbol cannot be used in a using-declaration
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2039: 'time': is not a member of '`global namespace''
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.13.26128\INCLUDE\ctime(14): error C2873: 'time': symbol cannot be used in a using-declaration

As  includes "time.h" on case-insensitive platforms this can resolve to the local Time.h from the SDK.
Applying this PR locally fixes this issue.
(An explanation is provided here: https://stackoverflow.com/questions/23907008/compilation-error-error-c2039-clock-t-is-not-a-member-of-global-namespace)

Verified this behavior.

aws/core/platform/Time.h includes , which includes <time.h>. There must be some header searching mechanism on your project that treat aws/core/platform/Time.h as the target time.h needed by ctime. So, we are not going to rename the file name.


Consider making DAObjects for unhandled attributes

If someone uploads a DOCX file with a field like {{ something.attribute }} , we know that the user expects to be able to add attributes to the something variable. We can easily make something into a DAObject for the user.
The trickiest part will be ensuring that we don't overwrite any objects that are already captured as ALPeopleLists.

A simple extension of this: we can offer a few object types as choices for the user. I think DAObject would be the most common need other than ALPeopleList. But maybe we could let people make ALIndividual objects this way.


Checking request query string?

Is there a way to check the query string of a request (particularly for GET requests)? I want to make sure a transformation in my request wrapper actually occurs when I make the request.
If this isn't yet possible, here's the API I would expect:
$this->http->mock
    ->when()
        ->methodIs("GET")
        ->pathIs("/my/test/path")
        ->queryIs("param1=test1&param2=test2")
    ->then()->body("{}")->statusCode(200)
    ->end();

or
$this->http->mock
    ->when()
        ->methodIs("GET")
        ->pathIs("/my/test/path")
        ->queryIs(array("param1" => "test1", "param2" => "test2"))
    ->then()->body("{}")->statusCode(200)
    ->end();

PS: Thank you for making this library. It's nice to be able to mock HTTP requests in my test suite.

Generally you can do anything by passing a matching callback. See this example:
        $this->http->mock
            ->when()
                ->callback(
                    function (Request $request) {
                        return $request->query->has('key1');
                    }
                )
                ->methodIs('GET')
            ->then()
                ->body('query string')
            ->end();
        $this->http->setUp();

But you are right, we should have a convenient API to do so. Let me think about it.

Awesome! Thank you - I missed the callback functionality.

Was hard to find without reading the code so far. I finally got around adding some documentation. Have a look here, maybe you can find some more gems: https://github.com/InterNations/http-mock/blob/master/doc/index.md

Have a look at #31! Feedback welcome

Merged #31


Allow extending stack handlers but preserve oauth middlewares

Currently, Oauth2Client constructor allows to completely override the default stack by specifying own handler but it won't add oauth-specific middlewares to passed handler.
Real life scenario I have is I need to add some header to all requests against some API. I need to do it both for main handler and for token_handler.
For token_handler, it's easy to create my own and pass as token_handler to constructor params of Oauth2Client, as the are no oauth specific middlewares added. I lose nothing. If I do the same to the main handler, I won't get oauth middlewares attached.
To me, it feels ill advised. When handler is specified, it'd be much better to take the handler and append oauth handlers. Of course, I can extend Oauth2Client and use protected returnHandlers to modify it, but it defeats the purpose of having configurable handler.
Please consider either:

Changing the behaviour when handler option is specified (append oauth handlers instead of ignoring).
Making returnHandlers public so that one can take oauth handlers stack and inject own middlewares.

EDIT: I can contribute with that but need your opinion.

@mirfilip Looking at it now, I can't see any reason why we shouldn't make returnhandlers a public method so you can extend the class and add handlers

The function is protected, so with extending the class the 'returnHandlers' function can already be used. But if you want to make a wrapper around Oauth2Client, then a public function would be perfect!

@ametad Of course, but the feature that allows passing custom handler with token_handler config option is useless if you don't append oauth2-specific middlewares to it. Default should either be to append middlewares to token_handler or just allow people to get oauth2 middlewares so that they can be set to custom token_handler.
Consider a difference between:
$myCustomTokenHandler = \GuzzleHttp\HandlerStack::create();
$myCustomTokenHandler->push(); // add my custom middleware - e.g. to log token calls or to persist them

$client = new \Frankkessler\Guzzle\Oauth2\Oauth2Client(
                [
                    'auth' => 'oauth2',
                    'token_handler' => $myCustomTokenHandler,
                ]
            );

and
$myCustomTokenHandler = \Frankkessler\Guzzle\Oauth2\Oauth2Clien::returnHandlers(); // it contains all the oauth2 stuff now!
$myCustomTokenHandler->push(); // add my custom middleware - e.g. to log token calls or to persist them

$client = new \Frankkessler\Guzzle\Oauth2\Oauth2Client(
                [
                    'auth' => 'oauth2',
                    'token_handler' => $myCustomTokenHandler,
                ]
            );

Sure, you can extend the client but it's a pity to have the configuration option and still have go with inheritance.


M1 Rosetta build fails Python 3.9.10

I am using MacOS Monterey with M1 chip. I've opened a rosetta terminal by switching architectures using the following command:
$ arch -x86_64 /bin/zsh

Then, I try to install python:

$ asdf install python 3.9.10

python-build --patch 3.9.10 /Users/errc/.asdf/installs/python/3.9.10
with patch file from: https://github.com/python/cpython/commit/8ea6353.patch?full_index=1
python-build: use<EMAIL_ADDRESS>from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
patching file Misc/NEWS.d/next/macOS/2020-06-24-13-51-57.bpo-41100.mcHdc5.rst
patching file configure
Hunk #1 FAILED at 3426.
1 out of 1 hunk FAILED -- saving rejects to file configure.rej
patching file configure.ac
Hunk #1 FAILED at 510.
1 out of 1 hunk FAILED -- saving rejects to file configure.ac.rej

BUILD FAILED (OS X 12.1 using python-build 2.2.4-1-1-g7ea04089)

Inspect or clean up the working tree at /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097
Results logged to /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097.log

Last 10 log lines:
/var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097 /Users/Shared/v/asdf/arch
warning: xz not found; consider installing `xz` package
/var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097/Python-3.9.10 /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097 /Users/Shared/v/asdf/arch

I even try with the patch:
$ export ASDF_PYTHON_PATCH_URL="https://github.com/python/cpython/commit/8ea6353.patch?full_index=1"
$ asdf install python 3.9.10

# Same error

Any idea why this is failing? Install/build works under the default arm64 architecture

Maybe missing a package dependency.
warning: xz not found; consider installing `xz` package

Make sure you have all dependencies installed
https://github.com/pyenv/pyenv/wiki#suggested-build-environment

I am using MacOS Monterey with M1 chip. I've opened a rosetta terminal by switching architectures using the following command:
$ arch -x86_64 /bin/zsh

Then, I try to install python:

$ asdf install python 3.9.10

python-build --patch 3.9.10 /Users/errc/.asdf/installs/python/3.9.10
with patch file from: https://github.com/python/cpython/commit/8ea6353.patch?full_index=1
python-build: use<EMAIL_ADDRESS>from homebrew
python-build: use readline from homebrew
Downloading Python-3.9.10.tar.xz...
-> https://www.python.org/ftp/python/3.9.10/Python-3.9.10.tar.xz
Installing Python-3.9.10...
patching file Misc/NEWS.d/next/macOS/2020-06-24-13-51-57.bpo-41100.mcHdc5.rst
patching file configure
Hunk #1 FAILED at 3426.
1 out of 1 hunk FAILED -- saving rejects to file configure.rej
patching file configure.ac
Hunk #1 FAILED at 510.
1 out of 1 hunk FAILED -- saving rejects to file configure.ac.rej

BUILD FAILED (OS X 12.1 using python-build 2.2.4-1-1-g7ea04089)

Inspect or clean up the working tree at /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097
Results logged to /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097.log

Last 10 log lines:
/var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097 /Users/Shared/v/asdf/arch
warning: xz not found; consider installing `xz` package
/var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097/Python-3.9.10 /var/folders/sz/pgt1clhs4sl3zw_qtl_3jjbh0000gn/T/python-build.20220202150238.51097 /Users/Shared/v/asdf/arch

I even try with the patch:
$ export ASDF_PYTHON_PATCH_URL="https://github.com/python/cpython/commit/8ea6353.patch?full_index=1"
$ asdf install python 3.9.10

# Same error

Any idea why this is failing? Install/build works under the default arm64 architecture

Make sure you have all dependencies installed
https://github.com/pyenv/pyenv/wiki#suggested-build-environment

I used  arch -arm64 pyenv install 2.7.18 to install the failing version.
it may help you with version 3.x as well


README update

Chose to do it this way (instead of one big input) so people who have half installed the requirements in the past can individually choose which libraries / downloads they are missing (which they will gather from compiler error) and install them.

will rechange a few things.


Please add 'Nextcloud-Tasks'

Icon Name
nextcloud-tasks
Icon(s)

Hi, I can't seem to find any page showing this as the real icon. Could you link me to it?

@stathiskef Reminder :)

#475 already added the nextcloud tasks icon. and it can be found here


[DRAFT] OPICS Eval 7 Validation

Fixed recent merge conflicts, but in case there's a need for reruns/any concerns with that, feel free to revert to this commit: b6157c218b1ca419dca6551330e4604f1f11515c

Forgot to add: As with the MESS branch, leaving the OPICS branch open in case there's any need for reruns/concerns with little differences between branches.
Fixed recent merge conflicts, but in case there's any concerns with that with regards to reruns, feel free to revert to this commit: b6157c218b1ca419dca6551330e4604f1f11515c


Ty/nolita object

High level wrapper for the nolita api

Spurious 500 from HDR API. I thought we had that monitored with a webhook...


What happens if Redis is down?

In AWS, the Redis service (Elasticache) has required maintenance windows that typically last 30 minutes. Our operations schedule is based on time on Mars and other factors and, consequently, moves around. It is possible, therefore, that Redis may be in maintenance at the time our Socket.IO server is in use.
Our plan is to minimize the outage by setting up a Redis cluster with an additional read replica (see https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/Replication.Redis.Groups.html#Replication.Redis.Groups.Classic) and add retry logic in our code. With this change, if the primary Redis node is undergoing maintenance, the software will automatically fail over to the read replica.
The question is: Given all the above, what Socket.IO functionality is impacted?
Consider the following use cases:

A client is subscribed and an event needs to be published to the client. I am hoping this will work because Redis does not need to be updated.
A client wants to subscribe. Will this work? Will it work in some kind of degraded mode (e.g., maybe the subscription information is only held in memory)?
A client wants to unsubscribe. What happens in this case?

The Socket.IO Redis adapter only relies on Redis pub/sub mechanism.
So if the connection to Redis is cut, the messages will not be broadcasted anymore.

Regarding your use cases:

A client is subscribed and an event needs to be published to the client

This may unfortunately not work if the connection to Redis is down.

A client wants to subscribe
A client wants to unsubscribe

If by subscribe/unsuscribe you mean join/leave in Socket.IO terms, yes this will work, as they are stored in memory.
Please also see: https://github.com/socketio/socket.io-redis#how-does-it-work-under-the-hood

@darrachequesne thank you for your reply. It was very helpful. This has a few implications. Please correct me if I'm wrong (I'm using your notation):

If Server B crashes due to a fault and is then restarted, its clients will have to re-subscribe. If the client is using the Socker.IO client library, this will happen automatically. But if they are using a different client library, this may not be the case.

In your diagram, if Redis is not available and an event is generated on Server A, Server B will not publish the event to its subscribed clients, but Server A will publish the event to its subscribed clients.

If Redis is set up as a cluster, with one active node and one read-only node, and the active node is not available, the cluster will fail over to the read-only node (this presupposes that we have injected into socket.io-redis a Redis client that is able to handle the failover). The question is whether, in that case, pub/sub will still work. Any idea? (I suppose it's really a Redis question, but maybe you know?

If Server B crashes due to a fault and is then restarted, its clients will have to re-subscribe. If the client is using the Socker.IO client library, this will happen automatically. But if they are using a different client library, this may not be the case.

If by subscribe/unsuscribe you mean join/leave, no you will have to do it yourself. But the client will reconnect though.

In your diagram, if Redis is not available and an event is generated on Server A, Server B will not publish the event to its subscribed clients, but Server A will publish the event to its subscribed clients.

Yes :+1:

If Redis is set up as a cluster, with one active node and one read-only node, and the active node is not available, the cluster will fail over to the read-only node (this presupposes that we have injected into socket.io-redis a Redis client that is able to handle the failover). The question is whether, in that case, pub/sub will still work. Any idea? (I suppose it's really a Redis question, but maybe you know the answer?)

I think the best way is to manually test the failover.


Add packet store

Store packet
Key has req_source, req_time, packet_time

Issue: #247

Codecov Report
Base: 77.98% // Head: 77.63% // Decreases project coverage by -0.35% :warning:

Coverage data is based on head (a4222c6) compared to base (241852f).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #250      +/-   ##
==========================================
- Coverage   77.98%   77.63%   -0.35%
==========================================
  Files          27       27
  Lines        3611     3627      +16
==========================================
  Hits         2816     2816
- Misses        795      811      +16

Impacted Files
Coverage Δ

giganto-client/src/ingest.rs
100.00% <ø> (ø)

src/ingest.rs
77.22% <0.00%> (-3.75%)
:arrow_down:

src/storage.rs
64.91% <0.00%> (-1.16%)
:arrow_down:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.