[$2000] iOS - Profile - Bottom home bar on iOS does not have transparent background

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Login
Go to profile page

Expected Result:
Bottom home bar should have transparent background
Actual Result:
Have white background
Workaround:
unknown
Platform:

Where is this issue occurring?

iOS

Version Number: 1.2.30-0
Reproducible in staging?: y
**Reproducible in production?:**y
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos:

Expensify/Expensify Issue URL:
Issue reported by: @shawnborton
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1669215534845239
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01d769c08d05e2ed49
Upwork Job ID:<PHONE_NUMBER>549524480
Last Price Increase: 2022-12-13

This come from this piece of code:
https://github.com/Expensify/App/blob/0274c4ab700ea483272315c27e3299883356ed30/src/components/ScreenWrapper/BaseScreenWrapper.js#L78-L81
This also happen in every screens that used ScreenWrapper, I tested on Setting, About...
So I think the prop: includePaddingBottom should be false by default.
const defaultProps = {
    style: [],
-    includePaddingBottom: true,
+   includePaddingBottom: false,
    includePaddingTop: true,
    onTransitionEnd: () => {},
    modal: {},
    keyboardAvoidingViewBehavior: 'padding',
};

From this SO: https://stackoverflow.com/c/expensify/questions/14418

[x] The "bug" is actually a bug:
[x] The bug is not a duplicate report of an existing GH (close the GH and add any novel details to the original GH instead):
[x] The bug is reproducible, following the reproduction steps:

[x] If you’re unable to reproduce the bug, add the Needs reproduction label. Comment on the issue outlining the steps you took to try to reproduce the bug, your results and tag the issue reporter and the Applause QA member who created the issue. Ask them to clarify reproduction steps and/or to check the reproduction steps again. Close issue.:
[x] The GH template is filled out as fully as possible -- this means the GH body and title are clear (ie. could an external contributor understand it and work on it?):
[x] The GH was created by an Expensify employee or a QA tester:
[x] If the bug is an OldDot issue, you should decide whether it is widespread enough to justify fixing or it is better to wait for reunification. If it’s better to wait, close the GH & provide this justification:
[x] If there's a link to Slack, check the discussion to see if we decided not to fix it:
[x] Decide if the GH should be resolved by an External contributor or Internal engineer, add the appropriate label:

Proposal
As @hungvu193 mentioned either we can update includePaddingBottom: false in the default or we can only add bottom padding when we want to show the network error message(for showing the message better).
https://github.com/Expensify/App/blob/0f1d7e2c9dc005fe467ad5f9891b8d4f1005c7ca/src/components/ScreenWrapper/BaseScreenWrapper.js#L79-L81
if (this.props.network.isOffline) {
   paddingStyle.paddingBottom = paddingBottom;
}

Online Case

Offline Case without Bottom Padding

Offline Case with Bottom Padding

I think the real issue here is that we can not add bottom spacing in ScreenWrapper without having the white background behind a notch. See related issue in the safe area context repo https://github.com/th3rdwave/react-native-safe-area-context/issues/197

Since this is related to iOS only we can set the defaultProps.includePaddingBottom = false;
Changes : new file index.ios.js
import React from 'react';
import BaseScreenWrapper from './BaseScreenWrapper';
import {defaultProps, propTypes} from './propTypes';

const ScreenWrapper = props => (
    <BaseScreenWrapper
        // eslint-disable-next-line react/jsx-props-no-spreading
        {...props}
    >
        {props.children}
    </BaseScreenWrapper>
);

defaultProps.includePaddingBottom = false;

ScreenWrapper.propTypes = propTypes;
ScreenWrapper.defaultProps = defaultProps;
ScreenWrapper.displayName = 'ScreenWrapper';

export default ScreenWrapper;

I agree with @vladamx's comment here.
All the proposals are about either adding/removing the padding, but the title says it doesn't have transparent background.
@shawnborton Can you confirm if that we still need a background image? Is that something which worked earlier and now it doesn't?

I'm not sure what caused it to work before and not work anymore. But yeah, I think we want to make sure there is transparency and not a background color around the home bar.

📢 Price doubled! Please get those proposals in.

Here's my original proposal https://github.com/Expensify/App/issues/12963#issuecomment-1325872151
Updated Proposal
Since our parent is View and has paddingBottom, our children view is ScrollView, so the content of ScrollView is only inside space it has. See the attachment bellow, the orange color is the backgroundColor of ScrollView inside.

Solution
Move the padding inside the children it will solve the problem.
diff --git a/src/components/ScreenWrapper/index.js b/src/components/ScreenWrapper/index.js
index 52d9aa5e6..ee4728b2e 100644
--- a/src/components/ScreenWrapper/index.js
+++ b/src/components/ScreenWrapper/index.js
@@ -77,7 +77,7 @@ class ScreenWrapper extends React.Component {
                     }

                     // We always need the safe area padding bottom if we're showing the offline indicator since it is bottom-docked.
-                    if (this.props.includePaddingBottom || this.props.network.isOffline) {
+                    if (this.props.network.isOffline) {
                         paddingStyle.paddingBottom = paddingBottom;
                     }

diff --git a/src/pages/settings/Profile/ProfilePage.js b/src/pages/settings/Profile/ProfilePage.js
index 6c805ade9..d7efa38af 100755
--- a/src/pages/settings/Profile/ProfilePage.js
+++ b/src/pages/settings/Profile/ProfilePage.js
@@ -28,6 +28,7 @@ import * as ValidationUtils from '../../../libs/ValidationUtils';
 import * as ReportUtils from '../../../libs/ReportUtils';
 import Form from '../../../components/Form';
 import OfflineWithFeedback from '../../../components/OfflineWithFeedback';
+import { withSafeAreaInsets } from 'react-native-safe-area-context';

 const propTypes = {
     /* Onyx Props */
@@ -219,6 +220,9 @@ class ProfilePage extends Component {
         }));
         const currentUserDetails = this.props.currentUserPersonalDetails || {};
         const pronounsPickerValue = this.state.hasSelfSelectedPronouns ? CONST.PRONOUNS.SELF_SELECT : this.pronouns;
+        const paddingStyle = {
+            paddingBottom: this.props.insets.bottom,
+        };

         return (
             <ScreenWrapper>
@@ -229,7 +233,7 @@ class ProfilePage extends Component {
                     onCloseButtonPress={() => Navigation.dismissModal(true)}
                 />
                 <Form
-                    style={[styles.flexGrow1, styles.ph5]}
+                    style={[styles.flexGrow1, styles.ph5, paddingStyle]}
                     formID={ONYXKEYS.FORMS.PROFILE_SETTINGS_FORM}
                     validate={this.validate}
                     onSubmit={this.updatePersonalDetails}
@@ -342,4 +346,5 @@ export default compose(
             key: ONYXKEYS.LOGIN_LIST,
         },
     }),
+    withSafeAreaInsets,
 )(ProfilePage);

Result:
https://user-images.githubusercontent.com/16502320/204973162-2c4ed44f-96e6-4a89-af6d-b2c395b56dfe.mov

Thanks for the updated proposal @hungvu193, can you confirm if your change works fine with the offline mode as we show the offline text below the button?

@mananjadhav yes, I didn't remove the paddingStyle inside ScreenWrapper, so it still worked with offline mode.

Nice, that looks pretty good to me!

Okay great. Thanks for the update @hungvu193. Your proposal looks good to me.
@Gonals @shawnborton All yours.
🎀 👀 🎀
C+ reviewed

I completely agree with that ^^

@hungvu193 Are you willing to revise your proposal to take care of this across the App?

@mananjadhav yes sure 😀

We can create Common Component for the content view of these screen. As I remembered we have 3,4 screens like that

Checking through the comments now.
@orkunkarakus We don't recommend getPlatform() === CONST.PLATFORM.IOS. We need these to be split into their respective platform specific files. Please check the contributing guidelines. Also are you sure by just updating ScreenWrapper, we would cover all the screens?

We can create Common Component for the content view of these screen. As I remembered we have 3,4 screens like that

@hungvu193 Can you elaborate on this? I am not sure what you mean by Content View. Can you list the screens in your proposal.

@mananjadhav It will happen in screen that has button at the bottom inside the scrollview has flexGrow: 1.
They are: ProfileScreen, CloseAccountScreen, SearchScreen (OptionsSelector).
With few other screens, you can see that if you try to scroll the content to bottom, with these screens we can simply pass the isIncludePaddingBottom: false to ScreenWrapper of these screens.
I was planning to build a ContentView for these screens (similar to what we have in BaseModal.js), but since it only 3 screens I don't think it's necessary.
In case to reuse the logic we can create a HOC to get the calculated padding inset:
import React from 'react';
import {useSafeAreaInsets} from 'react-native-safe-area-context';
import PropTypes from 'prop-types';
import getComponentDisplayName from '../libs/getComponentDisplayName';
import * as StyleUtil from '../styles/StyleUtils';

const withSafeAreaInsetsPropTypes = {
    insets: PropTypes.any,
};

export default function withSafeAreaInsets(WrappedComponent) {
    const WithSafeAreaInsets = (props) => {
        const insets = useSafeAreaInsets();
        const localInsets = StyleUtil.getSafeAreaPadding(insets);

        return (
            <WrappedComponent
        // eslint-disable-next-line react/jsx-props-no-spreading
                {...props}
                ref={props.forwardedRef}
                insets={localInsets}
            />
        );
    };

    WithSafeAreaInsets.displayName = `withDrawerState(${getComponentDisplayName(
        WrappedComponent,
    )})`;
    WithSafeAreaInsets.propTypes = {
        forwardedRef: PropTypes.oneOfType([
            PropTypes.func,
            PropTypes.shape({current: PropTypes.instanceOf(React.Component)}),
        ]),
    };
    WithSafeAreaInsets.defaultProps = {
        forwardedRef: undefined,
    };
    return React.forwardRef((props, ref) => (
        // eslint-disable-next-line react/jsx-props-no-spreading
        <WithSafeAreaInsets {...props} forwardedRef={ref} />
    ));
}

export {withSafeAreaInsetsPropTypes};

@mananjadhav any thoughts on the above?

thanks for the ping @kadiealexander. I didn't get the notification for the previous comment.
@hungvu193 I think we're making it more complex by introducing the HoC and we haven't adopted the React hooks usage in our codebase. Please checkout the style guide. I would recommend only fixing the padding to the relevant screens and call it off. If you're updating the ScreenWrapper, then does it cover all the screens that you've mentioned? Can you send in the revised proposal with the requested changes?
thank you for the patience here.

@mananjadhav
Sure here's the screen that need to update padding inside:

Profile Screen.
Search Screen.
Here's the screen that need to set includePaddingBottom: false to their screen wrapper.
Company Information (Step 2 to 5)
Manage Members
Settings
About
Workspace

We can consider update these screens, since we only saw the not transparent background only when we tried to scroll so hard to the bottom.

Close Account
Pay Bill
Send Invoice

@orkunkarakus we proposed those changes before :smiling_face_with_tear:  , you have to read other proposals before posting new one , https://github.com/Expensify/App/issues/12963#issuecomment-1326775070
and @mananjadhav stated this

All the proposals are about either adding/removing the padding, but the title says it doesn't have transparent background.

Not overdue, still looking at proposals

should we have doubled here @kadiealexander ? We are reviewing the proposals and I think we might go with one of them. I'll have an update on this by tomorrow.

Apologies, I was going off Shawn's comment above.

I thought the whole point of something like a "safe area" to render content inside a "safe area". And by removing the content from here aren't we basically just saying something like.. "we don't care about safe areas" in these places?
Seems like it would be better to look at the places where a "safe area" is required (e.g. wherever there is a button at the bottom of the screen that may get rendered in the "unsafe area") important and explicitly add one there?

here's the screens that need to update padding inside:

Doesn't moving the safe area padding into the screen itself means that extra padding will exist now on all platforms besides iOS?

here's the screens that need to update padding inside:

Doesn't moving the safe area padding into the screen itself means that extra padding will exist now on all platforms besides iOS? Edit: I guess not because the insets should return 0.
Yes, other platforms that didn't have safe area insets will return 0.

Getting something started over here -> https://github.com/Expensify/App/pull/13580
I could use some help with testing and making sure all the screens are good if @mananjadhav and @hungvu193 are interested in helping find any remaining things that need to be fixed.

Oh, was there not any announcement about this? As far as I know, we have been encouraged to take things "internal" at our discretion to help expedite as our roadmap is blocked on these bugs and unblocking it is our highest priority atm. It does not affect compensation if you have contributed to the solution then you will get paid. So, it's less work for you and the same benefit 😄

Oh, was there not any announcement about this? As far as I know, we have been encouraged to take things "internal" at our discretion to help expedite as our roadmap is blocked on these bugs and unblocking it is our highest priority atm. It does not affect compensation if you have contributed to the solution then you will get paid. So, it's less work for you and the same benefit 😄

Thank you @marcaaron

I'm going OOO for a family emergency, if this needs action while I'm away please re-add the bug label to assign someone.

PR is raised and I am going to review this by today-tomorrow.

PR is merged and deployed to production 3 days ago.

@kadiealexander This is ready for payout today. Can you please help me with the same?

Yes! The Upwork job closed, but please apply here @hungvu193 and @mananjadhav and I'll get the payment issued.
https://www.upwork.com/jobs/~0135d50f36c1f175ac

Thanks @kadiealexander, I've just applied.

Thanks @hungvu193, I've just issued that payment now :)

Applied @kadiealexander :)

Everyone is paid 🎉


Update index.js

Thanks, I guess I was also affected by this config as I had to set * everywhere to avoid the error.


Issues with live reloading in Next.js

I have a couple issues I can consistently recreate when working with Contentlayer and Next.js. These occur consistently while working on the Contentlayer website.
Reloading Renders the Home Page

Start up dev server
Navigate to docs, then getting started (without reloading the page).
Make a content change.
App reloads and redirects to the home page.

Live Reloading with Direct Access
If I reload the docs page I'm working on, then the correct page is reloaded, but it scrolls to the top.

Visit the page I'm working on.
Scroll down to look at the section I want to edit.
Make a content change.
Page reloads, but loads the top of the page, doesn't hold the current scroll position.

Video

Here's a video of the bug(s) in action:

Page reloads but loads the top of the page doesn't hold the current scroll position.

This is something that I have also noticed. I'm guessing that this happening because we fetch the data on the server (via getStaticProps) and then send the data to the Next.js page via props.
When the data (from Contentlayer) changes, Next.js "reloads" the page as the data has changed on the server. Because of this "reload", the page scrolls to the top and is unable to maintain the current scroll position.
A few more points to note:

I checked how Remix does it as they support MDX out of the box and they restore the scroll position after page reloads.
The scroll position also gets preserved in the with-mdx example of Next.js.

This problem should now be addressed with version 0.1.0. If you're running into problems, please let me know. :)

Thanks a lot @ghoshnirmalya for following up on this. You're right, I was able to reproduce the problem on Stackblitz. However, it seems this is a separate issue (which similar symptoms though). Would you mind creating a new issue for this? 🙏

@schickling Done.


pugixml v1.11.4 released

I have checked, no sources change since 1.11.0, so no need to upgrade
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: aismann @.>
Sent: Tuesday, March 16, 2021 2:29:02 AM
To: c4games/engine-x @.>
Cc: Subscribed @.***>
Subject: [c4games/engine-x] pugixml v1.11.4 released (#334)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com/c4games/engine-x/issues/334, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABVHOJ7BGCKJPLX6WPWXY6LTDZGW5ANCNFSM4ZHCZVIA.

see: https://github.com/zeux/pugixml/compare/v1.11...master


Integration for snowflake?

Do we want to make an explicit snowflake UDF-like structure?

I don't believe it's possible to get rows from multiple tables into a single UDF to do the joining python-size. I don't know if it's possible to JOIN to generate variable-length lists rather than exploded tables.


[rfr] Flags and timing events for various kinds of early exit

Refs: https://openscience.atlassian.net/browse/LEI-248
Companion to: TBD
Purpose
If a user leaves a study early, capture event information.
Summary of changes

Add some default feature flag settings to config() for addon, so that non-ISP apps don't break when trying to consume code intended for ISP.
Add flags/timing events for early exit so a record is saved in the session (see testing notes)

When user hits F1 key
When user leaves the page manually via back button, eg beforeunload events

Minor code reformatting and cleanup

Testing notes
Sample of expected data
This adds a new field, globalEventTimings, to the attributes section of a session payload.
Any attempt to exit the study early should yield an exitEarly eventType. The type of the exit can be either:

browserNavigationAttempt: Back button, close window, etc.
manualInterrupt: The user elects to interrupt the study manually (eg by pressing the F1 key), such that they will be taken to the exit survey screen before leaving.

    "attributes": {
      ...
      "globalEventTimings": [
        {
          "exitType": "browserNavigationAttempt",
          "eventType": "exitEarly",
          "timestamp": "2016-10-14T18:42:04.341Z",
          "lastPageSeen": 7
        },
        {
          "exitType": "manualInterrupt",
          "eventType": "exitEarly",
          "timestamp": "2016-10-14T18:42:12.225Z",
          "lastPageSeen": 7
        }
      ],
    ...

Testing procedure/ behavior
To test this, do various things, then look at the session payload generated at each step. (send a GET request with appropriate token to the session record URL of the form https://the-server.com/v1/id/documents/experimenter.session<exptId>.<sessionId>). You can get that URL by looking at the network tab- during an experiment, the browser sends PATCH requests to this URL.

Participate in an experiment. At the consent screen (before recording a video), click the back button to navigate away.

Click "stay" to stay on the page. A browserNavigationAttempt exitEarly event should be logged.
Click the back button again, and then click "leave". A second browserNavigationAttempt will be logged with a more recent timestamp, and then you will actually be taken away from the page.

Do the above- but instead of clicking the back button, quit the entire browser instead. A browserNavigationAttempt should be logged.
Participate in another experiment. At the consent screen, press F1 (or fn+F1 on a Mac, as appropriate). Whether you exit before or after filling out the survey, an exitType manualInterrupt should be captured.
Participate in an experiment. Attempt to leave, stay, then press F1. You should get one event of each exit type, the newest (successful) coming last.
Try the above in both Chrome and Firefox

Caveats
Browser makers are making it progressively harder to interrupt any attempt to leave the page. (because of malicious sites that try to abuse the power to keep people there) We log the attempt to leave because we can not always determine whether the attempt is successful.
The logging event is done synchronously- the page should not be able to leave until the save is complete. It is possible, though unlikely, that a browser could decide to interrupt even synchronous usages in the future.

As expected, when I exit the browser a browserNavigationAttempt is logged and when I skip to the last frame by clicking F1, a manualInterrupt is logged. As discussed in person, participants should not be able to skip the survey by clicking F1 (but this can be addressed in a follow-up PR)


Emmet not working for js/jsx files for vscode 1.62.3 (Ubuntu 20.04)

This issue is similar to issue for v1.62.2, but I am experiencing this after updating to v1.62.3.
https://user-images.githubusercontent.com/61873006/142715720-c1f2ec56-7efa-48e7-85e9-06fa8c2d2d9a.mp4

Please see https://github.com/microsoft/vscode/issues/137012#issuecomment-974750802
/duplicate


[Improvement] Multi Arch build for ARM Support in Docker Hub

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Search before asking

[X] I have searched in the issues and found no similar issues.

What would you like to be improved?
Sorry, I'm late for busy.
Based on This Discussion

Hi, I would like to request a new feature that provides support for ARM-based images Apache Kyuubi.
Currently, in the Docker Hub only provides images for x86-based architectures.

Have you any plan of ARM architecture Image support?

ARM support at docker hub
How should we improve?
Update .github/workflows/publish-snapshot-docker.yml
I'm already have commit that implements.
https://github.com/phyyou/kyuubi/tree/feat/buildx-at-docker-hub-snapshot
https://github.com/apache/kyuubi/pull/4577
However, I think need change https://github.com/apache/kyuubi-docker this repo also for fully improve and support arm image at docker hub
Are you willing to submit PR?

[X] Yes. I would be willing to submit a PR with guidance from the Kyuubi community to improve.
[ ] No. I cannot submit a PR at this time.

Well done! 👍


TestCase results are not shown if the default lookup for last 3 days doesn't have any data

Affected module
UI
Describe the bug
If there is no data available in last 3 days we are not showing a selection of duration all together.

To Reproduce
Screenshots or steps to reproduce
Expected behavior
A clear and concise description of what you expected to happen.
Version:

OS: [e.g. iOS]
Python version:
OpenMetadata version: [e.g. 0.8]
OpenMetadata Ingestion package version: [e.g. openmetadata-ingestion[docker]==XYZ]

Additional context
Add any other context about the problem here.

@ShaileshParmar11 No data description should more descriptive here.


Improve options documentation

See https://trac.torproject.org/projects/tor/ticket/33648

Yes, while the README_SECURITY and README_TECHNICAL are amazing, more explanation is needed for some options in the configuration file.
For example, I was just testing now vangaurds concurrently with onionbalance, and I was confused by this line:
https://github.com/mikeperry-tor/vanguards/blob/b6eceb2e99e46a00563e7dd055096c5e82a7fd60/vanguards-example.conf#L53
It reads: "How long to keep our layer1 guard (0 means use Tor default)", but the example comes with a 2-3-8 topology by default. So, this means that the vanguards system is adding another entry guard to Tor, like edit torrc and add NumEntryGuards 2 ? The questions that appear here are:

What happens if the Tor instance is using just a bridge? How is the 2-3-8 topology respected then, should users change num_layer1_guards = 1 in this case?
What if someone has more bridges in their torrc (say at least 2) should these users set num_layer1_guards = 2  and assume vanguard system will treat them as layer 1 guards?

one_shot_vanguards = False is vague, does it mean that a layer 2 or layer 3 guard is rotated immediately after first circuit failed to build? What is the retry logic if a layer 2 or layer 3 guard goes offline?
I'll be happy to write it explicitly if you give me short answers.

Yes, while the README_SECURITY and README_TECHNICAL are amazing, more explanation is needed for some options in the configuration file.
For example, I was just testing now vangaurds concurrently with onionbalance, and I was confused by this line:
https://github.com/mikeperry-tor/vanguards/blob/b6eceb2e99e46a00563e7dd055096c5e82a7fd60/vanguards-example.conf#L53
It reads: "How long to keep our layer1 guard (0 means use Tor default)", but the example comes with a 2-3-8 topology by default. So, this means that the vanguards system is adding another entry guard to Tor, like edit torrc and add NumEntryGuards 2 ? The questions that appear here are:
* What happens if the Tor instance is using just a bridge? How is the 2-3-8 topology respected then, should users change `num_layer1_guards = 1` in this case?

If Tor is configured to use a bridge, the num_layer1_guards setting will be ignored and the number of bridges you have will be used instead. This should be clarified.

* What if someone has more bridges in their torrc (say at least 2) should these users set `num_layer1_guards = 2`  and assume vanguard system will treat them as layer 1 guards?

Hrm, I don't think there is currently a way to configure more bridges than Tor will use at once... Whatever is configured, Tor will use.

one_shot_vanguards = False is vague, does it mean that a layer 2 or layer 3 guard is rotated immediately after first circuit failed to build? What is the retry logic if a layer 2 or layer 3 guard goes offline?

one_shot_vanguards is meant for use hourly from cron. All it does is choose nodes to specify in HSLayer2Nodes and HSLayer3Nodes torrc option.  If all of the nodes go down in a layer, Tor will no longer make circuits. In other words, it fails closed. This was a deliberate design choice.

I'll be happy to write it explicitly if you give me short answers.

See also https://trac.torproject.org/projects/tor/ticket/33815 for other questions/clarifications


☠☠☠Is this project dead? ☠☠☠

I'm wondering if this project is dead, because no progress in the code repo since over a year and no reactions/answers to issues or even pull requests.
Worth a fork?
Leave a thumb up if you think the provider is worth to get more love ❤
Or leave a comment if we, the Terraform practitioners, should move on to another provider or create a fork.

I am considering a Terraform solution to manage an MSSQL database. Maybe a fork is in order?

Its a good provider but dont think anybody can maintain it since there is no activity. I also didnt find any other provider doing the same things so probably a new fork is required.


Refactor Timeline component

The codes of Timeline component are dirty.
So I refactored them.

Use BEM notation for CSS
Rename some variables

thanks for the refactoring!


include non-minified js file in the distribution

Thanks for your awesome work !
For helping developers in debugging, could it be possible to include also the non-minified version if the js file ...  we'll load it via webpack..  thanks a lot

Hey @erwin16,
I included a non-minified umd version in the dist directory.
Hope that helps!

thanks a lot


Loading es5-shim causing issues in Pager - PageIndex repeating multiple times

@MoonStorm Loading es5-shim.js causing issues in the pager, the page numbers are repeating multiple times. This issue occurs only in Safari browser Version 8.0.8 (10600.8.9).

Note: Loading es5-shim version < 3.4.0 works fine.

Plunker http://plnkr.co/edit/NLmPRLsyYv5NMT33digC?p=preview

It looks like the es5-shim has issue with the splice function implementation.
At line 1123 pageIndexes array is getting cleared but es5-shim splice is not clearing the array.
scope.pageIndexes.splice(0);

+1

The problem is with es5-shim splice prototype implementation https://github.com/es-shims/es5-shim/issues/328.

See https://github.com/es-shims/es5-shim/issues/328#issuecomment-148560011 - this is actually a change in ES6 that breaks compatibility with ES5.
es5-shim's splice implementation conforms to ES5, not ES6 - if you file an issue on es6-shim, I'll make it correct any ES5-conforming implementations.
My recommendation would be to never use splice anyways - if you want to clear an array, set length to 0 - and if you want to keep the contents, slice() it first.


added pressure sensitivity

Added quick support to pressure sensitivity and set default brush size to 5.

Closes #9

Added a checkbox for stylus support because some digital screen's (like mine) reported force to be 0.5 instead of 0.0 (as per standard) when not using a stylus.


feat: remove .md extension when parsing anchor components

Referring to this conversation: https://github.com/pmndrs/zustand/pull/1257#discussion_r962101354
The site needs to support links that contain the .md extention so the docs work within Github, but also on the documentation site.
Example:
TypeScript link on this page is broken due to the inclusion of the .md extension:
https://docs.pmnd.rs/zustand/guides/flux-inspired-practice
It's worth noting that over in r3f land, internal docs links are treated as full paths such as events on this page: https://docs.pmnd.rs/react-three-fiber/getting-started/installation
This PR won't impact those.
Alternatives
Option 1: Ideally I would've preferred to use something like new URL(relativeHref, location) to parse the parts of the href but I'm not sure how to thread through the location in next at build time.
Option 2: Possibly some regex madness to stripe .md but it gets hairy with the hash

I'm treating this as a fix because we previously wanted interop with GitHub so links didn't break when browsing locally and to also support wikis since (https://github.com/pmndrs/website/pull/204#issuecomment-974763725)
We'll need to document and formalize things a bit as we go, but it's notable you can also hide metadata in comments:

CI keeps failing because
 was used instead of
. This might be MDX v2 being too strict.

CI keeps failing because
 was used instead of
. This might be MDX v2 being too strict.

Gotcha. I vaguely remember seeing one of the Zustand pages containing a
 , I'll do a search and get a PR up to stop the failng build this end.

Raised a PR here: https://github.com/pmndrs/zustand/pull/1272
I don't think the  is needed anyway, now that the summary/details style fixes are in from 14153d2bfedb5191ae06a70eaa54b3ff28554023 is in

Cool, merging now. I'll want to look into making the build system less fragile in parsing. Feels like a big regression of MDX v2 over v1.


Implement getKiller on LivingEntity and refactor entity death

Description
I added an implementation for the getKiller method in LivingEntity and refactor the death logic so every entity can override the death behavior.
Checklist
The following items should be checked before the pull request can be merged.

[x] Version number updated in settings.gradle.
[x] Unit tests added.
[x] Code follows existing code format.

Info on creating a pull request
Before the pull request can be accepted, the version number stored in settings.gradle should be updated.
MockBukkit uses semantic-versioning (https://semver.org/)

If the PR fixes a bug in MockBukkit, update the patch version. (if the current version is 0.4.1, the new version should be 0.4.2)
If the PR adds a new feature to MockBukkit, update minor version. (if the current version is 0.4.1, the new version should be 0.5.0)
Make sure that unit tests are added which test the relevant changes.
Make sure that the changes follow the existing code format.

Note that a PR that fixes an UnimplementedOperationException should be considered a new version and not a bugfix.
The version number can be found in settings.gradle.

Just a note: by constantly merging v1.16 to this pull request, I'm no longer able to rebase onto v1.16 and squash my commits. Try to only merge updates at the last moment so I (or any other developer) can cleanup my commits

What is missing here?

It needs its conflicting files updated and the build error needs to be fixed.

@nowtryz You still wanna go forward with this PR or can this be closed?

You can close it, I may reopen it when I have time
On Wed 8 Jun 2022 at 22:23, thelooter @.***> wrote:

@nowtryz https://github.com/nowtryz You still wanna go forward with
this PR or can this be closed?
—
Reply to this email directly, view it on GitHub
https://github.com/MockBukkit/MockBukkit/pull/175#issuecomment-1150370758,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AKTBA3NWRSQRPG6262NHYPLVOD6MDANCNFSM4YM77JNA
.
You are receiving this because you were mentioned.Message ID:
@.***>

--
Damien Djomby
Étudiant en 5ème année,
Informatique, Données et Usages,
Polytech Annecy-Chambéry
M +33 6 65 12 90 24
M +1<PHONE_NUMBER>
@.***


azure-cli 2.0.66 cryptography <2.5 and >2.5

azure-cli 2.0.66 from pypi requires cryptography <2.5 and >=2.5. 😢
azure-cli-core is requiring >=2.5 becauseof paramiko:
    - azure-cli-core [required: Any, installed: 2.0.66]
      - paramiko [required: >=2.0.8, installed: 2.5.0]
        - cryptography [required: >=2.5, installed: 2.4.2]

It is azure-cli-appservice that is putting a dependency on <2.5 here and should probably be fixed.
  - azure-cli-appservice [required: ==0.2.20, installed: 0.2.20]
    - cryptography [required: <2.5, installed: 2.4.2]

I ran into this bug and diagnosed it with pipenv.

Hi @ctaggart this has been fixed as part of https://github.com/Azure/azure-cli/pull/9612

@panchagnula is there a reason that azure-cli-appservice required cryptography < 2.5?

Leaving open for @marstr to weigh in on.

It looks like the change was done to suppress some warning at the time. With the updated version of paramiko, I doubt this is needed anymore. @patricklee2 @yugangw-msft

@patricklee2 - assigning this to you to weigh in on this & make the update if needed. //CC: @rramachand21

Looks to me like paramiko and cryptography are playing nice now. I believe the appropriate fix is to remove the ceiling from the appservice package. Whatever changes are made, I'll make sure it gets applied to the flatten branch as well.

I'll make the fix


[bugfix] Duration.milliseconds() now returns an integer

I updated Duration.milliseconds() to floor and return an integer to fix issue #4649.

Coverage decreased (-0.05%) to 88.353% when pulling c54b8016d4c88d9e88f41a51055ff02dc12fd357 on yuchengs:develop into 92a58a5835da73e131a1a34d651cc78be6d03a5f on moment:develop.

@yuchengs I'm not sure this is the right place to fix this issue.
If moment will handle non-integer input, it should also handle it for the other units. Like moment.duration({month: 2.5}). It doesn't have to be very smart, but at least it needs to make sure no units are left non-integer.


Error when trying to use az interactive in Learn sandbox

This is autogenerated. Please review and update as needed.
Describe the bug
This is my first time using Azure. I was playing around with the cli and wanted to enter interactive mode. However, I received an error not allowing me to enter into interactive mode.
Command Name
az interactive
Errors:
The command failed with an unexpected error. Here is the traceback:
No module named 'prompt_toolkit.interface'
Traceback (most recent call last):
  File "/usr/lib64/az/lib/python3.9/site-packages/knack/cli.py", line 233, in invoke
    cmd_result = self.invocation.execute(args)
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/__init__.py", line 663, in execute
    raise ex
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/__init__.py", line 726, in _run_jobs_serially
    results.append(self._run_job(expanded_arg, cmd_copy))
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/__init__.py", line 697, in _run_job
    result = cmd_copy(params)
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/__init__.py", line 333, in __call__
    return self.handler(*args, **kwargs)
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/core/commands/command_operation.py", line 121, in handler
    return op(**command_args)
  File "/usr/lib64/az/lib/python3.9/site-packages/azure/cli/command_modules/interactive/custom.py", line 41, in start_shell
    azext_interactive.start_shell(cmd, style=style)
  File "/home/elliottbrandon30/.azure/cliextensions/interactive/azext_interactive/__init__.py", line 10, in start_shell
    from .azclishell.app import AzInteractiveShell
  File "/home/elliottbrandon30/.azure/cliextensions/interactive/azext_interactive/azclishell/app.py", line 33, in <module>
    from prompt_toolkit.interface import Application, CommandLineInterface
ModuleNotFoundError: No module named 'prompt_toolkit.interface'

To Reproduce:
Steps to reproduce the behavior. Note that argument values have been redacted, as they may contain sensitive information.

bash
az interactive

Expected Behavior
The expected behavior was to enter into interactive mode.
Environment Summary
Linux-5.4.0-1094-azure-x86_64-with-glibc2.35 (Cloud Shell), CBL-Mariner/Linux
Python 3.9.13
Installer: RPM

azure-c

Duplicate of https://github.com/Azure/azure-cli/issues/24213


Use client cache to reduce the number of client connections

Issue #, if available:
Description of changes:
Instead of creating a client per reconciling, use a client cache to reduce the number of client connections
Testing performed:
Created a cluster with 1 CP and 10 workers across two ACS endpoints. With debug output, only two clients were created and the cache clients were used per reconciling
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Following from my Slack comments of 8/1, I'm concerned about concurrency here.  While we do leave MaxConcurrentReconciles set to its default of 1, it's my understanding that that only applies per CRD.  That implies that different CRDs may reconcile concurrently, and they may each use the CS API with the same config.
Conceivably, then, there could be multiple goroutines in NewClientFromConf concurrently, and all discovering that the client they want is not in the cache, all creating that client (with its connections) and all updating the shared map (last updater overwrites its predecessors).
As such, I recommend wrapping all of the code in NewClientFromConf in a critical section using sync.RWMutex.

The reason is if two controllers go to write a client to the map simultaneously they could contend to do so.

@rejoshed @jweite-amazon
Why is that a problem? They're both writing the same client object, and once it's written, we should be able to reuse whatever was written latest, right?

I'm still interested in what happens when a previously good connection goes bad.  This isn't discovered until the connection requester tries to use the connection it got from the cache.  I'm thinking we'd want to un-cache that connection, so a fresh one is established upon next retry.

I tested this bad connection scenario by disconnecting from the VPN.

Create a cluster
Disconnect from VPN
Machine state checker returns an error due to the bad connections
Reconnect to VPN
Delete the cluster
Deletion succeeded

It seems we really don't need to re-create a client when a connection goes bad.

Thanks @wongni.  Makes sense given that this is an http-based API: the client will attempt to establish a TCP connection for each operation, so once the connection is re-establishable (i.e., VPN-reconnected) it will be re-established upon the next operation (i.e., those in Cluster Delete).
Which begged the question "if TCP connections are established for each API operation, why would the change to client-per-reconcile cause more connections than single-shared-client?"  From a look at cloudstack-go, I see it using the stock golang http client, which reportedly is able to re-use its TCP connections.  When we created a new client (per reconcile), we forced a new connection to be established by the new client, rather than re-use the previously established one.  So all is good.


Incorrect empty file coverage

Summary
When a file is not covered by any unit tests, jest considers it as an untested file and generate empty coverage for it. However, the empty coverage is generated without using babel-plugin-istanbul and the coverage data is incorrect.
Here is the issue I created to describe the bug. Here is the repo to reproduce the bug.
Fixes #7302
Test plan
The existing unit test for generateEmptyCoverage is updated.

Codecov Report

Merging #7388 into master will increase coverage by 1.03%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #7388      +/-   ##
==========================================
+ Coverage   66.79%   67.82%   +1.03%
==========================================
  Files         242      240       -2
  Lines        9371     9258     -113
  Branches        5        6       +1
==========================================
+ Hits         6259     6279      +20
+ Misses       3110     2977     -133
  Partials        2        2

Impacted Files
Coverage Δ

packages/jest-cli/src/generateEmptyCoverage.js
85.71% <100%> (ø)
:arrow_up:

packages/jest-jasmine2/src/jasmine/Env.js
0% <0%> (ø)
:arrow_up:

packages/jest-jasmine2/src/errorOnPrivate.js
0% <0%> (ø)
:arrow_up:

packages/jest-validate/src/index.js
0% <0%> (ø)
:arrow_up:

...ackages/jest-jasmine2/src/assertionErrorMessage.js
0% <0%> (ø)
:arrow_up:

...ackages/jest-jasmine2/src/jasmine/JsApiReporter.js
0% <0%> (ø)
:arrow_up:

...ackages/jest-watcher/src/lib/patternModeHelpers.js
0% <0%> (ø)
:arrow_up:

packages/jest-jasmine2/src/each.js
0% <0%> (ø)
:arrow_up:

packages/jest-runner/src/test_worker.js
0% <0%> (ø)
:arrow_up:

packages/jest-watcher/src/BaseWatchPlugin.js
0% <0%> (ø)
:arrow_up:

... and 24 more

Continue to review full report at Codecov.

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

@SimenB @jwbay @aaronabramov Any thoughts on this PR?

@SimenB When do you think you can merge this PR?

This is awesome, it fixed #7202! Just because it was empty, but still
/cc @thymikee


License?

Can you please assign a license to this project? Apache or MIT, for example.

Definitely! This project started out as a half-baked idea, but it worked out better than expected! Happy to help it be useful to others

I kicked out another release (0.2.1) to help organizations that have automatic filtering of dependencies based on their license use this plugin! Thanks for the suggestion

Thx!


migrate lgtm

Description
Enable CodeQL check (replacement for LGTM)
https://github.blog/2022-08-15-the-next-step-for-lgtm-com-github-code-scanning/
Will disable LGTM integration from the web console on merge
Review Instructions
See that recent builds have LGTM migrated checks
They should show up in https://github.com/dockstore/dockstore-cli/security/code-scanning
Issue
https://ucsc-cgl.atlassian.net/browse/SEAB-3011

See also https://github.com/dockstore/dockstore/pull/5244


SetFit for a large number of classes

Hi there, thanks for releasing such an interesting library.
I am curious if any experiments have been run using SetFit in the extreme multiclass setting, say as n_classes>=100?

Hi thanks for your feedback, I did try to run for clinc_oos 'plus' (150+1 classes): 151x8 samples (BS=32) got ACC. 78% vs. full data (>15K samples) 86%.  Will be great if you can share more results with large n.

At the moment I am training on a German dataset with ~90 very unbalanced classes.
The monority class has 20 samples. The mayority class has 183 samples.
It works very good.

At the moment I am training on a German dataset with ~90 very unbalanced classes. The minority class has 20 samples. The majority class has 183 samples.
It works very good.

Hello, could You add any detail on your training configuration?

Do you have a multiclass or multilabel task?
Do you use a sklearn head?
Are there any minority classes that are fully "ignored" (show 0 recall)?

Do you have a multiclass or multilabel task?

I have a normal multi class task.

Do you use a sklearn head?

yes

Are there any minority classes that are fully "ignored" (show 0 recall)?

no

I believe these questions have been answered now, so I'll close this. You're always free to reopen or make a new issue for further questions or issues :)

My aim is to use setfit to create a generic, broad topic classifier for the purpose of weak labeling and corpus exporation.
I haven't gotten anything useful out of trying to fit the model on my traindataset with with roundabout 6k records and 182 classes (which I balanced).
I tried both multiclass and multilabel classification, would have expected to get something useful out of the latter.
No luck so far. The classes overlap, it is actually hierarchical classification with 17 broad classes.
The dataset is artificial, based on class descriptions. I played around with the (somewhat larger) base dataset here till I got balanced classes (on mid level and high level):
https://huggingface.co/datasets/KnutJaegersberg/News_topics_IPTC_codes_long
I used this code:
Load a SetFit model from Hub
model = SetFitModel.from_pretrained("sentence-transformers/paraphrase-multilingual-mpnet-base-v2",
multi_target_strategy="one-vs-rest")
Create trainer
trainer = SetFitTrainer(
model=model,
train_dataset=train,
eval_dataset=evaluation,
loss_class=CosineSimilarityLoss,
#metric="Accuracy",
batch_size=1,
num_iterations=20, # The number of text pairs to generate for contrastive learning
num_epochs=1, # The number of epochs to use for contrastive learning
column_mapping={"text": "text", "label": "label"} # Map dataset columns to text/label expected by trainer
)
For multilabel, I created a label column with dummy variables in an array. Prediction was 0 when it clearly shouldnt.
No class got predicted. All 0s. Could this have to do with the large number of classes?

Never mind, I think it was an issue with reticulate.

Glad to hear that you got it working!

I am working on a multi-label scenario with around 400+ classes, regarding the dataset that I have right now has a categories field which has category names in it for each row, so some row belong to 2 categories some row belong to 4 categories, but total classes are 400+. I am confused if this dataset would be acceptable or I have to rebuild my labels and transform them to 0,1 like
text: "some text", label: [0,1,0,0,0,0,1,0,0]
as opposed to
text: "some text", label: ['class-23', 'class-44'] etc?

Hello!
The former style is required. You'll have to train using a multi-label model: https://github.com/huggingface/setfit#example-using-a-classification-head-from-scikit-learn

Tom Aarsen

Thank you for your response, would you suggest which multi_target_strategy should I use? I am a beginner to ML and data science and working on my Master's dissertation for a multi-label few shot classification problem, here are some statistics about my dataset
total rows: 20k+
total unique categories: 442
I have discarded the categories which had less than 6 rows, and for splitting them in training and validation set what I have done is those categories which had more than 30+ rows (samples) are part of training_dataset and the rest are part of test_dataset
so now there are 321 unique categories and 18K rows in training_dataset and around 60 unique categories and 2k+ rows in testing_dataset.
based on this, can you suggest me the hyper-parameters for best results?

I would try out the multi-output option, but feel free to experiment with the others as well. As for the other hyperparameters, good values depend a lot on the exact problem, so I can't suggest any specific ones, but I would recommend lowering the batch_size if you get "Out of memory" exceptions, and decreasing num_iterations if the training time is too large. Beyond that, the default options are solid.
With that much data, you may also be able to use a "standard" text classification solution using 🤗 Transformers (docs).

Tom Aarsen

I have 53658 samples of training data and 514 labels and taken 30 samples_per_label. It took nearly 4 days to complete the training and gave 0% accuracy on evaluation data. What might be the reason?

@nprasanthi7  Regarding the speed, Did you run on GPU? What is the average sequence length?  Regarding accuracy it is very-hard to say, few ideas: 1. Try LogitReg on your data as baseline to make sure test is ok 2. Take a small subset of data and labels to make sure it's running ok  3. It may be that the claasses are very close to each other  4. maybe the test data is extremly inbalanced

yes I ran on GPU and it took nearly 45 GB gpu ram. The average sequence length is 748.71.
 I'm seeking advice on how to prepare the data for this multi-label classification problem while preserving the hierarchical structure. For instance, if the product type is "furniture," the model should classify the product subtype within the furniture category, and similarly for merchandise type and item type. Below is a snippet of the data -
tcin | product_type_n | product_sub_type_n | merchandise_type_n | item_type_n
XYZ | HOME | BEDDING | blankets and throws | Throw Blankets
BCD | HOME | SOFT HOME | rugs, mats and grips | Rugs
PQR | FURNITURE | seating and tables | standalone tables | Console Tables
ABC | HOME | SOFT HOME | rugs, mats and grips | Rugs
EFG | FURNITURE | bedroom furniture | beds and mattresses | Beds
Thanks in advance.


feat: add support for GB countries

This feature adds Northern Ireland, Scotland and Wales to the enum of supported countries for users to represent on Wise Old Man.
Closes #1441

Hey @psikoi, the enums are now using underscores as part of commit: 57de90fbcba33b290e6ced06e21ed0d6eebaa4f6
I'll generate the migration and resolve the conflicts today 👍

Feedback actioned @psikoi, I tried bumping to .17 but there was still a conflict (obviously) - I wasn't sure if this branch should increment to .17 or .16 to be aligned with master.

Feedback actioned @psikoi, I tried bumping to .17 but there was still a conflict (obviously) - I wasn't sure if this branch should increment to .17 or .16 to be aligned with master.

Should be .17

All resolved @psikoi


Dump views in different languages

added locales option with yargs. You can now dump views in different
languages by using the --locales option.
Example:
gulp dump-views --locales de,en
This will produce suffixed html files in the tmp directory:
project/tmp/views/index-de.html
project/tmp/views/index-en.html

Nice, thanks for your PR
before merging, i think...

it would be important to add yargs to devDependencies
the concat issues should be fixed
it yould be nice to have a short usage description in the gulp task


[MM-44347] Use new display name parameter to fetch users in group

Summary
Use new display name parameter to fetch users in group, so that they are loaded in order of display name.
Ticket Link
Intended to be used for this feature: Jira ticket
Related Pull Requests
Requires https://github.com/mattermost/mattermost-server/pull/21775
Release Note
NONE

@plant99 I think the code you suggested wouldn't work because the members array is just passed to GroupMemberList as-is, rather than putting it in the mock state. I'm not seeing a way to test the selector here, because there is a type error if I omit the members array when passing props to GroupMemberList. Do you have any ideas?

@plant99 I think the code you suggested wouldn't work because the members array is just passed to GroupMemberList as-is, rather than putting it in the mock state. I'm not seeing a way to test the selector here, because there is a type error if I omit the members array when passing props to GroupMemberList. Do you have any ideas?

Ah thanks for clearing it up @cyrilzhang-mm.
Things look good to me now - since we're not mocking API calls anywhere, no other change requests!

Successfully triggered E2E testing!
GitLab pipeline | Test dashboard


bugfix: fix exec not exit with correct exit code

add ContainerExecInspect client api, refactor container
part in client package.
make exec exit with correct exit code.
Fixes: #344.
Signed-off-by: Ace-Tang<EMAIL_ADDRESS>
Ⅰ. Describe what this PR did
add ContainerExecInspect client api, refactor container
part in client package.
make exec exit with correct exit code.
Ⅱ. Does this pull request fix one issue?

Ⅲ. Describe how you did it
Ⅳ. Describe how to verify it
Ⅴ. Special notes for reviews

CI fails. PTAL. @Ace-Tang

Could you rebase this PR to the latest branch master and fix the ci failure. Thanks a lot. @Ace-Tang

Codecov Report

Merging #1128 into master will decrease coverage by 1.14%.
The diff coverage is 0%.


exception with Markerclusterer on IOS

I'm submitting a ...  (check one with "x")

[ ] question
[ X] any problem or bug report
[ ] feature request

If you choose 'problem or bug report', please select OS:  (check one with "x")

[ ] Android
[X ] iOS

Some users started reporting that since an ios update, sometimes the map hanged up. we requested a nearby user to come by to debug onto his phone, and found out this exception breaking the plugin's code:

happens randomly when loading the map, quite inconsistent error.
a quick fix could be a null check on the from and to.

a quick fix could be a null check on the from and to.

Do not give null parameters.

the problem is i'm not the one calling that method,  i don't know where from comes in  computeanglebetween, or what to check.

Okay, please share your project files that reproduce your issue. Without sharing anything, what can I do?
 The most case of unexpected errors come from invalid data. Check your data at once. Some people give string lat/lng instead float for example.

This plugin code is full open. At least you can trace the code flow.

#Trace the code flow step by step
Regarding of the error capture (thank you for providing), the error occurs at line 200 in MarkerCluster.js.
However JS trace log always display +1 step, so line 199.

Okay, it seems the markerCluster executes self.redraw in the constructor of MarkerCluster.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/MarkerCluster.js#L199-L201
It means the error occurred when markerCluster tried to draw the clusters for first time.

Then let's move to the line 459 in MarkerCluster.js.

It seems the marker cluster needs to know the visible region of map.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/MarkerCluster.js#L458-L462

After that,  let's move to the line 501 in MarkerCluster.js.

Oh, the marker cluster calculates distance from A to B.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/MarkerCluster.js#L501

Okay, next. Lets' move to line 73 in spherical.js

Wow, the computeDistanceBetween is very thin wrapper.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/spherical.js#L72-L74

In the end, let's move to line 65 spherical.js.

Um, it seems the plugin calculates something.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/spherical.js#L64-L67

The error says undefined is not an object (evaluating 'from.lat'). Ah I see, the variable from is undefined for some reason.
You can understand at least here.

#Why the variable from is undefined?
Okay, where does the variable from come from?
The variable from comes from params.visibleRegion.farRight.
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/MarkerCluster.js#L501
Um, it seems params.visibleRegion.farRight is undefined.
Let's confirm the code of map.getVisibleRegion().

#map.getVisibleRegion()
https://github.com/mapsplugin/cordova-plugin-googlemaps/blob/b3fa8e7fcea26cca66116673669712e71037b802/www/Map.js#L792-L813
Oh, it looks very simple code.
This function just returns camera positions.

If you come up here, you might guess the reason of the error.
You tried to use a marker cluster before the camera positions are not filled yet.
It means you tried to use a marker cluster before the MAP_READY event.

ping

sorry, you pinged me at 3AM here.  the marker cluster is never used before the map_ready event as per code:
this.map.one(GoogleMapsEvent.MAP_READY)
      .then(() => { all_the_code_that_loads_markers_and_adds_them_to_clusters }

my code order:
1- map ready
2 - add click listener
3 - create cluster.

4- (then), add click to cluster

5 - load markers from API/DB
6 - add markers to cluster
it's a very linear process.

Only accept the provided project.

i added a try catch around the markercluster constructor and it "fixed" this edge cases where map is ready but camera is not filled, as after some time i noticed  the "map ready!" console.log always prints, wether the map crashes or not, but you should check why a camera could not be set and the map could be ready.

If you find out the reason, please feed back ;)

@wf9a5m75  i've noticed the crash happens after map_ready is sent but before the camera variables are set. shouldn't they be set before the map ready? maybe an  observable/promise  or an async await that makes sure both are set and never returns map_Ready unless it's really ready?

Try the multiple_maps branch. Should be fine.

will try this afternoon,  thanks!


test coverage

Pull Request Test Coverage Report for Build 3599

42 of 324 (12.96%)  changed or added relevant lines in 6 files are covered.
3 unchanged lines in 2 files lost coverage.
Overall coverage remained the same at 64.176%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

go/k8s/controllers/utils.go
32
50
64.0%

go/k8s/controllers/user_controller.go
0
264
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/almond/enginemanagerclient_k8s.ts
1
80.88%

src/model/entity.ts
2
76.92%

Totals

Change from base Build 3598:
0%

Covered Lines:
7590

Relevant Lines:
11257

💛  - Coveralls


Client side redirects from anchors

Hi! I am trying to use this plugin for client side redirects with '#' in. I've got the basics working:
import mkdocs_gen_files

redirect_map = {
    "reference/about.md": "../glossary/#test-1",
}

redirect_template = """

Redirecting...
"""

for page, link in redirect_map.items():
    with mkdocs_gen_files.open(page, "w") as fd:
        print(redirect_template.format(link=link), file=fd)

However, it doesn't work if the redirect is from an anchor tag:
redirect_map = {
   "reference/glossary/#test-1": "../about/" ,
}

It generates a page: glossary/#test-1 (I guess as intended) Is there a way to handle # in the original link?
Thanks for any help!

I am also finding that this:
redirect_map = {
     "reference/glossary.md": "../about/",
}

Seems to automatically go to the last anchor on the page (whatever it is)

Redirecting is not envisioned as a use case for mkdocs-gen-files. I was surprised to see it used as such and assumed to be working well.
I believe you got this example from https://github.com/mkdocstrings/mkdocstrings/blob/e19071b5cab120721ac898da8a87ca97dff23aa3/docs/gen_redirects.py
-I don't think this example is advertised anywhere.
In your latter example, this value "reference/glossary/#test-1" is directly passed to open(page, 'w'), so of course it will create a file named as such. I don't think within mkdocs-gen-files it is reasonable to pursue anything that would satisfy this use case.
For more proper redirects I would recommend this plugin https://github.com/datarobot/mkdocs-redirects
It doesn't work there either but at least this feature request could be reasonable there.
The reply you got here is also very insightful:
https://github.com/squidfunk/mkdocs-material/discussions/3764#discussioncomment-2429473

Ironically, I got here from that other plugin, due to the recommendation on this issue: https://github.com/datarobot/mkdocs-redirects/issues/16
Hopefully you take over the plugin and add # support. In the mean time . . . well, thanks for answering!


fix: no-regexp-s-flag crash on non-string flags

Second argument type is not checked. Cause eslint crash on Identifier
Only allow Literal and TemplateLiteral,
TemplateLiteral should not very offen to see, but not very hard to add this check, so I added it.

🎉 Published as 2.1.3
https://github.com/keithamus/eslint-plugin-escompat/releases/tag/v2.1.3


[D&D 3.5] new Spell Section Layout for full-mode

Changes / Comments
Added these features:

Add two new fields "Damage" and "Variable Damage" to weapon section.
Redraw Turn Undead section
new layout for Spell section - full mode
Add new actions in Spell Section
Highlighted disable input filed

Roll20 Requests
Comments are very helpful for reviewing the code changes. Please answer the relevant questions below in your comment.

[X] Does the pull request title have the sheet name(s)? Include each sheet name.
[ ] Is this a bug fix?
[X] Does this add functional enhancements (new features or extending existing features) ?
[X] Does this add or change functional aesthetics (such as layout or color scheme) ?
[ ] If changing or removing attributes, what steps have you taken, if any, to preserve player data ?
[ ] If this is a new sheet, did you follow Building Character Sheets standards ?

If you do not know English. Please leave a comment in your native language.

Character Sheet Info Roll20 Internal Use only.

Please wait.

All check are ok


AbstractMethodError on HEAD

Perhaps related to 606249bbee6cee94e5366cece4183e2965ff34a5, but my app doesn't start correctly anymore. I get failures when instantiating my objects. I'm not using the feature in this commit myself, so I can't evaluate it's usefulness.
Exception in thread "main" java.lang.AbstractMethodError:     seevibes.twitter.Converter.metricsRegistry()Lcom/yammer/metrics/core/MetricsRegistry;
	at com.yammer.metrics.Instrumented$class.com$yammer$metrics$Instrumented$$metricsGroup(Instrumented.scala:7)
	at seevibes.twitter.Converter.com$yammer$metrics$Instrumented$$metricsGroup(Converter.scala:21)
	at com.yammer.metrics.Instrumented$class.metrics(Instrumented.scala:12)
	at seevibes.twitter.Converter.metrics(Converter.scala:21)

I'll try without this commit tomorrow.

I had this issue too, but a different class. It was a dependency version conflict.


CI: Organize GitHub Actions

Reinstalling gettext, installing packages, smoketests and updating vimtags are need only for the build for publish.
Remove the envvars CONFOPT and LANGOPT, and set them explicitly in configure step.
Separate executing xcode-install into "Set up Xcode" step, the condition matrix.xcode is set.

I'm a little hesitant to move installing gettext, packages, scripting languages, and smoketest to a publish only step. In my mind, those are useful regression tests in addition to just being part of publishing the app.
For example, if I'm working on MacVim's localization, I could inadvertently broke the message translation support (basically the work done in #1070), and I would prefer if I know about it immediately instead of the next publish which could be months later. Same thing for scripting language support. I would prefer to know if it broke immediately. There are also people who syncs to HEAD instead of following our release schedule as well.
Also, all the steps that we are omitting here takes half a minute to complete (if gettext is cached, which is the majority of cases). They seem like pretty good bang for the buck compared to the Vim tests which take up the bulk of the time which I found to frequently catch issues with the tests themselves or upstream Vim issues more than MacVim itself.

Reinstalling gettext, installing packages, smoketests and updating vimtags are need only for the build for publish.

My writing might have confused you; "the build for publish" means the build whose matrix.publish set to true, not build only when publishing. That is, the above processes run on one job at every push and pull-request event.
However, maybe they should run on all jobs?

Oh actually you are right. I think I confused myself when I read your diff 😅.
I think I'm fine with the PR as-is/


Log Plugin

This builds on the work in #789 by adding a new bevy_log plugin. It removes all log crate access in favor of tracing, and all log initialization code to bevy_log. This is nice because the wasm examples are cleaned up significantly.
bevy_log re-exports tracing types, which are now available in bevy::prelude (so you can just do info!("hello")
bevy_utils re-exports tracing (for use in core crates like bevy_app, which can't consume the bevy_log plugin)
I also moved the "chrome tracing" from the example to an optional trace_chrome feature, which enables that subscriber in bevy_log.
Followups:

it would be nice to initialize android_logger here too (instead of in the example), but we might need to build an android tracing subscriber.
wasm logs got a bit noisier because the released tracing-wasm doesn't let you configure log level https://github.com/storyscript/tracing-wasm/issues/14 (bevy defaults to disabling trace logging in release mode, so building in release is a temporary workaround for console spam)

@superdump

@mrk-its this is relevant to wasm logs, so feel free to weigh in

I just checked-out this branch and it looks very cool on native. Kudos.
Although the constant spamming of messages to browser console will make development for web impossible. (and eventually grind browser tab to a halt)

Yeah we might need to either wait for them to publish the next version of wasm_tracing or publish our own version while we wait.

If it would be blocking Bevy release, we might just temporarily disable configuring logging on wasm.

@cart it looks like tracing-wasm has a max_level thing in its configuration. But also there should be a way to define a filter layer even if it didn't. There are other filter layers than just the EnvFilter: https://docs.rs/tracing-subscriber/0.2.15/tracing_subscriber/filter/index.html

Also, it looks like EnvFilter can be constructed from a string and not necessarily from an environment variable: https://docs.rs/tracing-subscriber/0.2.15/tracing_subscriber/filter/struct.EnvFilter.html#method.new

I was playing with it today in browser and after little tweaking it works great! Like @superdump mentioned above filterning on wasm can be enabled the same way as for native:
-    tracing_wasm::set_as_global_default();
+    let filter_layer = EnvFilter::try_from_default_env()
+        .or_else(|_| EnvFilter::try_new("info,wgpu=warn"))
+        .unwrap();
+    bevy_utils::tracing::subscriber::set_global_default(
+        Registry::default()
+            .with(filter_layer)
+            .with(tracing_wasm::WASMLayer::new(tracing_wasm::WASMLayerConfig::default())),
+    )
+    .expect("default global");

With bits of web_sys we can also easily pass configuration directives to EnvFilter via url params / url fragment, like:
http://localhost:4040/sprite.html#RUST_LOG=debug or so

Oh, I like that idea! URI fragments don't cause page reloads if I recall correctly... I wonder if you can edit it on the fly and have the filters change...? :)

Oh, I like that idea! Changing URI fragments don't cause page reloads if I recall correctly... I wonder if you can edit it on the fly and have the filters change...? :) @mrk-its

@superdump Unfortunately a lot of js apps use fragment some way and it may interfere with them. The other interesting option is window.localStorage (e.g. window.localStorage.RUST_LOG='info' in js console) - the good thing is it will survive page reloads.

Just added a simple android tracing backend. I'm going to make filtering configurable via LogSettings, then we should be good to go.
Feel free to follow up with WASM niceties like local storage filtering if the fancy strikes you :smile:


chore: add funded accounts

Resolves #18
I have currently added getfundedaccounts in the EnvConfig class itself. I thought it will be easy. Let me know if it needs to be moved to separate file

mmm I don't like the idea of making an asynchronous call everytime I need load config... I prefer separated file

@chopan123 can you check if it is fine now? Accounts are created when deploying contracts


#64 Results storage simplified

The original intent of #64 was to make the storage configurable to work around a specific issue: being able to write the result files simultaneously from different pods and make it work in across k8s envs (local or Cloud). So, the idea was that for k3d the user could use local storage and on GKE he could provision an NFS server (Google Filestore).
Instead, the solution I'm proposition here achieves the same goals (parallel writes and cross-env compatibility) while being self-contained (no NFS or other external service required).
The way it works is that each job (gemini, cassandra-diff, nosqlbench) gets a dedicated PVC and in the end of the workflow these same PVCs are all mounted by the webserver (nginx) to expose the files to the client, which can then be download and stored somewhere else. The webserver is kept running after the Argo Workflow exits, but it will be terminated when the Helm chart is deleted.

ping @absurdfarce - just a friendly reminder to review this PR when you have time

ping @absurdfarce - just a friendly reminder to review this PR when you have time

@grighetto ACKed.  Review is in-flight.

@grighetto ACKed.  Review is in-flight.

After sorting out a few minor issues (including a bone-headed mistake on my part) this worked out of the gate.  I was able to access output files via the nginx container for nosqlbench (source and target), gemini and cassandra-diff.  I also very much applaud the simplification over the previous approach using NFS; this seems like a much more straightforward expression of what we're trying to achieve.
We do need to add some notes about how to use this, specifically something around the process of setting up port forwarding in order to enable local access to the Web server.  My understanding is that @jdonenine will be tackling this in future work.

After sorting out a few minor issues (including a bone-headed mistake on my part) this worked out of the gate.  I was able to access output files via the nginx container for nosqlbench (source and target), gemini and cassandra-diff.  I also very much applaud the simplification over the previous approach using NFS; this seems like a much more straightforward expression of what we're trying to achieve.
We do need to add some notes about how to use this, specifically something around the process of setting up port forwarding in order to enable local access to the Web server.  My understanding is that @jdonenine will be tackling this in future work.


Implement react-native-macos-init in react-native.config.js

Summary
Right now react-native-macos-init is implemented as separate package. But inside React Native CLI we've plugins, which allows to add new commands. Actually inside react-native-macos I can see that there's implemented run-macos command via react-native.config.js.
https://github.com/microsoft/react-native-macos/blob/3ea16bd3045d4c6a49eb7dcdb0b85eb7115a9daf/react-native.config.js#L20-L23
So it'll really good to unify this, and use react-native.config.js for the init command.
Motivation
That's official API provided by RN CLI, and it'll also in some way future-proof to unify this.
Basic Example
There's documentation which provides all necessarily informations, how to do it correctly.
Open Questions
No response

Summary
Right now react-native-macos-init is implemented as separate package. But inside React Native CLI we've plugins, which allows to add new commands. Actually inside react-native-macos I can see that there's implemented run-macos command via react-native.config.js.
https://github.com/microsoft/react-native-macos/blob/3ea16bd3045d4c6a49eb7dcdb0b85eb7115a9daf/react-native.config.js#L20-L23
So it'll really good to unify this, and use react-native.config.js for the init command.
Motivation
That's official API provided by RN CLI, and it'll also in some way future-proof to unify this.
Basic Example
There's documentation which provides all necessarily informations, how to do it correctly.
Open Questions
No response

when I try to add macos to my project.
<EMAIL_ADDRESS>is not compatible i guess. I am getting such error: Error: Command failed: npm install --save --silent<EMAIL_ADDRESS>at checkExecSyncError (node:child_process:871:11)
I am following the steps in official website. I am using mack Operating system.
How can I solve this isse?

@sirojiddin96 Could you file a separate issues? This issue is a request from the React Native CLI team to update some of our code, which is separate from the issue you're seeing. Perhaps you see the same issue as here? https://github.com/microsoft/react-native-macos/issues/1738 If so, that is a known issue with 0.71 we're working on right now.


Docs build v3

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

File
Status
Preview URL
Details

.openpublishing.publish.config.json
:white_check_mark:Succeeded

docs/small-rect-str.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


List unpublished documents

We provide the raw XML and a JSON version of the data.

 Feed of unpublished things

👌


Update AnVIL Explorer Heder logo

Logo in progress
https://github.com/clevercanary/cc-design/issues/91

@frano-m the logo is ready. See the Figma on the referenced ticket


JupyterLab 4

https://github.com/jupyterlab/jupyterlab/issues/14590

What does this Issue mean?
Is the development for JupyerLab 4 in progress or not planned?


NRPE reports false positive on  /snap

NRPE is reporting Disk Space issues for snaps like:
Current Status:	  CRITICAL   (for 0d 0h 25m 53s)
Status Information:	DISK CRITICAL - free space: /snap/core/6405 0 MB (0% inode=0%): /snap/canonical-livepatch/54 0 MB (0% inode=0%):
Performance Data:	/dev=0MB;1176;1323;0;1470 /run=0MB;240;270;0;300 /=7790MB;29831;33560;0;37289 /dev/shm=0MB;1200;1350;0;1500 /run/lock=0MB;4;4;0;5 /sys/fs/cgroup=0MB;1200;1350;0;1500 /var/lib/lxd/shmounts=0MB;0;0;0;0 /var/lib/lxd/devlxd=0MB;0;0;0;0 /snap/core/6405=91MB;72;81;0;91 /snap/canonical-livepatch/54=7MB;5;6;0;7 /run/snapd/ns=0MB;240;270;0;300
However, snaps are supposed to occupy 100% of their loop devices, therefore this is a false-positive.

(by vlgrevtsev)
+1, it will be good to have this fixed.

(by chris.sanders)
This appears to be a duplicate of: https://bugs.launchpad.net/nrpe-charm/+bug/1710239


VERIFY-VHD-PREREQUISITES: sudoers check fail SLES 15

06/19/2019 03:07:16 AM : ERROR : Defaults targetpw is present in /etc sudoers but it is not commented.
/etc/sudoers:
## In the default (unconfigured) configuration, sudo asks for the root password.
## This allows use of an ordinary user account for administration of a freshly
## installed system. When configuring sudo, delete the two
## following lines:
Defaults targetpw   # ask for the password of the target user i.e. root
ALL   ALL=(ALL) ALL   # WARNING! Only use this together with 'Defaults targetpw'!

@juhlee-microsoft Here have below section for SLES distro, so that's the initial case design, I am not sure currently, should we remove this check?
Important: In "/etc/sudoers", comment out or remove the following lines if they exist:
Defaults targetpw # ask for the password of the target user i.e. root ALL ALL=(ALL) ALL # WARNING! Only use this together with 'Defaults targetpw'!

mail sent to distro vendor, wait for reply, then take further action.

Duplicate with #544


Strict type-checking mode won't work

I have installed LSP and LSP-pyright in Sublime Text 4 and included "python.analysis.typeCheckingMode": "strict" within the LSP-pyright.sublime-settings file but Pyright still won't raise any Type error when I wrote the following code:
def foo(x, y):
    return x + y

To add, it seems the basic type-checking mode still work since the code
import unknownpackage

makes Pyright raise reportMissingImports. So what seems to be the problem?

// Settings in here override those in "LSP-pyright/LSP-pyright.sublime-settings"

{
	"settings": {
		"python.analysis.typeCheckingMode": "strict"
	}
}


"Attach debugger to Android process" icon is disappeared in Android Studio

I use flutter for mixed development in Android Studio, but I found the 'Attach debugger to Android process' button is disappeared lately, how can I show again?
app settings.gradle
include ':app', ':flutterpro'
setBinding(new Binding([gradle: this]))                                 // new
evaluate(new File(                                                      // new
        settingsDir.parentFile,                                               // new
        'test/flutterpro/.android/include_flutter.groovy'                          // new
))

flutter env
[✓] Flutter (Channel stable, v1.9.1, on Mac OS X 10.15 19A602, locale zh-Hans-CN)
    • Flutter version 1.9.1 at /Users/fengwenxuan/Work/flutter
    • Framework revision c382b8e990 (3 个月前), 2019-08-18 15:22:36 -0400
    • Engine revision<PHONE_NUMBER>
    • Dart version 2.5.0

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
    • Android SDK at /Users/fengwenxuan/Work/AndroidSdk
    • Android NDK location not configured (optional; useful for native profiling
      support)
    • Platform android-29, build-tools 29.0.2
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.0)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.0, Build version 11A420a
    • CocoaPods version 1.8.3

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 41.1.2
    • Dart plugin version 191.8593
    • Java version OpenJDK Runtime Environment (build
      1.8.0_202-release-1483-b49-5587405

Hi @venshine
does this solution fix the issue?
thank you

It already solved, because I disable the flutter plugin.


[CARBONDATA-57] BLOCK distribution un wanted wait for the executor node even though the sufficient nodes are available

Modification:
No need to wait if the existing executors are more than or equal to the required executors.

retest this please


Update span name recommendation for HTTP Server

This is to bring it inline with: https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-spans.md#http-server-semantic-conventions
Merge requirement checklist

[ ] CONTRIBUTING.md guidelines followed.
[ ] CHANGELOG.md updated for non-trivial changes.
[ ] schema-next.yaml updated with changes to existing conventions.

@gouthamve Please rebase to make the checks pass.

I think the link in the description should be https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http-metrics.md#http-server
Shouldn't you also update the examples?

@gouthamve
I don't fully get the change here, I guess I'm missing some context here.
Why would we stop recommending to use the route in HTTP server span names?

@AlexanderWert

I don't fully get the change here, I guess I'm missing some context here.
Why would we stop recommending to use the route in HTTP server span names?

It's not about not using the route anymore. How to set the span name is clearly defined in a dedicated section of this document:

HTTP server span names SHOULD be {method} {http.route} if there is a (low-cardinality) http.route available (see below for the exact definition of the [{method}](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http spans.md#method-placeholder) placeholder).
If there is no (low-cardinality) http.route available, HTTP server span names SHOULD be {method}.

The paragraph to remove in this PR suggested that the span name should be set just to {http.route}, without a trailing {method}. That's incorrect.

@AlexanderWert

I don't fully get the change here, I guess I'm missing some context here.
Why would we stop recommending to use the route in HTTP server span names?

It's not about not using the route anymore. How to set the span name is clearly defined in a dedicated section of this document:

HTTP server span names SHOULD be {method} {http.route} if there is a (low-cardinality) http.route available (see below for the exact definition of the [{method}](https://github.com/open-telemetry/semantic-conventions/blob/main/docs/http/http spans.md#method-placeholder) placeholder).
If there is no (low-cardinality) http.route available, HTTP server span names SHOULD be {method}.

The paragraph to remove in this PR suggested that the span name should be set just to {http.route}, without a trailing {method}. That's incorrect.

@pyohannes Thanks! Now I get it!

@open-telemetry/specs-semconv-maintainers I think this is good to merge


Enable task fusion

Uses SubgraphCallable to enable task fusion between expressions satisfying the Fusable protocol.

Thanks for starting this @rjzamora .  I'm glad to see how something like this can be done, as you say, pretty easily.  I'm curious how simple/separable we can make this.
If I were to approach this problem, I would probably avoid the IO case at first, and just focus on blockwise operations.  I would probably make a new Expr class BlockwiseFused or something, and add a new optimization function that swaps out lots of Blockwise/Fusable operations with fewer BlockwiseFused operations.  I would then break open optimize_expr to have both this, and the term-rewrite-system stuff from matchpy as different passes.
I probably wouldn't worry yet about things like config.
Then, once we got that very clean, I would then consider complications to that, like IO, and see if different things made sense.

If I were to approach this problem, I would probably avoid the IO case at first, and just focus on blockwise operations.

This probably makes sense. The critical importance of IO fusion in the past affected my goals here. I'm sure task queuing makes this less critical now.

I would probably make a new Expr class BlockwiseFused or something, and add a new optimization function that swaps out lots of Blockwise/Fusable operations with fewer BlockwiseFused operations. I would then break open optimize_expr to have both this, and the term-rewrite-system stuff from matchpy as different passes.

As I mentioned in a comment above, this plan makes a lot of sense and is exactly what I originally wanted to do. There is a good chance that I'll come back around to wanting to do something like this. However, at the moment I'm a bit worried about rewriting the expression tree for graph-related purposes like fusion and/or culling. Instead, I'd like these these consideration to only come into play at graph-materialization time, instead of at Expr-optimization time.

With that in mind, I currently like the idea of only applying fusion at graph-materialization time.

At the moment I'm not convinced.  I'm open to talk about this live if you like.

However, at the moment I'm a bit worried about rewriting the expression tree for graph-related purposes like fusion and/or culling.

I don't think that these matter any longer at this level.

At the moment I'm not convinced. I'm open to talk about this live if you like.

I understand the feeling. I'm trying to convince myself that it's a good idea to use a second round of replacement for fusion, and that we can leave out IO. My gut tells me that we are walking into a trap in both cases, but my lack in confidence tells me I should keep pondering things.
I suppose we are probably on the same page about wanting "simplicity."  For me, it just seems pretty complex to add a specialized replacement phase for the sole purpose of Blockwise fusion when the only thing one "should" be able to do after such an optimization is performed is materialize the graph. However, this design is consistent with the current behavior of HLG layers, and users may like to visualize fusion at the Expr-tree level.  Therefore, I can imagine myself getting on board with this.
At the moment, I'm actually a bit more worried about leaving out IO in the original design, unless I know for sure that other mechanisms can guarantee that an IO task will effectively be performed within the same compute unit as a succeeding Blockwise task, without there being any chance for spilling or work-stealing in-between. I would hate to design a "complicated but elegant" solution that formalizes Expr-level fusion while leaving out IO, only to need to add back an IO complication later on. If I discover that my worries about IO existing as a distinct task are unfounded, then I can get on board on this front as well.
Overall, I do want the final design to be as simple as possible.

I don't think that these matter any longer at this level.

Can you expand on this a bit? Right now the Expr._layer implementations all assume that we are generating tasks for every partition in the collection. If we want to support "efficient" head/tail, or leverage divisions/partition-statistics,  we will probably want to avoid materializing the full layer for each expression.

Do you have some time to chat through things live?  I think that having the
two of us sync up on this would be helpful.  My calendar is available at
https://calendly.com/mrocklin if any of those times work for you.  If you
have a calendar I'm also happy to work from that.
On Mon, Apr 3, 2023 at 11:36 AM Richard (Rick) Zamora <
@.***> wrote:

At the moment I'm not convinced. I'm open to talk about this live if you
like.
I understand the feeling. I'm trying to convince myself that it's a good
idea to use a second round of replacement for fusion, and that we can leave
out IO. My gut tells me that we are walking into a trap in both cases, but
my lack in confidence tells me I should keep pondering things.
I suppose we are probably on the same page about wanting "simplicity." For
me, it just seems pretty complex to add a specialized replacement phase for
the sole purpose of Blockwise fusion when the only thing one "should" be
able to do after such an optimization is performed is materialize the
graph. However, this design is consistent with the current behavior of HLG
layers, and users may like to visualize fusion at the Expr-tree level.
Therefore, I can imagine myself getting on board with this.
At the moment, I'm actually a bit more worried about leaving out IO in the
original design, unless I know for sure that other mechanisms can guarantee
that an IO task will effectively be performed within the same compute unit
as a succeeding Blockwise task, without there being any chance for
spilling or work-stealing in-between. I would hate to design a "complicated
but elegant" solution that formalizes Expr-level fusion while leaving out
IO, only to need to add back an IO complication later on. If I discover
that my worries about IO existing as a distinct task are unfounded, then I
can get on board on this front as well.
Overall, I do want the final design to be as simple as possible.
I don't think that these matter any longer at this level.
Can you expand on this a bit? Right now the Expr._layer implementations
all assume that we are generating tasks for every partition in the
collection. If we want to support "efficient" head/tail, or leverage
divisions/partition-statistics, we will probably want to avoid
materializing the full layer for each expression.
—
Reply to this email directly, view it on GitHub
https://github.com/mrocklin/dask-match/pull/11#issuecomment-1494641221,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AACKZTFWFMA535DO3LMGZ4LW7L4ALANCNFSM6AAAAAAWOXYFDA
.
You are receiving this because you commented.Message ID:
@.***>

For me, it just seems pretty complex to add a specialized replacement phase for the sole purpose of Blockwise fusion when the only thing one "should" be able to do after such an optimization is performed is materialize the graph

I think that when you say "replacement phase" you mean the term I know of as "optimization pass".  If so, then I don't think that this is complex because I think that we're going to have many different optimization passes.  If I can write something as an optimization pass then I'm going to do so because that's an easy place to expand broadly.

I'm actually a bit more worried about leaving out IO in the original design,

Ideally we would design something that wouldn't "paint ourselves into a corner".  We'd be smart enough to know that we coud go down this path easily in the future, without explicitly going down that path.  Writing simple things that don't result in traps is, I think, the key to simple and iterative design.

Right now the Expr._layer implementations all assume that we are generating tasks for every partition in the collection. If we want to support "efficient" head/tail, or leverage divisions/partition-statistics, we will probably want to avoid materializing the full layer for each expression

I think that high level optimization will give us what we want here.  For example I would expect optimizations to push Head down pretty far in the expression tree.  Same with any other single-partition operation.

@rjzamora and I spoke.  I'm more open to the IO fusion, especially if we include the fusion of multiple inputs.  The conversation helped to remind me of the following case:
a = df.read_parquet(..., columns="a")
b = df.read_parquet(..., columns="b")

(a + b).sum().compute()

We want to make sure that the partitions of a and the partitions of b are loaded onto the same machine.

In symbolic expression tree parlance I think that I'm hearing two things:

We need to get better at tree traversals and replacement strategies
We need to support expressions with variadic dependencies

I agree with both of these statements.  I don't know if matchpy has a

For the first point, I wouldn't think of this as replacement, but rather rebuilding. This should be relatively easy because type(obj)(*obj.operands) should just work in all cases (this is what we get by not implementing init anywhere.

Yes, agree with this. The tree rebuilding logic is not difficult.

For the second point matchpy certainly supports variadic expressions. We'll have to make sure that we don't break this anywhere in our code, like ExprMeta

Makes sense. If matchpy already supports it, then I'll try to work out a clean way to handle variadic dependencies in Expr.

Makes sense. If matchpy already supports it, then I'll try to work out a clean way to handle variadic dependencies in Expr

I'm not sure that we have to do anything here.  Here is an example that would maybe work?
class AddMany(Expr):
    @property
    def _meta(self):
        out = self.operands[0]
        for op in self.operands:
            if hasattr(op, "_meta"):
                op = op._meta()
            out = out + op
        return out

    def _divisions(self):
        return self.operands[0].divisions

You are correct - I didn't realize I was allowed to pass in operands without naming them. My mistake!

Closing this in favor of #15


Gimbal lock may be?

Hi, thank you for the good work.
While working with Kalman filter for orientation, I have noticed that if the pitch value goes to 90 degrees, the angular measurements go crazy afterward. I can see many unwanted spikes in the readings after the pitch=90 condition. I think it is due to gimbal lock.
Any thoughts? Please look at the roll and yaw after the suspected gimbal lock.

Hi,
I am currently traveling, I will be back around July end.
Thank You
Niranjan
On Thu, Jun 8, 2023 at 9:46 AM Saad Waqar @.***> wrote:

Hi, thank you for the good work.
While working with Kalman filter for orientation, I have noticed that if
the pitch value goes to 90 degrees, the angular measurements go crazy
afterward. I can see many unwanted spikes in the readings after the
pitch=90 condition. I think it is due to gimbal lock.
Any thoughts? Please look at the roll and yaw after the suspected gimbal
lock.
[image: gimbal_lock]
https://user-images.githubusercontent.com/62258090/244302555-9ac3d8f5-ac32-4e5e-b3b0-8c6854b468a3.png
—
Reply to this email directly, view it on GitHub
https://github.com/niru-5/imusensor/issues/24, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AQATMQXB4NOCQ4UC57REHTDXKF7NDANCNFSM6AAAAAAY645ZB4
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>


Add encryption of lnd database

Currently, if somebody gets access or stole machine with lnd, he can easily claim all funds in lnd.
The solution is to save some parts of lnd database in encrypted format.
To open it password/passphrase should be entered.

The wallet database is already stored in an encrypted format, with both an optional public passphrase (for addresses, public keys, imported scripts, etc), and a private pass phrase (for private keys, etc).
Currently, both the public and private passphrase are set to hard-coded default values. This was done early in development as the software wasn't ready for use with real funds, and it made scripting and testing lnd much easer.
The missing component here is to poll the users for the private (and optionally also the public passphrase) upon startup of the daemon. RPC calls (once macaroons have been implemented) will be guarded by the presentation of the particular bearer credential for a particular RPC call. As a result, I don't foresee see any issues with attacker exploitable RPC race conditions.
The implementation SHOULD NOT accept the passphrase as a command line argument, or a configuration option. Instead, IMO the software should poll the users for their passphrase upon startup, in order to avoid a local tty echo when entering the password, the ReadPassword function within the terminal package should be used.
The underlying passphrase implementation uses scrypt along with a salt derived via a CSPRNG, as a key-derivation function to stretch out the passphrase into a strong key for usage to decrypt/encrypt the sensitive portions of the wallet database.
Finally, to complete the set up (to ensure macaroons aren't transmitted in clear text), RPC server should be extended to either use self-signed certificates, or create a custom transport which uses brontide.

Nice explanation.
I have one concern. If somebody wants to create GUI interface to lnd he would not be able to unlock wallet programmatically. Maybe add command option:

(Default) Unlock wallet from command line using ReadPassword
Unlock using RPC call.
Use default values for locking/unlocking. Useful for tests.

I fail to see how with what I described above, one wouldn't be able to unlock the wallet from the GUI in a programmatic manner. Seems all one would need to do is pipe the standard input from the GUI into lnd. The GUI wouldn't attempt to start lnd before the passphrase was entered.
Agreed that it would be nice to have an option which reverted to using the default values (as is used by default currently).

ReadPassword "checks" if STDIN is a tty device. When stdin is piped it is not a tty.
So ReadPassword fails.
It is not possible to simply pipe into a program which requires input from a terminal.
Consider this small program:
package main

import (
	"fmt"
	"golang.org/x/crypto/ssh/terminal"
)

func main() {
	p, err := terminal.ReadPassword(0)
	fmt.Println("p=", p)
	fmt.Println("err=", err)
}

When it is launched from terminal
$ ./readpass
<Enter in terminal 'some'>
p=some
err= <nil>

$ echo 'some' | ./readpass
p=
err= inappropriate ioctl for device

This possibly can be solved using expect, but unbuffer  does not work with Go ReadTerminal.
That is why it would be nice to add some programmatic way of entering passphrase like RPC call or --read-passphrase-from-file command line option.

@Roasbeef
Do you still think that using terminal only for the passphrase is enough?

Heya,
Thanks for that example, and the sample code as well! I agree that there needs to be at least one more option w.r.t initial authentication.
@aakselrod is currently working on our initial support for macaroons. Along with that set of changes, we'll also be implementing default (with an option to toggle off) required TLS connections in order to communicate with the gRPC server. This is required as certain RPC's will now at times be carrying sensitive data (like the macaroons).
I'm currently leaning towards an option along the liens of --read-passphrase-from-file as that'll be the most minimal diff in order to implementation this functionality in a useful way. If we go the RPC route, then some of the initial daemon initialization will need to be modified as currently the wallet is created and started before the RPC server is brought up.

Mulled it over a bit and decided that the read from a file option promotes poor security practices on the side of the client. Instead, I think we should pursue the RPC pass. However, this can only land in after Alex's initial macaroon work which will add the TLS defaults.

It seems that macaroon gets merged, so I will proceed.

@BitfuryLightning did you continue working on this? If not, I will take it over :)


User plugins spark factory

Coverage decreased (-0.03%) to 47.126% when pulling c32827da736449d1e69ee76478a4aae0d84bac3b on compae:bug/plugins-spark-factory into ce762ccb2325cd7335b33b00f3616dc1cd848701 on Stratio:master.


Update meta tags to reflect wp.org

Description

The meta tags in nuxt.config.js are out of date and should be updated to direct to WP.org rather than CC.
Resolution

[ ] 🙋 I would be interested in resolving this bug.

👍 We have other issues for more specific SEO issues, so sounds good.