Ability to Inject a React Component into WebView?

While the injectedJavaScript allows for the passing of flat, ES5 javascript to a WebView, is there a way to pass in a web React component to WebView? By that I mean, pass it in locally by import (not pointing to a webpage online)? Something along the lines of:
import MySuperComplexD3WebComponent from 'somewhere';

<WebView
  injectedJavaScript={<MySuperComplexD3WebComponent data={data} />}
/>

This would allow the WebView component to serve as a true renderer for normal react web components rather than having to rely on an http connection to present an already-rendered component living somewhere online.

The component is also dependent on a javascript library, would it be possible to load that library via import or to inject a script tag like this?
<script src="//d3js.org/d3.v4.min.js"></script>

Per https://github.com/facebook/react-native/issues/505, it looks like:
<WebView
  source={require('./asd.html')}
/>

is a viable, cross-platform workaround. Would love to be able to use a React Component directly rather than a flat HTML document tho.

I think it's better if you use a custom HTML file to achieve what you want. It's unlikely that this kind of thing will be supported in React Native core, since the focus is more on improving the native components rather than support interop between <WebView> and RN code.
This shouldn't be very difficult to do with a third party component. Please publish your component to NPM if you manage to do so :D
I'm closing this issue for now. Please file it in product pains if you still think that this is an important feature and should be part of the core.

For anyone looking to achieve what I was, I was able to get it to work by interpolating HTML and JavaScript directly in my React component and feeding the output to WebView. Any external dependencies are loaded via script tags in the HTML:
class LineChart extends Component {
  render() {
    const {
      decimalChange,
      height,
      id,
      ohlcData,
      showAxes,
      showGridlines,
      width,
    } = this.props;

    const chartData = JSON.stringify(
      ohlcData.get('data').toJS()
    );

    const injectScript = `
      var chart = function () {
        ...
        // d3 code goes in here
        ...
      }

      chart();
    `;

    const html = `
      <!DOCTYPE html>
      <html>

        <head>

          <meta charset="utf-8">

          <style>
            ...
            // chart CSS goes in here
            ...
          </style>

          <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.1.1/d3.min.js"></script> // d3 is loaded here
</script>

        </head>

        <body>
          <div
            id="${id}"
            style="width: ${width}px; height: ${height}px;"
          ></div>
        </body>

      </html>
    `;

    return (
      <WebView
        injectedJavaScript={injectScript}
        source={{
          html,
        }}
        startInLoadingState={true}
        style={{
          height,
          width,
        }}
      />
    );
  }
}

export default LineChart;

Is there a way to load an npm dependency into the web view? - other than as a string wrapped in a script tag?

onMessage API has anything to do with this injectedJavaScript??


Snapshot with high resolution starts shows the same still image after a while

Hello,
Thanks for a great work on hacking this camera!
It works well for me most of the time, though i'm experiencing some weird issue with image snapshot in high resolution when camera runs for a day or so.
I use it with Home Assistant by defining it as generic camera in such a way:
- platform: generic
  name: Living Room Panoramic Camera
  stream_source: rtsp://<IP_ADDRESS>:554/ch0_0.h264
  still_image_url: http://<IP_ADDRESS>:8080/cgi-bin/snapshot.sh?res=high&watermark=yes
  verify_ssl: false

As you can see, i set res to "high".
In lovelace i define it like so:
- aspect_ratio: 50%
  camera_view: live
  entity: camera.living_room_panoramic_camera
  type: picture-entity

With such a definition Home Assistant query camera's snapshot endpoint now and then when you are looking at it via UI.
After ~day camera starts showing outdated image that never change (watermark changes though and rtsp works as well). The only way to fix it is to reboot the camera.
If i switch back to "low" res, it works without any issues.
Is it a bug or just some misconfiguration on my side?
P.S.: Is there any chance to implement "mid" res suppose? Low res resolution is too small, high res is fine, but quite slow.
Regards, Alex

Forgot to mention: i tried enabling / disabling SWAP - the same result

I think it could be a bug.
I will check it.
About mid res, unfortunately it's not possible.
PS Did you try to define the camera as onvif in ha? With the release 0.110 it works very well.

Thanks for your reply. I did try onvif integration, but to be fair, it is quite slow for me.
Possible, it's because of my Raspberry Pi 3B+ is not powerful enough for decoding / encoding streams.
It's one of the reasons why i use static images most of the time.

I checked it on my cam after 2 days and the snapshot is ok.
When the problem happens again, please check these things:

Check if framefinder process is running (with ps command).
Check if the content of the file /tmp/iframe.idx changes (with hexdump command).

Issue without response for 14 days.
Closed.

https://github.com/roleoroleo/yi-hack-Allwinner/issues/35#issuecomment-659207376


[release-1.5] support timeout retention on livez and readyz probe rewrite (fixes #18242)

Manual cherry-pick of https://github.com/istio/istio/pull/21615

@googlebot I consent.


Update  R installation instructions on main doc-site.

TO DO: test installation instructions in fresh environments (docker container for linux, wiped R installation on macOS). thanks @atolopko-czi for noticing pitfalls

Completed in #684


New command: Remove a site column from a content type

Remove a site column from a content type
command: spo contenttype field remove -u|--webUrl <webUrl> -c|--contentTypeId <contentTypeId> -f|--fieldId <fieldId> --confirm

webUrl: Absolute URL of the site where the content type is located
contentTypeId: ID of the content type from which the field reference should be removed
fieldId: ID of the field to which the reference should be removed
confirm: Don't prompt for confirming removing the field reference from content type

You want to take it @phawrylak?

@waldekmastykarz, yes, I will take it.

@phawrylak Are you still working on this?

Hey @waldekmastykarz , just started working on that.

Awesome! Great to have you with us! Don't hesitate to reach out if you have any questions 💪


[HOLD for payment 2023-10-02] [$500] Settings - Help -User can not scroll to to the bottom of the page.

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:
1.Login and then open Settings.
2. open help.
3. tap on search icon.
4. type in the search field. I have entered "other" in it,
5. When the search list shows up try to scroll down , it stuck after a little scroll, User can not go though the whole list.
Expected Result:
User should see through whole list.
Actual Result:
User gets stuck while scrolling the list.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[x] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: v1.3.69-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/115492554/7a7ea8c3-deed-4f99-a49d-523923a935cd
https://github.com/Expensify/App/assets/115492554/06ac4df2-f763-4d5e-acbc-29cbb26d5f6b
Expensify/Expensify Issue URL:
Issue reported by: @Harshizonnet
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1693664400580059
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01a29391c5d4456b92
Upwork Job ID:<PHONE_NUMBER>607357440
Last Price Increase: 2023-09-13
Automatic offers:

ntdiary | Reviewer | 26722324
Harshizonnet | Reporter | 26722326

Problem Statement:
Upon logging in and navigating to Settings, when a user accesses the help section and initiates a search (for instance, by entering "other"), the resulting search list becomes unresponsive after a brief scroll. This behavior prevents users from viewing the entirety of the search results. The expected behavior is for users to be able to seamlessly scroll through the full list without any hindrance. As of now, there is no known workaround for this issue.

Root Cause:
On the Android platform, the last item in the search list is partially obscured by the bottom bar, leading users to believe the list is truncated. Verification on Windows Chrome has confirmed that the last item displayed on Android is the final list entry, but it's not fully visible.

Proposed Solution:
Introduce additional padding at the end of the search list specifically for the Android platform to ensure that the last item is fully visible above the Android bottom bar.
Alternative Solution:
Re-evaluate the mobile-responsive design elements of the search list on Android. Consider adjusting the overall layout to ensure all items, including the last one, are fully visible.

Problem Statement:
On Android devices, when users access the search functionality and try to view the results, the last item in the list is partially obscured by the Android bottom navigation bar. This behavior makes it appear as though the list is truncated and prevents users from viewing the entire content.
Root Cause:
The web content is rendered in such a way that the total height of the content, including the search results, extends to the bottom edge of the viewport. As a result, the Android bottom navigation bar overlaps with the final items, obscuring them from view.
Proposed Solution:
Adjust the padding or margin at the bottom of the content container (or the search results container) to account for the height of the Android bottom bar. This additional spacing will ensure the last item in the list is fully visible above the Android bottom bar.
#content-area {
    padding-bottom: 60px; /* or an appropriate value based on the average height of the Android bottom bar */
}

Alternative Solutions:

Use a Sticky Footer:
Design the footer to always stick to the bottom, pushing the content upwards. This ensures that even if users scroll down, the content remains above the bottom bar.

Dynamic Resizing with Event Listeners:
Attach a resize event listener to the window. If the height changes without a corresponding change in width (indicating the appearance or disappearance of the navigation bar), adjust the content's bottom padding.

Progressive Web App (PWA) Approach:
If this is a Progressive Web App, consider using a display: standalone or display: fullscreen property in the web app manifest. This ensures the content is displayed in a standalone or fullscreen mode, respectively, reducing browser UI obstructions.

Mobile-specific Styles:
Use media queries to apply specific styles for mobile devices, ensuring that the content is always above the bottom bar:

@media (max-width: 600px) { /* or other breakpoint for mobile devices */
    #content-area {
        padding-bottom: 60px;
    }
}

Feedback-driven UI Adjustment:
Integrate a feedback mechanism where users can report UI issues. Use this feedback to gather data on devices where the problem persists and fine-tune the solution for those specific devices.

Test with Different Mobile Browsers:
The issue might not be consistent across all mobile browsers. Testing on different browsers (like Firefox, Samsung Internet, etc.) can provide insights into whether the problem is browser-specific and if certain browsers have built-in solutions.

Problem Statement:
On certain devices, especially Android, users are unable to scroll to the bottom of the search results page in the Expensify Help section. The content is hidden, resulting in a truncated list.
Root Cause:
The max-height for the search page content is set to a static value of 80vh. On some devices, particularly those with prominent browser UI elements or navigation bars, this causes content to overflow and be obscured.
Proposed Solution:

Flexible Container Height with CSS Variables:
Use CSS variables (custom properties) to dynamically adjust the height based on device characteristics.
:root {
    --dynamic-max-height: calc(100vh - 150px);
    --tablet-max-height: calc(100vh - 220px);
}

#sidebar-search {
    max-height: var(--dynamic-max-height);
    overflow-y: scroll;
}

@media only screen and (max-width: $breakpoint-tablet) {
    #sidebar-search {
        max-height: var(--tablet-max-height);
    }
}

Alternative Solution:

JavaScript-based Dynamic Adjustment: Detect the presence of an Android navigation bar or any other UI elements and adjust the max-height accordingly.
const searchBar = document.getElementById('sidebar-search');
const navBarHeight = getAndroidNavBarHeight();  // This function detects the nav bar height

if (navBarHeight) {
    const adjustedHeight = `calc(100vh - ${navBarHeight}px)`;
    searchBar.style.maxHeight = adjustedHeight;
}

Viewport Units with Fallback: Utilize a combination of viewport units (vh and vw) along with pixel units for better compatibility.
#sidebar-search {
    max-height: calc(100vh - 150px);
    max-height: calc(100% - 150px);
    overflow-y: scroll;
}

User Feedback Mechanism: Implement a system for users to report display issues, and use this feedback to fine-tune the solution.

@JmillsExpensify It looks like this issue is waiting on you. I assume you've been traveling the last couple of days, so I am hopeful this will be addressed soon.

Thanks @ntdiary for completing the BZ checklist!
Payment summary:

Issue reporter: @Harshizonnet $50
Contributor: @suneox $1,000 (incl. urgency bonus)
Contributor+: @ntdiary $1,000 (incl. urgency bonus)

Payments sent to issue reporter and contributor+. Offer sent to contributor. Once that is complete, we'll close this issue out.

Great catch! Yes, you're right. Updated above


Indexing stuck at one reinscription curse. Should have the ability to ignore the error and continue indexing.

Dear team,
I am new to ordinal world, trying to build a project based on ordhook. I am using ordhook-cli 2.0.0.
While running following command:
ordhook db sync --config-path=./OrdhookTest.toml
I got an error as following the process just stuck there forever, is there any workaround that I can let the process ignore that curse and continue syncing the db? Thank you very much!
I noticed 2 interesting point:

The current btc testnet block height=2816450, but I see in the error message: ordinal_block_height: 292362 which is in the future, that is very confusing to me. I checked the inscription_id in hord.sqlite, that inscription_id was inscribed at block 2815540. And the db sync is stuck at block #2815541.
The classic ordinal number is a negative number: classic: -2789

Here is the error log:
May 19 21:04:55.323 WARN unable to insert inscription in hord.sqlite: UNIQUE constraint failed: inscriptions.inscription_id - OrdinalInscriptionRevealData { content_bytes: "0x406d6f746f3a737761703a3a636272632d32303a737761703f61623d50495a5a412d5741474d4926613d3126623d302e3030303030313433", content_type: "text/plain", content_length: 56, inscription_number: OrdinalInscriptionNumber { classic: -2789, jubilee: 54631544 }, inscription_fee: 4550, inscription_output_value: 330, inscription_id: "0a7a4676da36cecae5591dd557d73d04ff8b0a3ad95dd09add86b5d00d32e9a1i0", inscription_input_index: 0, inscription_pointer: None, inscriber_address: Some("tb1pffdrehs8455lgnwquggf4dzf6jduz8v7d2usflyujq4ggh4jaapqpfjj83"), delegate: None, metaprotocol: Some("@moto:swap::cbrc-20:swap?ab=PIZZA-WAGMI&a=1&b=0.00000143"), metadata: None, parent: None, ordinal_number:<PHONE_NUMBER>357361, ordinal_block_height: 292362, ordinal_offset:<PHONE_NUMBER>, tx_index: 1023, transfers_pre_inscription: 692, satpoint_post_inscription: "0a7a4676da36cecae5591dd557d73d04ff8b0a3ad95dd09add86b5d00d32e9a1:0:0", curse_type: Some(Reinscription) }

Hello world

Hello world

Thanks for your feedback @tiehoo. I'll close this issue, as we're already tracking this problem here: https://github.com/hirosystems/ordhook/issues/292.


Exponential planning time (100s of seconds) with UNION and ORDER BY queries

Describe the bug
Our internal system generates queries that look like the following
select c1, null as c2, ... null as cn from t ORDER BY c1
   UNION ALL
 select null as c1, c2, ... null as cn from t ORDER BY c2
 ...
 select null as c1, null as c2, ... cn from t ORDER BY cn
  ORDER BY c1, c2 ... CN

When there are 10 columns this takes 22 ms (in release mode) to plan (which is still quite a while)
When there are 100 columns, it takes over 2 minutes (!!) to plan, which basically caused two production incidents
Here are some timings with numbers of columns (you can see the exponential growth):
Running with 10 columns...completed in 22.65575ms
Running with 20 columns...completed in 107.885ms
Running with 30 columns...completed in 481.31775ms
Running with 40 columns...completed in 1.656844042s
Running with 50 columns...completed in 4.560470708s
Running with 60 columns...completed in 10.54814975s
Running with 70 columns...completed in 21.993968458s
Running with 80 columns...completed in 41.614843209s
Running with 90 columns...completed in 73.642939542s
Running with 100 columns...completed in<PHONE_NUMBER>17s
To Reproduce
With this data file (has 100 columns): data.csv
Create Table
CREATE EXTERNAL TABLE t STORED AS CSV LOCATION 'data.csv' WITH ORDER (c1)

Run query
40 column version (this takes over a second to plan in release mode)
(SELECT c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c0)
  UNION ALL
(SELECT null as c0, c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c1)
  UNION ALL
(SELECT null as c0, null as c1, c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c2)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c3)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c4)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c5)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c6)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c7)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c8)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c9)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c10)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c11)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c12)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c13)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c14)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c15)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c16)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c17)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c18)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c19)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c20)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c21)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c22)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c23)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c24)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c25)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c26)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c27)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c28)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c29)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c30)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c31)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c32)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, c33, null as c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c33)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, c34, null as c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c34)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, c35, null as c36, null as c37, null as c38, null as c39 FROM t ORDER BY c35)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, c36, null as c37, null as c38, null as c39 FROM t ORDER BY c36)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, c37, null as c38, null as c39 FROM t ORDER BY c37)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, c38, null as c39 FROM t ORDER BY c38)
  UNION ALL
(SELECT null as c0, null as c1, null as c2, null as c3, null as c4, null as c5, null as c6, null as c7, null as c8, null as c9, null as c10, null as c11, null as c12, null as c13, null as c14, null as c15, null as c16, null as c17, null as c18, null as c19, null as c20, null as c21, null as c22, null as c23, null as c24, null as c25, null as c26, null as c27, null as c28, null as c29, null as c30, null as c31, null as c32, null as c33, null as c34, null as c35, null as c36, null as c37, null as c38, c39 FROM t ORDER BY c39)
ORDER BY c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30, c31, c32, c33, c34, c35, c36, c37, c38, c39

Expected behavior
I expect that the query plans within a second with 100 columns
Additional context
The code spends an increasing amount of time in :
27.22 Gc  99.9%	-	                  datafusion_physical_expr::equivalence::properties::calculate_union::h9a6d0c834d33dfa8
27.20 Gc  99.9%	2.00 Mc	                   datafusion_physical_expr::equivalence::properties::UnionEquivalentOrderingBuilder::add_satisfied_orderings::haff5d34880826c26
27.20 Gc  99.8%	-	                    datafusion_physical_expr::equivalence::properties::EquivalenceProperties::ordering_satisfy_requirement::h7800d9c061e4551e
26.94 Gc  98.9%	2.00 Mc	                     datafusion_physical_expr::equivalence::properties::EquivalenceProperties::with_constants::h9b627573961f7ac1
26.72 Gc  98.1%	17.83 Mc	                      datafusion_physical_expr::equivalence::properties::EquivalenceProperties::discover_new_orderings::hdb50bd332b5dedd2
21.92 Gc  80.5%	3.85 Gc	                       datafusion_physical_expr::equivalence::ordering::OrderingEquivalenceClass::remove_redundant_entries::h3394f8a44ca387d2
2.52 Gc   9.2%	5.25 Mc	                       _$LT$alloc..vec..Vec$LT$T$GT$$u20$as$u20$alloc..vec..spec_from_iter..SpecFromIter$LT$T$C$I$GT$$GT$::from_iter::hb5d026af61b973ba
2.12 Gc   7.8%	2.03 Gc	                       _$LT$datafusion_physical_expr..expressions..column..Column$u20$as$u20$core..cmp..PartialEq$LT$dyn$u20$core..any..Any$GT$$GT$::eq::h7faccabfc76823d5

This particularly bad behavior was introduced in https://github.com/influxdata/arrow-datafusion/commit/577e4bba0f5838846862621e1f5318c949cff2cb / https://github.com/apache/datafusion/pull/12562 (🤦  myself)
I think this is also what @berkaysynnada  was warning us in https://github.com/apache/datafusion/issues/12446#issuecomment-2368579422

I tested this with various released versions:
42.0.0:
Worst case takes 7.5 seconds
Running with 10 columns...completed in 25.767125ms
Running with 20 columns...completed in 59.605292ms
Running with 30 columns...completed in 151.040583ms
Running with 40 columns...completed in 352.528417ms
Running with 50 columns...completed in 701.194625ms
Running with 60 columns...completed in 1.259548375s
Running with 70 columns...completed in 2.142141458s
Running with 80 columns...completed in 3.42683925s
Running with 90 columns...completed in 5.22279025s
Running with 100 columns...completed in 7.59148425s

43.0.0:
Same as reported above<PHONE_NUMBER>17s)
main
I also tested with main as of now: https://github.com/apache/datafusion/commit/36a1361807060b5221291e5c8a7d59d7acf7954a
It is better, but still quite a bit worse than 42
Running with 10 columns...completed in 35.857458ms
Running with 20 columns...completed in 102.454125ms
Running with 30 columns...completed in 429.636584ms
Running with 40 columns...completed in 1.403798625s
Running with 50 columns...completed in 3.770518708s
Running with 60 columns...completed in 8.758160834s
Running with 70 columns...completed in 18.022044708s
Running with 80 columns...completed in 34.337127625s
Running with 90 columns...completed in 60.926777084s
Running with 100 columns...completed in<PHONE_NUMBER>75s

BTW here is the code I am using to generate those numbers (it is pretty grotty)
Details

// DataFusion spilling sort benchmark / exmaples
// Idea is to replicate a report from  https://discord.com/channels/885562378132000778/1166447479609376850/1276137008435298335
// where sort doesn't spill

// Related link: sorting strings

use std::fs::File;
use std::path::PathBuf;
use datafusion::arrow::array::{ArrayRef, Int32Array};
use datafusion::arrow::datatypes::{Field, Fields, Schema};
use datafusion::arrow::record_batch::RecordBatch;
use datafusion::error::Result;
use std::sync::Arc;
use datafusion::arrow;
use datafusion::prelude::SessionContext;

#[tokio::main]
async fn main() -> Result<()> {
    // initialize logging to see DataFusion's internal logging
    std::env::set_var("RUST_LOG", "info");
    env_logger::init();

    let ctx = SessionContext::new();
    let n = 100;
    make_table(n);
    ctx.sql(&format!("CREATE EXTERNAL TABLE t({})  STORED AS CSV LOCATION 'data.csv' WITH ORDER (c1)", column_list(100))).await?
        .show().await?;

    println!("10 columns");
    println!("{}", make_query(10));

    println!("40 columns");
    println!("{}", make_query(40));

    for n in [10, 20, 30, 40, 50, 60, 70, 80, 90, 100] {
        let sql = make_query(n);
        print!("Running with {n} columns");
        let start = std::time::Instant::now();
        ctx.sql(&sql).await?.collect().await?;
        let elapsed = start.elapsed();
        println!("...completed in {:?}", elapsed);
    }
    Ok(())
}

fn column_list(n: usize) -> String {
    (0..n)
        .map(|i| format!("c{} int", i))
        .collect::<Vec<_>>()
        .join(", ")
}

/// Writes a table like this to CSV file
/// c1: int, c2: int, c3: int....cn:int
///
/// returns the filename
fn make_table(n: usize) -> PathBuf {
    let path = PathBuf::from("data.csv");
    let arrays = (0..n)
        .map(|i| {
            let i = i as i32;
            let n = n as i32;
            Arc::new(Int32Array::from(vec![i * n, 2 * i * n, 3 * i * n])) as ArrayRef
        })
        .collect::<Vec<_>>();

    let schema = Schema::new(Fields::from(
        arrays
            .iter()
            .enumerate()
            .map(|(i, arr)| Field::new(&format!("c{}", i), arr.data_type().clone(), false))
            .collect::<Vec<_>>(),
    ));

    let batch = RecordBatch::try_new(Arc::new(schema), arrays).unwrap();
    let file = File::create(&path).unwrap();
    let mut writer = arrow::csv::Writer::new(file);
    writer.write(&batch).unwrap();
    // flush on drop
    // writer.into_inner();
    path
}

/// return a query like
/// ```sql
/// select c1, null as c2, ... null as cn from t ORDER BY c1
///   UNION ALL
/// select null as c1, c2, ... null as cn from t ORDER BY c2
/// ...
/// select null as c1, null as c2, ... cn from t ORDER BY cn
///  ORDER BY c1, c2 ... CN
/// ```
fn make_query(n: usize) -> String {
    let mut query = String::new();
    for i in 0..n {
        if i != 0 {
            query.push_str("\n  UNION ALL \n");
        }
        let select_list = (0..n)
            .map(|j| {
                if i == j {
                    format!("c{j}")
                } else {
                    format!("null as c{j}")
                }
            })
            .collect::<Vec<_>>()
            .join(", ");
        query.push_str(&format!("(SELECT {} FROM t ORDER BY c{})", select_list, i));
    }
    query.push_str(&format!(
        "\nORDER BY {}",
        (0..n)
            .map(|i| format!("c{}", i))
            .collect::<Vec<_>>()
            .join(", ")
    ));
    query
}

Do you know where the time is being spent?
esp is this some plan property that's being recalculated in an expensive manner?

Do you know where the time is being spent? esp is this some plan property that's being recalculated in an expensive manner?

Yes the time is being spent normalizing equivalence orderings.
I just need to spend some time staring at the code and figuring out how it could be done better

Here is a flamegraph showing where the time is spent

I spent some time reviewing the flamegraph.

remove_redundant_entries is called / takes up 1/3 of the time
normalized_oeq_class requires 2/3 of the time

The high level observation is that continually recomputing normalized equivalence groups requires significaint amounts of time. What I am going to try is to make these implementations much more efficient (avoid allocation and recomputation) and
Sketch:

try and avoid calling normalized_oeq_class by ensuring that the oeq_class is always normalized
I think we could reduce remove_redundant_entries by storing it in an IndexSet rather than a Vec

FYI I am pretty sure I was seeing this with some of the sqlite test files, specifically https://github.com/Omega359/arrow-datafusion/blob/feature/sqllogictest_add_sqlite/datafusion/sqllogictest/test_files/sqlite/select4.slt

I will make this much better, but it will take me a while

I have big plans on how to fix this holistically, but I also want to be able to resolve the issue quickly if possible. I am going to see if I can find some way to work around this for now while I work on a better long term plan

FYI I am pretty sure I was seeing this with some of the sqlite test files, specifically https://github.com/Omega359/arrow-datafusion/blob/feature/sqllogictest_add_sqlite/datafusion/sqllogictest/test_files/sqlite/select4.slt

For anyone following along, we are tracking completing the sqllogictest work in

https://github.com/apache/datafusion/issues/13811


Convert directly from strings

To convert from any string to an int16, I have to do something like that:
func stringToInt16(numStr string) (int16, error) {
	numInt16, err := strconv.ParseInt(numStr, 10, 16)
	if err != nil {
		return 0, err
	}

	return int16(numInt16), nil
}

Falling in G115...
Why not add the option to convert directly from strings?

Interesting idea, I also have to do such conversions.
I will take a look, but I'm unsure when.
I think the logic will require to check if there is a dot in it to see if it's a float, then try to convert to uint64 (or int64 if contains a dash), or convert to float64 if float. Then convert to the requested type
But yes, the logic seems simple ™

Here are some thoughts
I may support

bool "true"/"false"
octal 0644 and 0o644
hexa 0xAA
bite literal 0b111111
negative value -1
complex "2i"
"snake thousands separator" 1_000
float 1.23
scientific notation 1e5 (check the syntax)
floating point literals

https://go.dev/ref/spec

Some examples

4_2
0600
0_600
0o600
0O600       // second character is capital letter 'O'
0xBadFace
0xBad_Face
0x_67_7a_2f_cc_40_c6
170141183460469231731687303715884105727
170_141183_460469_231731_687303_715884_105727
_42
0.
72.40
072.40       // == 72.40
2.71828
1.e+0
6.67428e-11
1E6
.25
.12345E+5
1_5.         // == 15.0
0.15e+0_2    // == 15.0
0x1p-2       // == 0.25
0x2.p10      // == 2048.0
0x1.Fp+0     // == 1.9375
0X.8p-0      // == 0.5
0X_1FFFP-16  // == 0.1249847412109375

This list is more about adding these to the units tests

Available in v1.4.0


feat: add Cleavr preset

🔗 Linked issue
#522
❓ Type of change

[x] 📖 Documentation (updates to the documentation or readme)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[x] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
Add Cleavr.io (https://cleavr.io) preset  for Nitro.
Resolves #522
📝 Checklist

[x] I have linked an issue or discussion.
[x] I have updated the documentation accordingly.

Thanks for the PR. Do you know if clever is providing any distinct environment variable to auto-detect the preset? it can be added here.

Hello @pi0,
Right now we pass node-server as preset. We plan to pass cleavr as preset as soon as this PR gets merged.

We plan to pass cleavr as preset as soon as this PR gets merged.

This is nice but I'm wondering if we can make preset smarter to work out of the box without configuration. Most of cloud provider's provide a unique environment variable (like CLEAVER=1) in their CI/CI so that nitro can auto-configure the preset.

Closing the PR for now. We're working on an improvement to accept an environment variable to auto-configure the preset.
I'll re-open the PR soon.
Thank you.

No worries. I've reopened your PR to keep track. If it takes more efforts, I'm also okay to list and iterate to make it auto detected preset.

I think we misunderstood somehow. I've added Cleavr to auto detectable providers and sent a PR.
When running the build we'll pass an environment variable CLEAVR=1
This is what the build command will look like:
CLEAVR=1 npm run build --production
This is how the PM2 Ecosystem config will look like containing env:
module.exports = {
...,
env: {
...,
CLEAVR=1
}
}
I'm happy to make relevant changes if you think this doesn't work.

Hello @pi0,
The other PR for auto-detectable preset got merged. Is there any more changes that I should make here?

Thanks @anishghimire862 and sorry it was delayed.
I have released std-env but could not push to your fork. Will add auto detect in main.

Added via https://github.com/unjs/nitro/commit/d5bbdeb8411695a7e97f90284afe3d6fe43e9375


Disable File Picker button in QR Scan Screen

How can I disable/remove the File picker button given in the QRScan screen?
There is no way defined for it.

You can modify the plugin's source code by going through Flutter Plugins(check the most bottom items on your android studio project tree) > qrscan > android > src.main > res > layout > activity_second.xml and add android:visibility="invisible" to LinearLayout with id choose_photo

Thanks for your reply. I'll try it out


Allow to use the test/Test configuration

Currently, you are unable to use uTest with the test configuration due to https://groups.google.com/forum/#!msg/scala-js/WvFSrsDgGxo/blIlb4kwI44J
, i.e.
"com.lihaoyi" %% "utest" % "0.3.1" % Test

or
"com.lihaoyi" %%% "utest" % "0.3.1" % Test

Unfortunately this means that uTest will pollute our binary dependencies (and this prevents me from using uTest with https://github.com/json4s/json4s, since it needs to have strictly zero dependencies)
You should be able to use uTest as part of Test configuration

What's wrong with
"com.lihaoyi" %% "utest" % "0.3.1" % "test"

?

@mdedetrich says it's not a problem


Some styles miss in critical file output

Is this a normal behavior ? After run gulp task gen critical i will expected file get all neccessary styles need for render page without jank or unstyles. In  a reality i tested this with default luma theme of magento (not use default magento file critical) .
https://github.com/magento/magento2/blob/2.4-develop/app/design/frontend/Magento/luma/web/css/critical.css
I found this file critical.css generated miss some styles relate (breadcrumbs). This link on top below nav. User while load page may notices some breaks in this component because styles not available soon enough
Here is my screenshot for reference (when page loading)
Expected results
Page should load at early stage without missing styles (look like jank or broken)
Actually results
Some area miss styles can see when page loading!

@mrtuvn Could you show me your criticalConfig.js file?

of course here you go

module.exports = {
hostname: 'app.contribution',
generic: 'test',
useHttp2: true
};
file local.js

@mrtuvn Maybe you have broken the page at the moment when you run gulp critical --luma?
Here are my examples with different configs
module.exports = {
    ...
    height: 130,
    ...
};

module.exports = {
    ...
    height: 900,
    ...
};

i have tested with luma install with sample data inside docker but somehow critical task gulp can't run inside that. So i have to run from outside host machine. Task run complete without anyproblem but the final result seem miss some styles

@mrtuvn Does critical.css size change with different settings in your case?
module.exports = {
    ...
    height: 900,
    ...
};

critical.css 16KB
module.exports = {
    ...
    height: 130,
    ...
};

critical.css 11KB

Yes i think value will be difference

I think this problem is caused by the page you are tested. If you check the styles on the home page everything should be ok because critical.css created for exactly this page.
As a solution, I can recommend creating critical styles only for the header (130px in the case of the Luma theme). And for the rest of the page, you could use the loader to hide the unstyled content before the main styles are loaded.

@mrtuvn Does it satisfy your request? Can I close the issue?

OK i think we can close it now. Thanks you


cocoonjs launcher with phaser 2.2.0+, the sprite movement is jitter

When I use cocoonjs launcher with phaser 2.2.0+, the sprite movement is jitter. Meaning the movement will randomly suddenly moving back and forth (like a string) then keep moving.
Simply create a sprite and give it velocity.x = 500 ( or tween) can reproduce the problem.
I googled and found long time ago version 1.1.3 or 1.1.4 has the similar issue. Someone used word "choppy". link:
http://www.html5game...-things-choppy/
I also made some effort to change phaser version and found version 2.1.0/2.0.0 is good, or acceptable. The jitter only happen very occasionally. But start from 2.2.0 it is very noticeable. I
I tested on fire phone and samsung tab 2. Both shows same problem.
I am guessing something happened between version 2.1 to 2.2 and it is not easy to notice this problem  as it will not show up in the browser.

This is probably not helpful, but just for a test, can you try to add this to the boot up code and try again?
this.game.forceSingleUpdate = true;

This setting actually helped a lot. The jitter is gone after setting forceSingleUpdate to true.

Hmm, same here. I am completely snowed under this year with work but something still bugs me with performance related to this.
On a desktop gaming PC, forceSingleUpdate simply runs silky smooth.  Perfect, 60fps.
But when false, there is something else at play which causes spikes and the spikes are not relevant to the visual state of the application.  Meaning that any point in the game could either look smooth, or be grinding a bit.
I updated all games to forceSingleUpdate = true for that reason.
I know none of this is helpful but I will get around to properly investigating it as soon as I can.


Resetting player flying speed after changing gamemode

Hi. This is an improved version of my PR #707. This PR contains a fix, that resets the player's speed after changing the gamemode.

Make sure to check isActive() so that you don't send the packet if the player isn't in the PLAY state

Would be worth an explanatory comment

I was mostly referring to !isActive() as it does not make a ton of sense to me.

 Sorry

No problem!
And you generally want comments to either explain the unsaid, or ease the reading. In this case it could be (given as example) Sync abilities with the client to avoid X issue, we must therefore also ensure that the modified abilities are correct)


press.html: Update to newest 4.4 release link

Tweak existing links so the stale asset links are not shown.

@davidjharder already fixed this in #8.
My mistake.
Closing.


HashOnCookie and HashOnCookiePath are not propagated through the Ingress Controller

Summary
SUMMARY_GOES_HERE
How each request is routed to which backend server is determined by HashOn setting.
One stragegy is to write a cookie in the request so that the next request that comes in can be routed to the same backend server (stick session).
Setting a route with HashOn strategy based on Cookie, the HashOnCookie and HashOnCookiePath are never parsed and thus ignored.
By being empty the HashOn strategy can never be set to cookie in Kong Ingress Controller rule specification.
Note I have an initial patch for this but waiting for an CLU to be signed off on. Once I have it I will file a pull request.
Kubernetes version
1.11.3
Environment
Azure AKS
What happened
Trying to set the hash strategy to cookie, without success.
Upon investigation it seems that the code is not there to propagate HashOnCookie and HashOnCookiePath. So these values are always empty.
Because they are not parsed and empty, the Cookie setting itself is also flagged as invalid.
Expected behaviour
I can set HashOn strategy to Cookie
I can set the HashOnCookie and HashOnCookiePath and when I then look in the Kong database, I can see those settings persisted and used by the Kong api gateway.
Steps To Reproduce
---
apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
  name: stuff-ingress-rule
  annotations:
    kubernetes.io/ingress.class: "nginx"
proxy:
  path: "/urlendpoint/stuffdata"
route:
  methods:
  - GET
  - POST
  strip_path: true
  preserve_host: false
upstream:
  **hash_on_cookie: "sessionAffinity"
  hash_on: "cookie"
  hash_fallback: "none"
  hash_on_cookie_path: "/"**

Types.go line 119
type Upstream struct {
	Required `json:",inline"`

	Name string `json:"name"`

	HashOn           string        `json:"hash_on,omitempty"`
	HashFallback     string        `json:"hash_fallback,omitempty"`
	HashOnHeader     string        `json:"hash_on_header,omitempty"`
	**HashOnCookie     string        `json:"hash_on_cookie,omitempty"`
	HashOnCookiePath string        `json:"hash_on_cookie_path,omitempty"`**
	Healthchecks     *Healthchecks `json:"healthchecks,omitempty"`
	Slots            int           `json:"slots,omitempty"`
}

Kong.go line 126
			if res.StatusCode == http.StatusNotFound {
				upstream := kongadminv1.NewUpstream(upstreamName)

				if kongIngress != nil && kongIngress.Upstream != nil {
					if kongIngress.Upstream.HashOn != "" {
						upstream.HashOn = kongIngress.Upstream.HashOn
					}

					**if kongIngress.Upstream.HashOnCookie != "" {
						upstream.HashOnCookie = kongIngress.Upstream.HashOnCookie
					}

					if kongIngress.Upstream.HashOnCookiePath != "" {
						upstream.HashOnCookiePath = kongIngress.Upstream.HashOnCookiePath
					}**

@jdevalk2 Do you mind sending a PR for this? Thanks!

I will send a PR though internally we are working on signing off on the CLA. When that is done I can submit a PR.

#139 was merged into master. Stay tuned for our next release!


feat(aks): add microsoft defender support

Changes proposed in the pull request:
Adds support for a microsoft_defender block introduced with https://github.com/hashicorp/terraform-provider-azurerm/pull/16218/
Signed-off-by: Toni Tauro<EMAIL_ADDRESS>

@lonegunmanb can't run the test anymore.
Always getting same errors:
INFO: Styling Terraform configurations...
INFO: Done!
There are some problems with the configuration, described below.

The Terraform configuration must be valid before initialization so that
Terraform can determine which modules and providers need to be installed.

Error: Unsupported block type

  on main.tf line 5:
   5: moved {

Blocks of type "moved" are not expected here.

Error: Unsupported block type

  on main.tf line 178, in resource "azurerm_kubernetes_cluster" "main":
 178:     precondition {

Blocks of type "precondition" are not expected here.

Error: Unsupported block type

  on main.tf line 182, in resource "azurerm_kubernetes_cluster" "main":
 182:     precondition {

Blocks of type "precondition" are not expected here.

Error: Unsupported argument

  on variables.tf line 57, in variable "agents_pool_name":
  57:   nullable    = false

The terraform-test image we are using is quite outdated (versoin 0.14.4). Could it be because of that?

I now created my own mcr.microsI was able to run the tests with it: oft.com/terraform-test:1.2.5  by grabbing the github.com/azure/terraform-test repo and adjusting some vars.
I was able to run the rake build, but not the tests:
Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
INFO: Linting Terraform configurations...
INFO: Done!
INFO: Styling Terraform README...
INFO: Done!
INFO: Styling Terraform fixture configurations...
INFO: Done!
go: cannot find main module, but found Gopkg.lock in /go/src/terraform-azurerm-aks
        to create a module there, run:
        go mod init
rake aborted!
ERROR: Go test failed!

/go/src/terraform-azurerm-aks/Rakefile:45:in `block (2 levels) in <top (required)>'
Tasks: TOP => full => e2e => integration:test
(See full trace by running task with --trace)

I now created my own mcr.microsoft.com/terraform-test:1.2.5 by grabbing the https://github.com/azure/terraform-test repo and adjusting some vars.
I was able to run the rake build, but not the tests:
Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
INFO: Linting Terraform configurations...
INFO: Done!
INFO: Styling Terraform README...
INFO: Done!
INFO: Styling Terraform fixture configurations...
INFO: Done!
go: cannot find main module, but found Gopkg.lock in /go/src/terraform-azurerm-aks
        to create a module there, run:
        go mod init
rake aborted!
ERROR: Go test failed!

/go/src/terraform-azurerm-aks/Rakefile:45:in `block (2 levels) in <top (required)>'
Tasks: TOP => full => e2e => integration:test
(See full trace by running task with --trace)

Thanks @eyenx for opening this Pr! The dockerfile and docker imaged described in readme file is outdated and no longer been maintained, we're working on a new CI pipeline and we're close to a release (We'll release v6.0.0 with this new CI pipeline). I'm not going to update this mcr.microsoft.com/terraform-test image and rake tests since they'll be replaced very soon. If you're interested in this new CI, you can try it on my personal branch, we have instructions in readme file on how to run the pr checks and acc tests for our module. For this pr please give me some time to review and test with new CI on my machine. Once we've solved the issues that block our CI pipeline, we'll introduce this pipeline into some legacy azurerm Terraform modules. Thanks for your understanding.


Slic open before flush

This PR:

Explores an alternative way to create Slic log streams to files. With the current Slic approach, files must be opened/created when the stream object is constructed. If no messages are logged, the file remains empty. If there is an error and Slic tells MPI to abort, all ranks will attempt to flush, with files remaining empty if the rank could not flush before the non-collective abort call and/or no messages have been logged on that rank.

Constructors were added to GenericOutputStream/LumberjackStream/SynchronizedStream that take in a std::string that is parsed and interpreted as std::cout, std:cerr, or a file name. In the case of a filename, the file is not opened until slic flushes and the stream has at least one message logged. This is done in LumberjackStream/SynchronizedStream by default constructing an std::ofstream object (no file has been opened yet), and delaying the open(filename) call until flushing. This is done in GenericOutputStream by initially constructing an std::ostringstream to buffer the messages in memory, and turning the std::ostringstream into a std::ofstream file when flushing.

While these constructors work, I am not sure if it's the best way of addressing the current lack of file support in Slic. These std::string constructors take ownership of std::ostream from the user, which can be limiting if you want access to both the std::ostream object and the open-before-flush file behavior. In previous discussions, @gberg617 suggested adding getter methods to the in-memory messages storage (e.g. Lumberjack object in LumberjackStream, std::vector of messages in SynchronizedStream), so developers could take that information and create their own behavior. This would allow user-access to the std::ostream object and the open-before-flush file behavior with some effort.

This PR is ready for review, confirmed with @gberg617 that it is working for their use case.


Simplifying the magefile

This PR modifies the magefile to more heavily rely on environment variables for assembling the docker image names, rather than requiring developers to enter those values every time they run a build
Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO)
[x] Any necessary documentation is added, such as:

README.md
docs/
The docs repo

Fixes #

Thanks @tomkerkhove


${command:python.interpreterPath} fails when used as a parameter to cmake.configureSettings

Brief Issue Summary
In my .vscode configuration:
  "cmake.configureSettings": {
    // "PYTHON_EXECUTABLE": "/Users/ncohen/Library/Caches/pypoetry/virtualenvs/zephyrus--PefSXhl-py3.10/bin/python"
    "PYTHON_EXECUTABLE": "${command:python.interpreterPath}"
  }

The first one commented line above works as intended and induces the configured build to detect the desired (manually set) python environment.
I would like to use the second form so that the build automatically uses vscode's current active selected python interpreter.  This is supposed to be supported I think -- at least according to [these docs](https://vector-of-bool.github.io/docs/vscode-cmake-tools/settings.html#command-substitution.
However this fails with:
[main] Configuring project: zephyrus
[expand] Exception while executing command python.interpreterPath for string: -DPYTHON_EXECUTABLE:STRING=${command:python.interpreterPath}
	TypeError: Cannot use 'in' operator to search for 'workspaceFolder' in /Users/ncohen/software/zephr/zephyrus
	at d._getSelectedInterpreterPath (/Users/ncohen/.vscode/extensions/ms-python.python-2024.2.1/out/client/extension.js:2:447857)
	at /Users/ncohen/.vscode/extensions/ms-python.python-2024.2.1/out/client/extension.js:2:447750
	at l.h (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:184839)
	at l.g (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:183831)
	at l.executeCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:150:183738)
	at Object.executeCommand (/Applications/Visual Studio Code.app/Contents/Resources/app/out/vs/workbench/api/node/extensionHostProcess.js:160:21654)
	at expandStringHelper (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:56487:50)
	at Object.expandString (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:56375:37)
	at /Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53919:81
	at Array.map (<anonymous>)
	at CMakeFileApiDriver.generateConfigArgsFromSettings (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53919:53)
	at async CMakeFileApiDriver.configure (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:53971:34)
	at async /Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:44850:50
	at async CMakeProject.doConfigure (/Users/ncohen/.vscode/extensions/ms-vscode.cmake-tools-1.17.17/dist/main.js:45001:24)
[proc] Executing command: /opt/homebrew/bin/cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DPYTHON_EXECUTABLE:STRING=${command:python.interpreterPath} -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -S/Users/ncohen/software/zephr/zephyrus -B/Users/ncohen/software/zephr/zephyrus/build -G Ninja

CMake Tools Diagnostics
No response
Debug Log
No response
Additional Information
No response

@breathe Thanks for the issue. To start, those docs are rather out-dated. We have documentation here: https://github.com/microsoft/vscode-cmake-tools/blob/main/docs/cmake-settings.md#command-substitution. We only support expansion of our own commands right now.
I'll mark this as an enhancement request though, thanks!


Fp4 - x2 times slower than fp16

I have cuda118, rtx A5000, bitsandbytes==0.39.0
When shifting from fp16 Lora fine-tuning to int8 or fp4 I have immidiate x2 performance drop
Is it an expected behaviour or I have a problem on my side?
Looks related to https://github.com/TimDettmers/bitsandbytes/issues/6
And similar to https://github.com/TimDettmers/bitsandbytes/issues/347

Thanks
For int8 I have x2-x3 drop
For nf4 20-100% drop for 7B model depending on batch size
For 3B drop its bigger
But 7B can fit in 24GiB with bs=1 and seq_len=256, and nf4 helps further increase seq_len
Also maybe 13-30B model will have lover performance drop with qlora and bs=1


Bump grpcio version to 0.9.0

boringssl-src is updated to 0.3.0 as sub-dependency
cmake-rs is also updated as boringssl-src requires newer version of the crate

Signed-off-by: Schrodinger ZHU Yifan<EMAIL_ADDRESS>
What problem does this PR solve?
Issue Number: close #10230
Problem Summary:
GCC 11 build failure with abseil-cpp
What is changed and how it works?
What's Changed:

cmake-rs update to v0.1.45
grpcio update to 0.9.0
grpcio-health update to 0.9.0
kvproto update to 0bce02c5

Related changes

https://github.com/tikv/grpc-rs/commit/7a48e0bb843e702832c1c3ac024c468dedf0023c
https://github.com/pingcap/kvproto/commit/0bce02c5dd1fed12b8ca26acf36ce3add5c9ef97

Check List
Tests

Unit test
Integration test
Manual test (add detailed scripts or steps below)
No code

Side effects

Unclear

Release note

cmake-rs update to v0.1.45
grpcio update to 0.9.0
grpcio-health update to 0.9.0
kvproto update to 0bce02c5
rename coprocessor_v2 to raw_coprocessor (due to changes in kvproto)

@tisonkun built on my site. how to bench and summarize performance impacts?

/cc @BusyJay
/cc @andylokandy
/cc @tisonkun
grpc related changes.

@SchrodingerZhu: GitHub didn't allow me to request PR reviews from the following users: tisonkun.
Note that only tikv members and repo collaborators can review this PR, and authors cannot review their own PRs.

@hi-rustin I think I'm one of tikv members at the moment. Why the bot said this?

@SchrodingerZhu: GitHub didn't allow me to request PR reviews from the following users: tisonkun.
Note that only tikv members and repo collaborators can review this PR, and authors cannot review their own PRs.

@hi-rustin I think I'm one of tikv members at the moment. Why the bot said this?

Because you are not a collaborator of this repository.

@tisonkun built on my site. how to bench and summarize performance impacts?

I don't know a convenient way to test the performance changes of upgrading gRPC. There used to be a benchmark service but it is not available now :(
One way is to test the performance with a client like TiDB. I think sysbench oltp_point_select on TiDB is a representative case for gRPC performance.

I am new to the tool-chain. any document to follow to setup a cluster with tiup but using my own version of database?

I am new to the tool-chain. any document to follow to setup a cluster with tiup but using my own version of database?

You can deploy a cluster with the official nightly version (and bench).
Then, tiup cluster patch can be used to replace some component with your own binary: https://github.com/pingcap/tiup/blob/master/doc/user/cluster.md#update-components (need to archive your binary in .tar.gz format first)

You can also use tiup to do the benchmark: https://docs.pingcap.com/tidb/stable/tiup-bench

unfortunately, we still in need of tons of macros as tikv trait does not provide default implementation for methods.

unfortunately, we still in need of tons of macros as tikv trait does not provide default implementation for methods.

I don't think so. Every generated methods will have a default implementation to return UNIMPLEMENTED as https://github.com/tikv/grpc-rs/pull/521/files shows.

That's because grpcio-compiler is outdated. You can upgrade it by cargo update -p grpcio-compiler --precise 0.9.0.

nice catch. thanks

/rebuild

raftstore is broken with config changing, various tests failed from time to time. need more investigation. help wanted.

Let's wait for #10236.

any suggestion on that error?

@SchrodingerZhu could you keep update with the base branch and retry?

/run-integration-tests

/test

@SchrodingerZhu Could you rebase master? The flaky test that caused failures before has been fixed.

sure.

/run-all-tests

/run-all-tests

/cc @sticnarf

/run-all-tests

/cc @tisonkun
/cc @BusyJay

/rebuild

/run-integration-br-test

/run-integration-tests

/run-integration-tests

/run-integration-tests

/run-all-tests

/run-tests

/rebuild

/run-integration-common-test

/run-integration-tests

/merge


cli not honoring already defined env vars

Using dotenv-extended as a CLI tool works fine if the wanted env var is found in .env.defaults or .env, but if we are passing in the env variable from elsewhere (in my case as args to a Docker container) the value is not captured.
To reproduce:
cat > dotenv-test.sh <<END
#!/bin/sh

echo "In script:" $DOTENV_TEST
END

and
echo "DOTENV_TEST=default" >> .env.defaults
echo "DOTENV_TEST=nondefault" >> .env

npm install dotenv-extended
DOTENV_TEST=commandline npx dotenv-extended dotenv-test.sh

Wanted output: In script: commandline
Got output: In script: nondefault

I originally used an npm script, not npx, but same thing there. Using dotenv-extended 2.0.2. Is there something I've misunderstood about this functionality?

Some more findings: I made a JS version of the shell script above, which actually imports dotenv-extended, and put it in an npm script. Running npm run dotenv-test-js produces the correct output (nondefault) and DOTENV_TEST=commandline npm run dotenv-test-js also produces the correct output (commandline).
So it looks like the way the CLI version loads the shell script is at fault.

@vlindhol Thanks for finding this. I'll take a look as soon as I'm able to see if I can figure it out. Feel free to take a look yourself and submit a Pull Request

@keithmorris PR submitted a while ago, in case you missed it!


Not clear instructions how to grant permission

In the app the information box is not clear how to give permissions via adb and the line is incorrect as it does not have a space between "free" and "android":
"pm grant com.farmerbb.secondscreen.freeandroid.permission.WRITE_SECURE_SETTINGS"
should be:
"pm grant com.farmerbb.secondscreen.free android.permission.WRITE_SECURE_SETTINGS"
The instructions should be:
Enable Developer settings -> USB debugging on your device and enter in your PC terminal
sudo adb start-server
sudo adb shell pm grant com.farmerbb.secondscreen.free android.permission.WRITE_SECURE_SETTINGS

Thanks for the great app!

I agree, the adb shell instructions aren't as clear as they should be.  I'll get this fixed in the next release.

Latest beta release on Google Play has improved instructions on how to grant the permission.

sudo adb start-server
sudo adb shell pm grant com.farmerbb.secondscreen.free android.permission.WRITE_SECURE_SETTINGS```

sudo is not needed in this context

[ ] K

K

[ ] K

com.farmerbb.secondscreen.free

adb shell pm grant com.farmerbb.secondscreen.free android.permission.WRITE_SECURE_SETTINGS


ObjectNotFound: (MSFT_FSRMQuota:Root/Microsoft/.../MSFT_FSRMQuota) [New-FsrmQuota]

When I run New-FsrmQuota in VM with Custom Image that has FSRM feature pre-installed, I run into the following exception. Any idea why? Where is the dll located for FSRM powershell commands? I guess the exception means that the dll is not loaded
New-FsrmQuota : Not found
At line:1 char:1

New-FsrmQuota

  + CategoryInfo          : ObjectNotFound: (MSFT_FSRMQuota:Root/Microsoft/.../MSFT_FSRMQuota) [New-FsrmQuota], CimException
  + FullyQualifiedErrorId : HRESULT 0x80041002,New-FsrmQuota

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 80260d74-bb70-2cb0-93d3-91b42b2d0c9f
Version Independent ID: d377c1f6-6617-c915-84b8-dc02ba6bd2cc
Content: New-FsrmQuota (fileserverresourcemanager)
Content Source: docset/windows/fileserverresourcemanager/New-FsrmQuota.md
Product: w10
Technology: powershell-windows
GitHub Login: @andreabarr
Microsoft Alias: v-anbarr

It seems that this question can best be answered via PowerShell Community Links
For bug reports specific to PowerShell, please visit, PowerShell at GitHub.
The issues section of this repository is for content fixes regarding documentation. Feel free to re-open in case you would like to suggest improvements to the article itself.
Thanks again.


KLineChart-pro Error Updater

Hello
Thanks for your program
Why am I seeing this error and how should I resolve the issue?
node --version
v14.21.3
npm run build

<EMAIL_ADDRESS>build /home/mas/nodejs/chart/KLineChart-pro-main
npm run build-core && npm run build-dts

<EMAIL_ADDRESS>build-core /home/mas/nodejs/chart/KLineChart-pro-main
tsc && vite build

node_modules/klinecharts/types/index.d.ts:743:2 - error TS2416: Property 'update' in type 'Widget' is not assignable to the same property in base type 'Updater'.
Type '(level: UpdateLevel) => void' is not assignable to type '(level?: UpdateLevel | undefined) => void'.
Types of parameters 'level' and 'level' are incompatible.
Type 'UpdateLevel | undefined' is not assignable to type 'UpdateLevel'.
Type 'undefined' is not assignable to type 'UpdateLevel'.
743  update(level: UpdateLevel): void;
~~~~~~
Found 1 error in node_modules/klinecharts/types/index.d.ts:743
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR<EMAIL_ADDRESS>build-core: tsc && vite build
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build-core script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR!  Exit status 2
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

I changed the package.json file
fixed :
"dependencies": {
"@klinecharts/pro": "^0.1.1",
"klinecharts": "^9.2.2"
}

Upgrade klinecaharts.


More information on authorization in service hub documentation

Hi,
The documentation refers to "You deal with a requirement to provide a role-based access model to the queues, and different rights/permissions for senders and receivers." regarding the use of service hub but doesn't list a relevant link we could follow to learn more about it.
The documentation is hosted here: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: afed582b-fb3f-30b3-b119-6c4a9218bf34
Version Independent ID: d4cf3473-21c1-2409-e7ac-9ad93fbc5895
Content: Azure Storage queues and Service Bus queues compared and contrasted
Content Source: articles/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted.md
Service: service-bus-messaging
GitHub Login: @axisc
Microsoft Alias: aschhab

@Infinitism Thanks for the feedback! We will review and update accordingly.

@Infinitism The links for the corresponding services are provided under the Authentication and authorization section for their SAS based authentication/authorization.
Also, both of them now support identity-based security as well. Here is the doc for storage queues and the doc for service bus (in preview).
We are assigning this issue to the content author for further review and to update the doc accordingly.

@Infinitism - Thank you for the feedback. I will fix it (add links to RBAC articles) and then publish the article soon.
#in-progress

Fixed now.
#please-close


C++ Diagnostics Page

I've re written the old unused diagnostics page from VB to C++ and have also added a version check for the client  in it becaus that seemed to be a problem recently, especially round the manditory update. This is my first propper PR so I might not have kept to the code styles of everyone else, please let me know about that.

I appreciate the effort!

  You can just wait for someone else fix this details. I could do it when I have time (dunno what conditional clause to use here).

If you don't mind brod could you explain that? Isn't it automatically deleted when the bitcoingui object is destroyed? Looking at something like the upgrader object in there, that doesn't seem to have an explicit delete and I have done the same.

if u still need help with this let me know. just add what u have changed like those 2 externs and if uve worked the GetArgument in where applicable

@fooforever That's right, by adding the dialog to another Qt object you make it a child of that object and it will be deleted when the parent goes out of scope.

@denravonska Unless it is created by new. C++ only guarantees constructor-destructor pairing if it is done by automatic variable (no new/malloc).
But if there is some Qt logic to take care of the dynamically allocated objects, then I appologize.

Yeah, but IIRC Qt objects take ownership of the children lifetime when they are assigned as parents.
See http://doc.qt.io/qt-4.8/objecttrees.html

How does this look now?

Alright, I finally got around to test it. Sorry for the delay. Here are some things which should get fixed:

I have no CPID in my config, yet it finds some RAC.
Some lines say "Varify" instead of "Verify".
Clock gets stuck at "Testing..."
Can we make the window a bit wider and the space between each line smaller? Maybe match the stats line heights in the main UI.

@denravonska the rac check is done from the local boinc client so it doesn't matter what gridcoin knows about. Do you not think that is correct behaviour?


update to 1.4.1; move source to github

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

Changed source to github because authors do not appear to be uploading current releases to PyPI.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.
I do have some suggestions for making it better though...
For recipe:

Jinja2 variable references are suggested to take a {{<one space><variable name><one space>}} form. See lines [10, 11].
noarch: python recipes are recommended to have a lower bound on the python version. This recommendation will become a requirement in the future.

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Thanks @msarahan


build.go has hardcoded paths for osx/darwin

Is it intentional though? build.go has these two hardcoded paths for darwin:
// #cgo darwin CFLAGS<EMAIL_ADDRESS>-I/usr/local/opt/openssl/include
// #cgo darwin LDFLAGS<EMAIL_ADDRESS>-L/usr/local/opt/openssl/lib -lssl -lcrypto
Shouldn't it instead use pkg-config like windows and linux?
// #cgo linux darwin windows pkg-config: libssl libcrypto

I think this would fix various problems on darwin issue


workflows/gateway-api: Cover IPsec with GatewayAPI

See commits for details.

/test

/test

/test

/test

/test


Does the ordering of values at the level of timesteps matter, for a RNN input in Keras?

An RNN, in keras, accepts an input with the following shape
array([[['Xa0', 'Ya0'],
           ['Xa1', 'Ya1'],
           ['Xa2', 'Ya2']],

         [['Xb0', 'Yb0'],
          ['Xb1', 'Yb1'],
          ['Xb2', 'Yb2']],

        [['Xc0', 'Yc0'],
         ['Xc1', 'Yc1'],
         ['Xc2', 'Yc2']]], dtype='<U3')

The numbers are associated with the time steps (3 in our case), and X,Y are features. We have 3 batches (a,b,c).
Which order should I use:

0 -> 2 as in from past to present ?
or  2 -> 0 as in from present to past?

array([[['Xa2', 'Ya2'],
           ['Xa1', 'Ya1'],
           ['Xa0', 'Ya0']],

         [['Xb2', 'Yb2'],
          ['Xb1', 'Yb1'],
          ['Xb0', 'Yb0']],

        [['Xc2', 'Yc2'],
         ['Xc1', 'Yc1'],
         ['Xc0', 'Yc0']]], dtype='<U3')

Nothing in the documentation tells me which is the order I should use

@IavTavares, In a RNN the information cycles through a loop. When it makes a decision, it considers the current input and also what it has learned from the inputs it received previously. This is important because the sequence of data contains crucial information about what is coming next.
For better understanding, please can you refer this RNN tutorial. Thanks!

Yes, I get that, but the documentation does not explicitly state which order one should use... That's the problem.

@IavTavares, Can you please share documentation link that you are referring here? Thanks!

If I say that the documentation on Keras has no information on which order one should use, it's hard to share a link of what does not exist. Em 22/02/2022 12:11, chunduriv @.***> escreveu:
@IavTavares, Can you please share documentation link that you are referring here? Thanks!
—Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you were mentioned.Message ID: @.***>

For time series analysis, from the examples, we should just use the order from past to present...

Are you satisfied with the resolution of your issue?
Yes
No


Update googleapis dependency

Hi,
please consider updating the googleapis dependency to at least 38.0.0 to close the following issue: https://www.npmjs.com/advisories/791

As far as I can tell, this project doesn't need the googleapis dependency at all. It can be removed entirely.


allow slugs in URL

Should be able to hit http://gist.io/3789349/some-text-here.html or whatever. Bonus points for modifying it for the user with the history API as the title changes.

Maybe gist.io/my-slug-with-юнікодні-речі will be better than gist.io/jeromegn/123456-sluggified-post-title ?

@idan ✔ Issue can be closed.
It is possible to add any slug behind the URLs to share it in a more readable fashion:
https://gist.io/@schacon/1/this-is-my-gist
For automatic slugs, I would suggest opening a dedicated ticket, if still desired.


localhost refused to connect

I followed the steps exactly. But I get this localhost refused to connect. I am using Chrome. and the port number I get from the ssh command is 8889
[
]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 07b2c8a7-49fd-2839-16eb-ebb311045314
Version Independent ID: f9e5a0ba-b2d8-f4e9-788e-58bf61bd7e14
Content: Set up a lab to teach data science with Python and Jupyter Notebooks - Azure Lab Services
Content Source: articles/lab-services/class-type-jupyter-notebook.md
Service: lab-services
GitHub Login: @EMaher
Microsoft Alias: enewman

Thanks for the question! We are taking a look into this and will get back to you soon.

Hi - Any ideas what might be causing this...could this be a local set up/browser setting?

Hello @UtpalMattoo,
I had been testing the behavior at my end. Unfortunately, I was not able to reproduce the issue at my end following the steps mentioned in the document.  I wanted some further inputs from your end.

Can you please confirm the Step 3 command ( the -L address ) that you have executed ?
ssh –L 8888:localhost:8888 -p 12345<EMAIL_ADDRESS>Also, you mentioned that 'the port number I get from the ssh command is 8889' ,  did you happen try accessing the URL using  8888 port.
http://localhost:8888/?token=TOKEN
If the issue is still persistent, to eliminate issue to be specific to a machine / network - Is it possible for you to check on a different machine & network ?

Tried both:
ssh -L 8888:localhost:8888
ssh -L 8889:localhost:8889
Also - tried accessing both
http://localhost:8888/?token=TOKEN and
http://localhost:8889/?token=TOKEN
same error.
might be a network issue.

Yes, to eliminate issue to be specific to a machine / network  I'd recommend you to check on a different machine & network.

Just checking in to see if you have had a chance to see the previous response. Kindly let us know if you need further assistance on this issue or is good to be closed.

Since we have not heard back from you we will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply and we will gladly continue the discussion.


include:add recursive lock

Signed-off-by: anjiahao<EMAIL_ADDRESS>Summary
add recurive lock
plan

Replace all duplicate recursive locks with the current recursive lock implementation,eg(net_lock or inode_lock .. maybe more then)
Use mutex to replace all places in nuttx that use sem as a lock
3.Then change the default behavior of sem，it associated with
RP5070

@davids5 and @pkarashchenko could you take a look again?


Scala 2.12.0 released

Looking forward to a compatible version of schwatcher

0.3.2 is out for Scala 2.12.0 :)


Maps: Customize the popup with compliant design

 is the current layout. We should come up with a more compliant and aesthetic design for this.
Design needs to integrate an image carousel since multiple images are available in buildingCatalogue.js now.

This DaUCI design from 2021 would be a great starting point (if not endpoint) for redesigning the Map popup

https://www.figma.com/file/sD5kOcQmDdPdHE2GQaXL1h/Antalmanac?type=design&node-id=572%3A1401&mode=design&t=7lNWw0w8LoAe42Mu-1


[PL-51185] del v82500 required for Splunk Audit Trail using a HEC_Token

https://harness.atlassian.net/browse/PL-51185
"Delegate version 82500 is required" note.
https://developer.harness.io/docs/platform/governance/audit-trail/audit-streaming/#configure-the-streaming-connector
Description

Please describe your changes: __________________________________
Jira/GitHub Issue numbers (if any): ______________________________
Preview links/images (Internal contributors only): __________________

PR lifecycle
We aim to merge PRs within one week or less, but delays happen sometimes.
If your PR is open longer than two weeks without any human activity, please tag a code owner in a comment.
PRs must meet these requirements to be merged:

[ ] Successful preview build.
[ ] Code owner review.
[ ] No merge conflicts.
[ ] Release notes/new features docs: Feature/version released to at least one prod environment.

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6644662bbbac656d92c16a3e--harness-developer.netlify.app

Please check the Execution Link of the Pipeline for the Website Draft URL. This is located in the Preview Step behind the Harness VPN and also is available in #hdh_alerts. E.g Website Draft URL: https://unique-id--harness-developer.netlify.app. Current Draft URL is: https://6645d5c54ad2a68594b1cb06--harness-developer.netlify.app


[Feature Request] Expose more utility functions

What feature or change would you like to see made?
I'm trying to implement my own annotation tool that is based on LengthTool. When looking at it's source code it uses some very useful utility functions that are not exposed publicly. For example these functions I'm not able to import and use in my own project:

triggerAnnotationCompleted
triggerAnnotationModified

Is it by design or is it ok to export those as well?
Why should we prioritize this feature?
It helps people correctly implement annotation tools. It ensures same behavior as already existing tools.

You can create a PR and I will merge it


apiToken does not leak to git commit messages anymore

Fixes #23
Also started a CHANGELOG and added instructions about installing from master branch

@sbonebrake  This "should" fix the leak.
Could you let me know once you try this ?
Thanks

Yeah, this worked for me. Thanks!


TestIntegration.test_no_report_and_trace_generation does not make any assertions on file presence

https://github.com/geopm/geopm/blob/dev/test_integration/geopm_test_integration.py#L169-L181

@bakerbrandond You need to make those permalinks when you copy them (it's an option in the sidebar I think), otherwise they point to whatever the current state of the code is in dev.  Right now, that link points off into la-la-land.


Improve Professor support.

New thing looks like this:

Oh good catch, I'll fix that.

Should display message below now:

Awesome! Thanks again!


AI Streaming result

Which Cloudflare product(s) does this pertain to?
Workers AI
Subject Matter
How to get hold of the ai.run results streamed to the client.
Content Location
https://developers.cloudflare.com/workers-ai
Additional information
ai.run has an option to stream. This stream can be sent to the client.
Please provide a clear example of how one would catch the full result of the stream on the server side in order to log the result, size of the result or anything else about it.
It's very probable that you would want to keep track of answers given to clients, and therefore having the full result is important. this is easily logged in a blocking result, but not when streaming.
the stream produced by ai.stream does not have a .on('data') event which would be what you would expect.

Hi @gerhardcit
I can get some result with the code below , adapting the two lines
    fetch('https://worker_name.account_name.workers.dev')
	// fetch(`https://api.cloudflare.com/client/v4/accounts/YOUR_ID/ai/run/${model}`, {
	// 	headers: { Authorization: `Bearer ${API_TOKEN}`, Accept: "text/event-stream", 'Content-Type': 'application/json' },
	// 	method: 'POST',
	// 	body: JSON.stringify(input),
	// })

and creating a .env file if you want to use the api
import 'dotenv/config';

// https://dev.to/bsorrentino/how-to-stream-data-over-http-using-node-and-fetch-api-4ij2
const API_TOKEN = process.env.CLOUDFARE_API_TOKEN;
/**
 * Generator function to stream responses from fetch calls.
 *
 * @param {Function} fetchcall - The fetch call to make. Should return a response with a readable body stream.
 * @returns {AsyncGenerator<string>} An async generator that yields strings from the response stream.
 */
async function* streamingFetch(fetchcall) {
	const response = await fetchcall();
	// Attach Reader
	const reader = response.body.getReader();
	while (true) {
		// wait for next encoded chunk
		const { done, value } = await reader.read();
		// check if stream is done
		if (done) break;
		// Decodes data chunk and yields it
        let chunk = new TextDecoder().decode(value).trim()
		yield {chunk: chunk};

	}
}

(async () => {
	let model = '@cf/meta/llama-2-7b-chat-int8';
	let input = {
		stream: true,
		messages: [
			{
				role: 'system',
				content: 'You are a friendly assistant that helps write stories',
			},
			{
				role: 'user',
				content: 'Bonjour',
			},
		],
	};
	for await (let chunk of streamingFetch(() =>
        fetch('https://worker_name.account_name.workers.dev')
		// fetch(`https://api.cloudflare.com/client/v4/accounts/YOUR_ID/ai/run/${model}`, {
		// 	headers: { Authorization: `Bearer ${API_TOKEN}`, Accept: "text/event-stream", 'Content-Type': 'application/json' },
		// 	method: 'POST',
		// 	body: JSON.stringify(input),
		// })
	)) {
		console.log(chunk);
		//process.stdout.write(chunk)
	}
})();

but in both case (worker ai or api) the result is not usable :
it is in text format looking like some json :
each chunk seem to look like 'data: {"response":" also"}\n\n'
but sometimes, some chunk are aggregated like in this picture. It would be better to have pure json , not "data: +pseudoJson"

this solution looks good https://github.com/craigsdennis/chat-workers-ai-base