WebRTC is not working on HTML5 export of Godot 4.2 Dev

Godot version
4.2.dev
System information
Windows 10 - NVIDIA GeForce RTX 2080 SUPER [Version 531.29] - Godot 4.2.dev
Issue description
WebRTC is not working on HTML5 export of Godot 4.2 dev. In testing the Nakama-WebRTC demo project, I face a problem with Web export. Users get stuck in the connecting state.
Steps to reproduce
1- export the project in this link for HTML5. ( Test can be done by running the exported project locally or on a web host like itch.io.
2- configure a Nakama server with an SSL certificate and use port forwarding to secure the Nakama port
3- try to authenticate on the exported app.
4- create a room with one client and joint with another one.
5- It stucks in the connecting state.
Minimal reproduction project
NA (I didn't manipulate the original project except for port and server address)

Is this the same as https://github.com/godotengine/godot/issues/80022?

Is this the same as #80022?

No, the previous one was related to HttpRequest this one is about making peer-to-peer connections using WebRTC.
The problem rises after authentication is done by HttpRequest.
The first user connects without a problem. But the other users who join the room are stuck in the connecting state.
I guess something goes wrong when add_peer wants to add the other users' players to the room.

CC @dsnopek

I need some more time to investigate, but I strongly suspect this is a bug in my addon rather than Godot itself. On my Discord, another user has been having some trouble with the Godot 4 version of the addon - I was able to fix one of their bugs, but some still remain. I'll try to find some time this week to dig deeper into it.

I need some more time to investigate, but I strongly suspect this is a bug in my addon rather than Godot itself. On my Discord, another user has been having some trouble with the Godot 4 version of the addon - I was able to fix one of their bugs, but some remain. I'll try to find some time this week to dig deeper into it.

Actually I made some more tests and it works properly in Chrome browser. But in Mozilla, joining a room stucks in the connecting state. I'm trying to understand what is wrong with Mozilla.
Thanks for your awesome project anyway. I'm looking forward new modifications of the project.

webrtc-godot.zip
I'm encountering a strange issue with WebRTC as well.  There are two projects in the attached project.
One is a Godot project that uses WebRTC to send packets between peers.  One WebRTC client acts as the dedicated server, and the others that connect to the server are clients.  The clients send packets only to the dedicated server, and the server broadcasts that packet to the other clients.
The other project is a dedicated server that tracks the chatrooms and relays the WebRTC ICE packets for clients that want to connect to a chatroom.  It is written in Go.
The native clients work fine, but the web export partially works.  The web client is able to act as a host and can talk to its connected peers just fine.  However, the web client cannot connect to a hosted server for some reason, and I cannot figure out why.
Here's a screenshot of a working example using only native clients:

Here's a screenshot of the web export acting as the host, and the native client  connected to it:

However, when I set a native client as a host and try to connect to it in the browser, it indefinitely hangs (notice the client doesn't display a "connected" status message in the logs):

To reproduce this example:

Download and install the Go compiler
Download the WebRTC GDExtension
Extract the webrtc folder into the root of the project.
Start the dedicated server by running go build ; ./webrtc-test-server in the server folder.
Open the Godot project and run the HTML5 export to the server/static directory.
Open a browser to http://localhost:8080 (the websocket will fail to upgrade if you use <IP_ADDRESS>),
Run a native client.
In the browser client, enter a server name and click Host.  In the native client, enter the same server name and click Connect.  It should succeed and the two clients can talk to each other.
Now refresh the browser and restart the native client, but this time, host in the native client and connect in the browser.  The WebRTC ICE exchange does not complete and the browser and native client cannot talk to each other.

I can't seem to be able to reproduce using the webrtc_signaling demo, tested with both Chromium and Firefox


Proposal: Types as Configuration

Recently, we went over some ideas for new and interesting ways to merge config files. Ever since, or maybe, since forever, I've been thinking about the problem. The progression, give or take a step, for most command-line tools is this:

First, there were command line arguments
Second, there were response files, for when the command line arguments got too long (@filename on the CLI)
Third, there is a structured data file in a known location (.npmrc, .vscode/settings.json, eslint.json, tsconfig.json)
and Finally, there is just more Code as Configuration (webpack.js, eslint.js, Herebyfile.mjs)

We have the first three and have been reluctant to make the leap to the fourth. There are various reasons stated in different places, but mostly it comes down to not wanting or being able to execute untrusted code (especially in the editor). We're not in the business of sandboxing a dynamic, interpreted language, like javascript. Philosophically, there is little disagreement that a config file like this:
import * as ts from "typescript";

import base from "./tsconfig.base.js";
import mixin from "./tsconfig.mixin.js";

export default ts.config({
    compilerOptions: {
        ...base.compilerOptions,
        jsx: "react-jsx",
        paths: {
            "dep": ["./node_modules/typescript"],
            ...mixin.compilerOptions.paths
        },
        traceResolution: true
    },
    include: [ "./app/**/*.ts" ]
});

is fairly compelling - solving most of the issues we have with the static files of today (inflexible merging and imports, inability to create calculated fields generally) without needing to reinvent the wheel and build a custom procedural transform definition language in a static context.
But I couldn't help but wonder - sure, we have our reasons why we didn't like Code as Configuration for TypeScript - but what if we went beyond that - what if we evolved our configuration into something even greater - more expressive, yet structured than code itself. What if we used types as configuration. After all, why not use what we have available? For us, checking is basically as easy as JSON parsing. And our types are, somehow, a sandboxed, dynamic, interpreted language unto themselves. People do a lot of crazy things in our typesystem, and it's only gotten more expressive primitives over time. Imagine with me, for a moment. You could pretty easily define the shape of a tsconfig as a type, eg:
type Config = {
    compilerOptions: { strict: true }
};

and then stick it in a known location
export default Config;

and that's that - just look the type pointed at by default, and transform it into a config object[^1].
Now that... could work... but composability? Something like
import ConfigA from "./tsconfig.base";
type Config = {
    compilerOptions: { strict: true } & Omit<NonNullable<ConfigA["compilerOptions"]>, "strict">
};
export default Config;

maybe? That could work... it is flexible and expressive enough, but it is a bit wordy, especially compared to options today. Maybe some aliases would help. How's completion support inside the type? Missing? Well, that's a downgrade. Guaranteeing schema conformance would be nice. So we also need a helper like
type Config<T extends RawTSConfig> = T;

so we can write
import { Config } from "typescript";
import ConfigA from "./tsconfig.base";
type MyConfig = {
    compilerOptions: { strict: true } & Omit<NonNullable<ConfigA["compilerOptions"]>, "strict">
};
export default Config<MyConfig>;

and that gives us safety... still no completions, though. Only way to get that would be.... in... an... inference... context...
And this is where you realize we've been going about this exercise all wrong - types are great - we let you write a type that can exactly describe the precise single value of a json object (mostly), but a lot of the greatness of our typesystem isn't in its' constructors, rather it is in how it maps to the host language - javascript. In fact, it's more powerful in the context of javascript expressions than what type constructors alone can provide. That's when you realize if you write a definition like
export function config<const T extends RawTSConfig>(config: T): T;

you can invoke it like so
import * as ts from "typescript";
export default ts.config({
    compilerOptions: { strict: true }
});

and get full completions and typechecking on the call, and still get exact literal types for the type of the expression, provided all operations done within the expression resolve to exact literal types. Which means we've come full circle - the idealized form of types as configuration is actually
import * as ts from "typescript";

import base from "./tsconfig.base.js";
import mixin from "./tsconfig.mixin.js";

export default ts.config({
    compilerOptions: {
        ...base.compilerOptions,
        jsx: "react-jsx",
        paths: {
            "dep": ["./node_modules/typescript"],
            ...mixin.compilerOptions.paths
        },
        traceResolution: true
    },
    include: [ "./app/**/*.ts" ]
});

or... visibly identical to code as configuration. The only difference being that I can't believe we didn't use eval to get there[^2].
This PR is a working proof of concept - it will load a tsconfig.d.ts, tsconfig.ts, or tsconfig.js (or any other code extension), and look for the type of the default member of that module[^3], convert the type to a config object, and use that config object. For example, the above:

this should work at a basic level both on the command line and in the editor, but this shouldn't be regarded as anything close to production ready - it'd need tests, a dedicated language service project for type config files, more tests, actual diagnostics for when the default type is, say, circularly referential or non-literal, proper integration with caching in the language service layer, a less layered approach to the API (type -> json -> compiler options is indirect - type -> compiler options directly probably yields better UX), and tests.
Still, this is potentially useful, even as incomplete as this - playing around with it has made it apparent, to me at least, just how much I didn't care about the file being executed, but really did just want the syntactic niceties like imports and spreads. And maybe a function call or two. Things not hard to represent purely at compile time in the type system we have today, but that are terribly painful in a JSON document.
[^1]: Waves hand at the specifics of the transform in the cases of unions, intersections, optionals, generics, etc. - Only literal, object, and tuple types matter here - you probably wanna error on types that contain anything else.
[^2]: Though you could eval it and get the same thing... Unless you void your warranty by casting.
[^3]: More handwaving about how that module is loaded. - Suffice to say, you just pick one set of compiler settings to load configs with (nodenext-y, moduleDetection: "force") and stick with it.

Is this also targeting 5.5.555 or is this evil (eval?) enough to land in 6.6.666?

I can't even tell if this is an April Fool's joke or not 😭


RMSE should be greater than zero

In recommendation scenario, the evaluation metrix showing in ModelBuilder is RMSE, but it's actually R-square. We need to change it back.

You may want the ability for users to choose their optimization metrics. Then you'll just have to ensure the right one is displayed.

thanks Justin, though it's not gonna happened in this release


Do not extract comment only interpolations

I have seen comments (multiline ones) which are wrapped in ERB templates
like this:
<%# here is some comment
    it carries on to this line
    and more
%>

Doing a comment this way does not include it in the final HTML which
would be the case when using html comments. If ruumba extracts this,
since it is multiline, it is actually invalid ruby code.
I have updated the parsing code to just throw away lines which begin
with a '#'.

@aclemons @trezona-lecomte I'm at DEFCON this week but will deploy a new version of the gem as soon as I can. Thanks for your contribution!

@aclemons @trezona-lecomte Deployed! 🎉


Accessibility Updates - Request Details Ministry User

Title of ticket: Accessibility Updates - Request Details Ministry User
Description
Critical Changes to Queue that were identified through Running Accessibility Tests on Request Details Ministry User
Use WAVE extension - https://wave.webaim.org/extension/
Dependencies
No

DOD

[x] Missing form labels fixed
[x] Empty heading fixed
[x] Empty buttons fixed
[x] Empty links fixed
[x] Aria references fixed
[ ] Contrast errors fixed
[ ] Alerts reviewed and fixed if possible

Description and DOD updated.

All critical changes have been fixed. Great Work @divyav-aot & @nkan-aot


style(docs): Prettier formatting

The same thing happened again. Hopefully the same doesn't happen locally.

From now, no one uses Gitpod except for tests. It's too hard to push. Github's APIs need to fix themselves.

Why does ubuntu build fail? (i have art class rn so i cant talk)

and why is the windows build not starting? Nothing works!

I think it's due to the new tests. Fixing,

@TimerX-App/reviewers time for review

I think the readme should be kept in the root dir

@im-coder-lg 28K Addittions??!!

Prettier. I just did npx prettier --write . from the docs root, never expected that lol.

Why did you delete the README from the docs? GitHub accepted it!

I reallay think we should keep it in root

I reallay think we should keep it in root

Okay, what about contributing.md and code of conduct?

Okay, what about contributing.md and code of conduct?

Those can be kept in the docs folder

Okay, but we can't remove the lockfile, npm recommends we commit it.

Maybe that's why I hesitated in choosing Prettier. Should have just done npx prettier --write docs/ and the same to src if you consider the root of documentation docs as root.

I reallay think we should keep it in root

Why?

IDK, maybe it's easy to edit?

@im-coder-lg Removing the Lockfile and Merging since the lockfile is not really necessary...

Alright, fixed merge conflicts. Ready to merge.


internationalization

The app has already been set up for internationalization with the package i18n, just need to check that all the pages across the app are actually getting translated

#243

The Crowdin Project needs to have an integration to this GitHub repository.
I assume @timstokman is the person to ask about this?

Moved here https://trello.com/c/THcexSr0


[instrumentation-http] custom client/server metric attributes

Description

[!IMPORTANT]
The existence of this issue does not reflect the wish of the author for this to be implemented
This is a feature request that tracks issues created over time and provides details from the viewpoint of a maintainer which may not be immediately obvious to end-users. It serves as a basis for further discussions.

Status quo
Over time we've added quite a few so-called "hooks" to the HttpInstrumentation that allow for customization of the emitted telemetry. This allows the addition of custom attributes the Spans created by the instrumentation.
A downside of this is that the more we add these hooks, the more it allows the user to change the telemetry that's being emitted from what is defined in the semantic conventions. Another downside of this is increased maintainance burden for maintainers, approvers and triagers - as the code becomes more complex, more bugs become possible and bug reports become harder and harder to work with. The interface also becomes more and more complex for users, and it leads users down a path where it becomes an expectation for the user that application-specific instrumentation happens in instrumentation-hooks and through the addition of attributes instead of creating their own child spans using the @opentelemetry/api which contain the needed data.
For metrics, though, no such hooks exist, they would come with the same risks and challenges as the existing hooks in HttpInstrumentation.
Common Feature request
A common request is that the same treatment that's given to Spans be given to metrics emitted by the HttpInstrumentation.
Here the case seems easy enough to make: There's no easy way to instrument all http calls made through the node:http and node:https and re-create the metrics in a different way, with added attributes. It stands therefore to reason that such a hook is necessary to allow the addition of custom-non-standard attributes to this metric.
The most common request, is the one of adding http.route. http.route is not collected by default as the HttpInstrumentation on it's own cannot safely determine a low-cardinality route, since it does not have access to the routing information of a higher-level package. Without http.route the emitted metrics become essentially useless, unless only a single endpoint is served by the service.
Instrumentations, such as @opentelemetry/instrumentation-express work around this limitation by using a feature of @opentelemetry/core that allows instrumentation on the server framework to attach metadata to the context. This metadata is then read back by @opentelemetry/instrumentation-http to and attached to both the Span's attributes and the Histogram datapoint that is being recorded.
Example 1 (excerpt from instrumentation-express):
const rpcMetadata = getRPCMetadata(context.active()); // retrieve rpc metadata from the active context
if (rpcMetadata?.type === RPCType.HTTP) {
    rpcMetadata.route = route || '/'; // set the route, http instrumentation will pick that up and attach it to the span/metric as the `http.route` attribute
}

Here @opentelemetry/instrumentation-express and similar instrumentations do ensure that the route value is low-cardinality.
Users may take a similar approach as @opentelemetry/instrumentation-express does, by setting the metadata on the context themselves, either during the handling of the HTTP request on the server-side or in one of the hook offered by @opentelemetry/instrumentation-http, which comes out to be the same thing. While doing so, users have to be careful to ensure that the values provided as that metadata actually reasonable match that of a route - but in essence, this feature already exists for the http.route attribute. It does however, need a global ContextManager to be registered, which may not be the case when only exporting metrics from an app, and enabling the ContextManager introduces overhead.
Example 2 (adding metadata when handling the request):
const server = http.createServer((req, res) => {
    const rpcMetadata = getRPCMetadata(context.active()); // retrieve rpc metadata from the active context
    if (rpcMetadata?.type === RPCType.HTTP) {
        rpcMetadata.route = 'my-custom-route'
     }
    res.statusCode = 200;
    res.setHeader('Content-Type', 'text/plain');
    res.end('Hello, World!\n');
});

The second most common request is the one of adding arbitrary attributes to client and server metrics. For that, there is currently no workaround. The reasons for that can be found in the following section, "Risks".
Risks
Currently this feature being hard to use for http.route and not available at all for custom metrics has prevented less-metrics-savvy users from breaking their apps through high-cardinality metrics.
The question comes up from time-to-time to add attributes such as http.url (which can really be any URL) to a metric (example). Such a metric can cause significant problems in the user's app and downstream. Any attribute value creates a new metrics stream, and any metrics stream has to stay in-memory over the lifetime of the app to ensure that cumulative metrics work as-intended. This means that failure of the user to select an appropriate attribute will cause their app to run out of memory and crash. Further, their app will suffer an signficant performance impact from many newly created metrics streams.
To alleviate this issue, we will need to implement https://github.com/open-telemetry/opentelemetry-js/issues/4095 first. This will solve the problem of the crash, but the significant performance impact will remain if this interface is misused. Regardless of implementing this issue, the effects on downstream system can also be catatstropic, from out-of-memory OpenTelemetry Collectors and possible scaling problems of collector pipelines, down to excessive cost to the user for storing these high-cardinality metrics.
A possible path to implementing the feature
At first, we (@open-telemetry/javascript-maintainers) need to make the following decision:
Do we even want to support adding custom attributes for metrics?

[!NOTE]
Update 06 Nov 2024, we've decided to go with this approach do not start working on implementing this actual feature. For now contributions are welcome on the prerequisites as they are more general features required by the specification. Only then we will allow the actual feature to be added.

If the answer to that question is YES (Update 06 Nov 2024, we've decided to go with this approach):

[x] we need to reach out to the Semantic Conventions SIG and ask for their guidance, if their guidance is that we SHOULD NOT add non-specified attributes to these metrics, we should strongly consider following their advice and change our answer to NO.

Update 14 Oct 2024 This has been brought up by the Semantic Conventions SIG and there is precedence for this already.  With https://github.com/open-telemetry/semantic-conventions/issues/1475, they will add that info that this is allowed to the docs.

[ ] (prerequisite) we need to implement https://github.com/open-telemetry/opentelemetry-js/issues/4095 first to avoid high-cardinality metrics causing end-user apps to run out of memory, as such an interface can easily be misused by a user in the ways mentioned in the "Risks" section.
[ ] (prerequisite) we need to implement https://github.com/open-telemetry/opentelemetry-js/issues/4096 to reduce the impact of high-cardinality metrics on the compute resources needed by the app when the interface is misused
then we can implement this feature

Outdated (06 Nov 2024) the API for adding custom attributes SHOULD be designed in such a way that it is impossible for users to add metric attribute values that they do not know in advance. This can be done, for instance, by requiring a map when instantiating the hook, that contains all possible known keys and values for the attributes that can be produced by the hook. See "Attachment 1 (proposed API)" below. This API prevents high cardinality data, but we expect a metrics attribute hook to set a precedent for other instrumentations (possibly thrid-party instrumentations) to do similar things. Since these other instrumentations may decide to be less careful with what they allow, we still SHOULD implement the prerequisites listed above as a safeguard.
Update 06 Nov 2024 the API should follow "Attachment 2 (proposed API without safeguards)" as the cardinality limit specification (#4095) and bugfix for (#4096) is expected to alleviate issues that come from any misuse of the API.

Outdated (06 Nov 2024) If the answer to that question is NO:

we need to consider if we want to simplify the way users can add the http.route attribute through a hook
if yes: we also need to implement https://github.com/open-telemetry/opentelemetry-js/issues/4095 and https://github.com/open-telemetry/opentelemetry-js/issues/4096 first for the same reasons as stated above.

This issue is considered done when

[x] Semantic Conventions SIG has given the go ahead for this.
[x] Maintainers have reached a decision on whether we want this feature to be implemented or not

[x] A follow-up type:feature issue that condenses the implementation-relevant information from this issue has been created and linked on this issue. The created issue has been marked as blocked until the prerequisites are done (#4095, #4096).

Update Nov 11, 2024: #5135 has been created to track implementation

Links
Previous requests

https://github.com/open-telemetry/opentelemetry-js/issues/4890 (adding request path stripped of query params, might run into high-cardinality problems)
https://github.com/open-telemetry/opentelemetry-js/issues/4317
https://github.com/open-telemetry/opentelemetry-js/issues/3694
https://github.com/open-telemetry/opentelemetry-js/issues/4474
https://github.com/open-telemetry/opentelemetry-js/issues/3683
https://github.com/open-telemetry/opentelemetry-js/issues/4943
https://github.com/open-telemetry/opentelemetry-js/issues/5110
#5129

Resources referencing other implementation of this feature

https://learn.microsoft.com/en-us/aspnet/core/log-mon/metrics/metrics?view=aspnetcore-8.0#enrich-the-aspnet-core-request-metric

Attachment 1 (proposed API)

[!NOTE]
outdated, we will use the poposed API from Attachment 2 with no safeguard

new HttpInstrumentation({
  incomingRequestMetricAttributeHook: {
    // required property, not optional.
    possibleAttributes: {
      'http.route': [ 'my/route/foo',  'my/route/bar' ]
      'my.custom.attribute': ['foo', 'bar', 'baz']
    },
    (request) => {
       return {
           'http.route': determineRoute(request.url), // value will be filtered by instrumentation-internal logic if value does not match one of the values above, and replaced by "filtered" or "unknown"
           'my.custom.attribute': 'foo123', // gets filtered because it does not match a value from the possible values for 'my.custom.attribute' above, and replaced by "filtered" or "unknown"
           'my.unknown.attribute': 'foo', //gets removed completely from attributes as the key is not known above.
       }
    }
  }
});

(this is a proposal I created after @dyladan's suggestion to design the interface in a way that makes it hard/impossible to misuse)
Attachment 2 (proposed API with no safeguards)
new HttpInstrumentation({
  incomingRequestMetricAttributeHook: (request) => {
      return {
           // it is up to the user to return a reasonable amount of key-value pairs here, this needs to be properly documented.
           'http.route': determineRoute(request.url), // functionality to determine route is up to the user, it's up to the user to ensure that data is not high cardinality
           'my.custom.attribute': 'foo123, // any custom attributes are allowed
       };
   },
   // same behavior for outgoing hook
});

Hi all, I'm closing this feature-request as ACCEPTED as it has been refined into #5135.
It will be ready for implementation once #4095 and #4096 are implemented.  #5135 will track implementation and is blocked until the aforementioned prerequisite issues are done.


[Bug][Oracle] Fix option to not include.schema.changes

Search before asking

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

Flink version
1.16.1
Flink CDC version
2.4.1
Database and its version
Oracle 19 & 21
Minimal reproduce step
I was trying to circumvent the option to include schema changes (which results in the error #2315) in the Oracle CDC connector by setting include.schema.changes to false. Example:
JdbcIncrementalSource<String> oracleChangeEventSource =
	new OracleSourceBuilder()
  	...
	    .includeSchemaChanges(true)

to
JdbcIncrementalSource<String> oracleChangeEventSource =
	new OracleSourceBuilder()
  	...
	    .includeSchemaChanges(false)

What did you expect to see?
Not the bug related to #2315 because it shouldn't produce schema changes at all.
What did you see instead?
I did see the bug mentioned by #2315
Anything else?
The reason for why it didn't work is because the option to not include schema changes is not propogated to the Debezium engine (see fix). The default option in Debezium Engine is to include schema changes.
I propose a fix similar to the Postgres implementation & the default SourceFunction behaviour.
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

See MR #2351

@rbreejen You should refer oracle connector page to find out, how to pass configurations to debezium.


Websocket Instrumentation triggers build error in Crystal 1.6.0

This is happening in a Lucky app -- will update with more information when I've got a public build that can reproduce the error here easily.
#27 78.63 Error target app failed to compile:
#27 78.63 Showing last frame. Use --error-trace for full trace.
#27 78.63
#27 78.63 There was a problem expanding macro 'add_method_hooks'
#27 78.63
#27 78.63 Code in macro 'trace'
#27 78.63
#27 78.63  1 | add_method_hooks(
#27 78.63      ^
#27 78.63 Called macro defined in lib/tracer/src/tracer.cr:81:1
#27 78.63
#27 78.63  81 | macro add_method_hooks(method_name, block_def = nil, &block)
#27 78.63
#27 78.63 Which expanded to:
#27 78.63
#27 78.63  > 16 | OpenTelemetry.trace.in_span("HTTP::WebSocket do close") do |span|
#27 78.63  > 17 |   span.client!
#27 78.63  > 18 |   span["close_code"] = close_code.to_s
#27 78.63                                ^---------
#27 78.63 Error: undefined local variable or method 'close_code' for HTTP::WebSocket
#27 78.63
------

I have the same issue

@wyhaines are you still actively maintaining this project?
If you want can make me a maintainer, happy to help out


Radar Opacity

So I noticed Attic Radar got updated and i noticed how the radar is overlaying other layers. Can you add a feature to allow users to adjust the opacity of different layers.

Thanks for the issue!
That would be a rather immense task, as most of the layers (e.g. metars, surface fronts) are directly drawn on by the Mapbox API, so you would have to do some wrangling to set a universal opacity per layer. Plus, the added time spent creating an entire HTML menu for that isn't worth it at this time, in my opinion.
However, I do see that the radar plot is overlaying the metars, and that isn't what's supposed to happen. I just pushed the commit 295fa4f, which should make the order go, from back to front:
radar -> metars -> surface fronts
In the future, I might create a menu where you can adjust the order of the setLayerOrder() function, but for now, I'll leave this issue open so that you can let me know if you agree with the fixed layer order.
Thanks!


Remove node signpdf

Motivation
We don't need node-signpdf anymore.
Change Summary
Remove node signpdf and update to create zkey is working in another branch.
Merge Checklist
Choose all relevant options below by adding an x now or at any time before submitting for review

[ ] PR title adheres to the conventional commits standard
[ ] PR has a change set
[ ] PR has been tagged with a change label(s) (i.e. documentation, feature, bug fix, or chore)
[ ] PR includes documentation if necessary.

Additional Context
If this is a relatively large or complex change, provide more details here that will help reviewers

@gitpoap-bot @vuvoth


Can't create Usergroups

I am using only ldap for authorisation. i would like to use groups, but as you can see in the screenshot, i have nothing to work with, and yes i am an administrator

@ChrisPea that's certainly unexpected.  Can you check if there's anything in the JavaScript console of your browser showing an error?  That's most likely the cause of that widget not rendering.

I tagged this with labels because this type of issue is important, but it's of course not actually actionable until we have the traceback/error making clear what the problem is.

fyi – User Groups work fine with only LDAP in release 2.1.0. No JS errors in console under Chrome & Firefox.

@ChrisPea can you add any details on an exception from the javascript console?  If not, we may need to close this as not reproducible / lacking details.


Excel 97-2003 cannot be opened using ExcelDataReady:CreateBinaryReader with the following exception:  {"Invalid file signature."}.

Hello there,
I am trying using ExcelDataReader to read an old excel 97-2003 with extension ".xls" using MVC 5 and it throw the following exception: {"Invalid file signature."}.
Can you please help and let me know if you like me to share with you the excel file.
Thanks

Hi @mrefai, Yes, if you can share the .xls please do. Alternatively, have you tried using CreateReader() instead of CreateBinaryReader, just to be sure?

Btw, it might help to see your code too. Also check if you are seeking in the stream before calling CreateReader? It expects the current file position to be at the start of the file. I guess this could happen f.ex if using a MemoryStream

Thanks for the quick response,
Actually I tried both CreateBinaryReader and CreateReader. When using CreateReader I am getting the following exception "{"Object reference not set to an instance of an object."}". and btw as you see the below code, I do not use any seek.
And I could not attach the xls file as it is not supported here..I can however email it to if u like..
protected void ImportXlsExcelReader(HttpPostedFileBase upload)
{
if (upload != null && upload.ContentLength > 0)
{
Stream stream = upload.InputStream;
IExcelDataReader reader = null;
if (upload.FileName.EndsWith(".xls"))
{
reader = ExcelReaderFactory.CreateBinaryReader(stream);
//reader = ExcelReaderFactory.CreateReader(stream);
}
else if (upload.FileName.EndsWith(".xlsx"))
{
reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
}
//reader.IsFirstRowAsColumnNames = true;
DataSet result = reader.AsDataSet();
reader.Close();
}
}

Hi,
Github blocks uploads with filename extensions it doesn't recognize. To upload .xls here, either zip it first, or simply rename the file to .zip.  =)
First make sure you use latest ExcelDataReader 3.1 packages. I cannot quite match your description with the expected behaviour in latest version (I see that IsFirstRowAsColumnNames is commented out, which might indicate you are, but please confirm)
Afaik HttpPostedFileBase.InputStream is a forward-only stream, so it cannot be used directly with ExcelDataReader because it uses seeking (ExcelDataReader should have a better error message here!)
Side-point: note that testing for upload.FileName.EndsWith(".xls") does not match if the user uploaded a file with ".XLS" extension or similar.
Suggest to read the data into a MemoryStream first, reset the stream Position to 0, then use CreateReader to read from the MemoryStream. CreateReader auto-detects the file format without relying on file name extensions
The same code could be written like this:
protected void ImportXlsExcelReader(HttpPostedFileBase upload)
{
	if (upload != null && upload.ContentLength > 0)
	{
		var stream = new MemoryStream();
		using (upload.InputStream) {
			upload.InputStream.CopyTo(stream);
		}
		stream.Position = 0;

		using (var reader = ExcelReaderFactory.CreateReader(stream)) {
			var result = reader.AsDataSet();

			// use result DataTable here
		}
	}
}

This is untested, hopefully no typos or wrong assumptions! It could be improved to handle parser errors with a try/catch around the using (var reader ...) block

Thank you very much for the help, I tried your code and still having the same exception {"Object reference not set to an instance of an object."}.
I changed the file extension to zip and uploaded it so you can double check.
Thanks again..
LastSample.zip

It's an .ods :) It's not an Excel file, but probably a renamed OpenOffice/LibreOffice spreadsheet. Alas ExcelDataReader can't read those at the moment.


Cannot use nix-env from regular user

Like #5713, I was unable to install packages from my limited user. However, I am using Bash, not zsh. My NixOS version is 15.09.911.53286a8 (Dingo).
[sven@nixos:~]$ nix-env -i openttd
error: Nix database directory ���/nix/var/nix/db��� is not writable: Permission denied

(Ignore the mojibake, I'm having some trouble with my local shell - this is in an SSH session.)
I followed the suggested workaround by specifying export NIX_REMOTE=daemon, which worked. I also attempted to set programs.bash.enable = true;, which resulted in this message after a rebuild:
warning: The option `programs.bash.enable' defined in your configuration no longer has any effect; please remove it.

However, no .bashrc, .bash_profile or .profile was generated for my user at all, with or without the setting. The following is my extraUsers configuration in /etc/nixos/configuration.nix:
  users.extraUsers.sven = {
    isNormalUser = true;
    uid = 1000;
    openssh.authorizedKeys.keys = ["<snip>"];
  };

Is there something I'm missing here, or is this actually a bug?
EDIT: To clarify, I've SSH'ed in as root, and did su sven to drop down to the user.

To clarify, I've SSH'ed in as root, and did su sven to drop down to the user.

That seems to be the problem. When I su myUser from root, the env variables aren't correctly set up; in particular, $NIX_REMOTE is missing. With normal login all works fine for me.

I don't really know these commands properly, but perhaps one's supposed to use su -l myUser instead. That fixes the problem for me.

Shouldn't it still use a .profile, even with a login shell? There don't seem to be any generated user configuration files at all for my user. Either way it should probably generate this for .bashrc as well, if it doesn't do so already.

There are some /etc/* files sourced IIRC.

FWIW, I just tried this with fish as my user shell, and it works fine.

Right. I understand that using a login shell works around it, but this should really work without a login shell as well - is there a similar file in /etc for the .bashrc (ie. non-login shells), perhaps?

I understand that using a login shell works around it, but this should really work without a login shell as well

That error has nothing to do with whether you're using a login shell or not. The issue is that your environment isn't set up properly and therefore your nix-env tries to access files directly instead of going through nix-daemon, like it should. You can probably remedy this issue by running "source /etc/profile".
Anyhow, when you log in as root, then you'll get an environment in which Nix can be run as root. It seems unrealistic to expect that you can switch to a different user without fixing your environment and have Nix still work properly like before.

Isn't the purpose of the configuration in /etc/profile to make Nix function through the daemon regardless of what user account is being used? Given that, it makes no sense to make it depend on how the user account is accessed.
If NixOS is to provide a consistent user experience, then the following two scenarios should both work correctly out of the box:

Log in directly to a user (whether over SSH or on a local terminal)
Log in to another user, and su to the target user

Right now, only scenario 1 is supported. What technical reason is there not to make scenario 2 behave the same, especially given that this is a fairly common pattern on multi-user systems?
And yes, it absolutely has to do with it using a login shell - /etc/profile is only executed for login shells. It even says so in the file itself. For non-login shells,/etc/bashrc is run (which also exists, but does not set NIX_REMOTE).
In short: "the environment isn't set up properly" should not be my problem as an end user. It's not transparent to me how or why it works in one case but not the other, so why would I (or any other end user) be expected to fix it? This is something that needs to work out of the box to make NixOS' abstraction hold up.

I don't know ... I don't believe that logging in as root and then su'ing to another user is a "common pattern".  I certainly don't work that way. I would say that the common pattern is to do the exact opposite, i.e. most people seem to log in as a normal user and then su to become root when they need to.

It is a very common when configuring things for other users on a system that you have root access to. Regardless, it should be a supported pattern - not every shell is a login shell.

So you seem to be saying that there should be no differences between login shells and non-login shells, right? Because you don't want to request a login shell, but you want everything to work anyway. Clearly that expectation cannot be met if the environment of login shells differs from non-login shells in any way.

I expect things to work in a non-login shell like they work in a login shell, if there is no technical reason for them to differ. The NIX_REMOTE variable is one of those cases - it clearly works fine in a non-login shell, so why shouldn't it be set by default?

I was asking a very specific question about a very specific thing, i.e. the shell environment. Would you say that the environment defined by a non-login shell must always be identical to that defined by a login shell?

If there are no technical reasons for there to be a difference, then sure. I have no idea whether there are.

I am sorry, but I don't feel like I'm making progress understanding your POV. The question I asked can be answered with yes or no, but I feel like I'm not getting either answer.
Anyway, my expectation is that "su username" changes the uid to that user but leaves my current shell environment untouched. If I want the shell environment to change, then I run "su - username". This approach has worked just fine for me for 20+ years of working on Unix, and NixOS is no exception there. If you'd like different semantics implemented, then maybe it's best to propose a concrete change by means of a PR.


Cannot use BoxedDsl with delete.

A query that has been created dynamically with into_boxed() can't be passed to diesel::delete. Is there an alternative for dynamically adding filters to deletes or is there no workaround for this feature that looks like it's missing?

I think this is probably a bug as I don't see why boxed queries shouldn't be used with a delete statement.

The reason the impl isn't there is that not all boxed queries are valid delete statements. If any clause is present other than the where clause, it would result in an error. However, now that we have filter on Update and DeleteStatement directly, I'd be fine with a separate BoxedDeleteStatement and BoxedUpdateStatement (or even just boxing the where clause on those by default -- there's not a huge drawback to doing so)

I would like to give it a try.
However, I am not very fluent in Rust and I totally don't understand how Diesel works.
Do you have extra-patience for this? 😄

@ivanovaleksey I appreciate the offer, but this has already been mostly implemented (support for delete statements is merged, I have a branch with support for update statements that I need to clean up one last thing on before pushing up)

Yeah, I see merged #1534 and I wonder doesn't it close this issue.
Thank you for your work!


python310Packages.google-cloud-videointelligence: 2.11.0 -> 2.11.1

Changelog: https://github.com/googleapis/python-videointelligence/blob/v2.11.1/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 225612 run on x86_64-linux 1

2 packages built:

python310Packages.google-cloud-videointelligence
python310Packages.google-cloud-videointelligence.dist


custom remote write decompress with snappy failed in FAILED_TO_UNCOMPRESS(5) sometimes

Bug Report
What did you do?
I need a custom remote write module and implement it with java.
**What did you expect to see?
Snappy.uncompress() works stable.
What did you see instead? Under which circumstances?
Snappy.uncompress() failed sometimes with error IOException: FAILED_TO_UNCOMPRESS(5)
Attention please: not always failed, lots of time it's decompressed ok.
Environment

prometheus version: prometheus-2.13.1.linux-amd64

java snappy version:
org.xerial.snappy
snappy-java
<IP_ADDRESS>

java decompress method: org.xerial.snappy.Snappy.uncompress();

prometheus http request header:  user-agent=Prometheus/2.13.1; content-length=1881; content-encoding=snappy; content-type=application/x-protobuf; x-prometheus-remote-write-version=0.1.0;

System information:
Darwin xxMacBook-Pro.local 18.0.0 Darwin Kernel Version 18.0.0: Wed Aug 22 20:13:40 PDT 2018; root:xnu-4903.201.2~1/RELEASE_X86_64 x86_64

Prometheus version:
prometheus, version 2.13.1 (branch: HEAD, revision: 6f92ce56053866194ae5937012c1bec40f1dd1d9)
build user:       root@88e419aa1676
build date:       20191017-13:15:01
go version:       go1.13.1

Prometheus configuration file:

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']
  - job_name: dmg_sdk_test
    static_configs:
      - targets: ['<IP_ADDRESS>:33731']

# Settings related to the remote write feature.
remote_write:
  - url: "http://<IP_ADDRESS>:8080/simple/transmit"
    write_relabel_configs:
    - source_labels: [__name__]
      target_label:  metric_name

Prometheus Logs:

level=info ts=2019-11-09T10:14:16.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=1000 to=688
level=info ts=2019-11-09T10:14:36.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=688 to=439
level=info ts=2019-11-09T10:15:06.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=439 to=245
level=info ts=2019-11-09T10:15:36.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=245 to=132
level=info ts=2019-11-09T10:16:06.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=132 to=72
level=info ts=2019-11-09T10:16:36.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=72 to=38
level=info ts=2019-11-09T10:16:56.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=38 to=27
level=info ts=2019-11-09T10:17:26.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=27 to=14
level=info ts=2019-11-09T10:17:56.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=14 to=8
level=info ts=2019-11-09T10:18:06.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=8 to=6
level=info ts=2019-11-09T10:18:26.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=6 to=4
level=info ts=2019-11-09T10:18:46.556Z caller=queue_manager.go:559 component=remote queue=0:http://<IP_ADDRESS>:8080/simple/transmit msg="Remote storage resharding" from=4 to=3

Java Logs:

[ERROR] 2019-11-09 18:19:44.944 [com.dmall.prom.remote.receiver.receiver.ReceiverController][http-nio-8080-exec-79] - transmitReceiver handle request error!
java.io.IOException: FAILED_TO_UNCOMPRESS(5)
	at org.xerial.snappy.SnappyNative.throw_error(SnappyNative.java:98) ~[snappy-java-<IP_ADDRESS>.jar:na]
	at org.xerial.snappy.SnappyNative.rawUncompress(Native Method) ~[snappy-java-<IP_ADDRESS>.jar:na]
	at org.xerial.snappy.Snappy.rawUncompress(Snappy.java:474) ~[snappy-java-<IP_ADDRESS>.jar:na]
	at org.xerial.snappy.Snappy.uncompress(Snappy.java:513) ~[snappy-java-<IP_ADDRESS>.jar:na]
	at org.xerial.snappy.Snappy.uncompress(Snappy.java:488) ~[snappy-java-<IP_ADDRESS>.jar:na]
	at com.dmall.prom.remote.receiver.receiver.ReceiverController.transmitReceiver(ReceiverController.java:70) ~[classes/:na]
	at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) ~[na:na]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_144]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_144]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190) [spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) [spring-web-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:908) [spring-webmvc-5.1.9.RELEASE.jar:5.1.9.RELEASE]

Just to be clear, this is an issue that is only happening in your custom java code correct?
If so, records are only snappy encoded if the compression actually makes the data smaller, so you will have to check a header bit for each record to see if it is compressed or not. Do you handle that situation in your application?

@reallax About how often does the uncompress failure happen, and if the request is retried does it work? Also, do you have a minimal application I could try to build to debug this?
I have never seen a failure to uncompress snappy from any of my remote receivers, but they have also all been written in go.

@csmarchbanks sorry for the late reply. In my opinion, the error frequency is a little high.Here is my test demo.
`import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import org.xerial.snappy.Snappy;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.util.concurrent.*;
public class SnappyDecompressErrorDemo {
private static ExecutorService executorService;
private static HttpServer server;
private static int port = 8088;

public static void main(String[] args) {
    try {
        server = HttpServer.create();
        server.bind(new InetSocketAddress(port), 3);

        executorService = new ThreadPoolExecutor(
                5, 5, 0,
                TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>(),
                Executors.defaultThreadFactory());

        server.createContext("/simple/transmit", new CustomHandler());
        server.start();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public static class CustomHandler implements HttpHandler {

    @Override
    public void handle(HttpExchange h) throws IOException {

        int len = 0;
        try {
            Headers headers = h.getRequestHeaders();

            // result same thing

//                len = h.getRequestBody().available();
len = getContentLength(headers);
            byte[] compressBytes = new byte[len];
            InputStream is = h.getRequestBody();
            is.read(compressBytes, 0, len);
            is.close();

            // try decompress
            byte[] clearBytes = Snappy.uncompress(compressBytes);
            System.out.println(String.format("* content length: %s, clearBytes: %s", len, clearBytes));
        } catch (Exception e) {
            System.out.println(String.format("# error! content length: %s", len));
            e.printStackTrace();
        }
    }

    private int getContentLength(Headers headers) {
        String len = headers.get("Content-length").get(0);
        return Integer.valueOf(len);
    }

    private void printHeaders(Headers headers) {
        for (String key:headers.keySet()) {
            System.out.println(key + " : " + headers.get(key));
        }
    }
}

}`
you need jdk1.8, and maven dependecy:
<dependency>             <groupId>org.xerial.snappy</groupId>             <artifactId>snappy-java</artifactId>             <version><IP_ADDRESS></version>         </dependency>

@reallax I have managed to reproduce for large payloads (setting max_samples_per_send to 1000 reproduces it every time). I am not yet sure if it is an issue with Prometheus setting the content length, or something in the snappy library not processing large inputs.
In the meantime, by using SnappyInputStream rather than the content length, I have not had any failures decompressing the data. E.g.
        public void handle(HttpExchange h) throws IOException {

            try {
                SnappyInputStream is = new SnappyInputStream(h.getRequestBody());
                WriteRequest wr = WriteRequest.parseFrom(is);
                is.close();

                System.out.println(String.format("*  wr.count: %s", wr.getTimeseriesCount()));
                h.sendResponseHeaders(200, -1);
            } catch (Exception e) {
                System.out.println(String.format("# error!"));
                e.printStackTrace();
                h.sendResponseHeaders(503,-1);
            }
            h.close();
        }

Hope this helps, and I will let you know if I find out anything about why the content length method isn't working.

@csmarchbanks yes! It works, thanks very much.

We have looked into this issue during our bug scrub and it looks like this issue was resolved, or was in the snappy Java library. If you think it is an issue with Prometheus please let us know.


TreeView Icons

You say that icons can be added however I cannot find any examples on how to do this. How can this be done? I simply want to have an expanded and collapsed folder at the branch level and my own icon at the child level (level that no longer can be expanded).

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

ID: d5ba995b-8bf3-407c-7b87-015d22d813f1
Version Independent ID: 52c553b6-e94d-2810-4123-8ee215b002bf
Content: Tree view - UWP app developer
Content Source: windows-apps-src/design/controls-and-patterns/tree-view.md
GitHub Login: @jwmsft
Microsoft Alias: jimwalk

@jpcoates You can add it by creating a model for the template
`<Page.Resources>

    <Style TargetType="TreeView">
        <Setter Property="IsTabStop" Value="False" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="TreeView">
                    <TreeViewList x:Name="ListControl"
                                  ItemTemplate="{StaticResource TreeViewItemDataTemplate}"
                                  ItemContainerStyle="{StaticResource TreeViewItemStyle}"
                                  CanDragItems="True"
                                  AllowDrop="True"
                                  CanReorderItems="True">
                        <TreeViewList.ItemContainerTransitions>
                            <TransitionCollection>
                                <ContentThemeTransition />
                                <ReorderThemeTransition />
                                <EntranceThemeTransition IsStaggeringEnabled="False" />
                            </TransitionCollection>
                        </TreeViewList.ItemContainerTransitions>
                    </TreeViewList>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Page.Resources>`

This is an incomplete example and doesn't work as expected.  It doesn't replace the default image, it adds a new one.  In addition, the example should include code-behind to handle the three image states, open, closed, and no children.

I'm seeing an issue with the default icons not working, using the Windows Insider Preview, that may require the same fix for this issue needs.

Thanks for reporting this issue! This turned out to be a regression on our side that we fixed recently. The fix should be in insider flights soon.

This issue should not be closed.  The original complaint has not been addressed.  Three public properties should be added to the control to support specifying custom icons such as this:

@thomas-yost this sounds like a feature request for the TreeView control. Now that Xaml controls are open source, the best way to track this request is directly in the microsoft-ui-xaml repo. Would you mind opening a new feature request there?


Add pkg-config to our RPM build environment

While hack/make.sh checks for systemd headers using pkg-config (part of https://github.com/docker/docker/pull/13707), we forgot to ensure that they were there in the images that we use for building binaries for RPM-based distributions.  Add the right packages to the generate.sh that we use for them, and update the copies of the generated files that we carry in the source tree.  This is more or less the complement to https://github.com/docker/docker/pull/19598.
Notes: Fedora, CentOS, and Oracle Linux put the pkg-config command in the "pkgconfig" package, while OpenSUSE calls the package "pkg-config".  The systemd-devel package, like systemd, is not in Oracle Linux 6.

Please sign your commits following these rules:
https://github.com/docker/docker/blob/master/CONTRIBUTING.md#sign-your-work
The easiest way to do this is to amend the last commit:
$ git clone -b "master-deb-pkg-config" git@github.com:nalind/docker.git somewhere
$ cd somewhere
$ git commit --amend -s --no-edit
$ git push -f

Ammending updates the existing PR. You DO NOT need to open a new one.

Oh man, it's not in the RPM standard build deps either??  Ouch.
LGTM :+1:

LGTM


chore(testproxy): Remove TestCheckAndMutateRow_Generic_DeadlineExceeded from known failures

Another code change simultaneously addressed the TestCheckAndMutateRow_Generic_DeadlineExceeded test so we can remove it from known failures.

https://github.com/googleapis/nodejs-bigtable/pull/1560 was merged instead of this


HTML5 notification when for new messages in INBOX

Requirements

If newMessageCount of inbox folder is > 0, an HTML 5 notification should be sent to the user


how to control the flickering scroll

https://github.com/hoaphantn7604/react-native-element-dropdown/assets/133006606/90372216-0737-4266-8f7d-a3b32f7b5a6c
i was using older react native dropdown which was not having this issue. if we select anything it shows a scroll which looks like a flicker. it should be there by default instead going to selected value after the opening and showing the scroll

I have the same issue, did you find any way to solve this problem¿?

Try to set autoScroll property to false

@vksgautam1986 @denka9999  Instead of just making autoScroll={false}. Make autoScroll={false} and use flatListProps for more control. You'll need to configure a few additional parameters, as demonstrated in the example below:

initialScrollIndex: activeIndex >= 0 ? activeIndex : 0
getItemLayout: getItemLayout: (_, index) => ({ length: TOTAL_HEIGHT, offset: TOTAL_HEIGHT * index, index })

In my case, TOTAL_HEIGHT is the sum of the renderItem height and the height of the ItemSeparatorComponent. With these settings, the correct element will always open smoothly, without any glitches or unnecessary animations.
Here’s an example:
const activeIndex = useMemo(
  () => findIndex(data, item => item.value === field.value) || 0,
  [data],
);

<Dropdown
    autoScroll={false}
    flatListProps={{
       ItemSeparatorComponent: () => <View style={{ height: 1, width: '100%', backgroundColor: 'grey' }} />,
       initialScrollIndex: activeIndex >= 0 ? activeIndex : 0,
       getItemLayout: (_, index) => ({
           length: 45,
           offset: 45 * index,
           index,
       })
    }} />


Utter confusion on the input and output directories

Not a bug and probably me just being clueless but I find this cumbersome to use due to a lack of awareness on what paths to use for the input and output.  I have the software installed on my C drive but am outputting and writing outputs to my D drive.  I think I'm pointing things to the right location and get error messages saying
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'outputs\D:\nerfoutput\nerfacto\2023-02-07_081722'
Anywhere in the documentation that explains how to deal with this?  Is this only looking for the transforms.json created in the colmap process?  If so it's written to my D drive.... at the directory D:\nerfoutput

I have this same problem. I feel like the "output" dir should be added at the end of the path, not the front. I had to resort to loading data the old way instead of using the new ns-process.


TemplateStream.dump() crash

This is the traceback
 [...]
    stream.dump('ccc')
  File "xxx/virtual/lib/python2.7/site-packages/jinja2/environment.py", line 1133, in dump
    close = False
TypeError: writelines() argument must be a sequence of strings

I can't reproduce this issue as described. Closing due to age.


Adding suppport passing strings to fuctions.

What was wrong?
This fixes #43
How was it fixed?
Support passing through ABI string types to underlying RPC.
Cute Animal Picture

Merging changes in #46 where merge conflict is resolved.


assignment 1 to download a file from a server without a web browser

This works perfectly fine, Sir.
Verbose :

Able to access the file sample_1.txt from http://local.server using command wget and save it as s1.txt.
The command synchro eval evaluates answer script successfully.

Sir, we can set executable permission only on that file so that students can not read or write to it.


The nodes of a way aren't imported in SQLite

In the sqlite implementation, the WriteWayNodes-function doesn't get any nodes from the way. The query does work (tested in sqlite3 directly) but the nodes seem to be empty. For implementation please see here

Tried to understand imposm3's decoding, looks like the nodes of the way aren't populated at all. Is there a way we can do it using the references?
https://github.com/omniscale/imposm3/blob/master/parser/pbf/pbf.go

The number of way nodes is equal to the length of the refs and the node Id is the value of refs. These ref values are supposed to be the node Id's. But node Id value extracted from the refs are not present as a node in imposm3.
I used another package for osmPbf: https://github.com/thomersch/gosmparse/blob/master/elements.go. After testing, I found that the number of nodes produced by it was very large compared to imposm3 and it had all the nodes referred by the Refs.
Need some heads up here, thank you

Bingo found the solution.
We were parsing only the Nodes with tags in the Pbf.Parser method. We need to consider the Coords also as it parses all the nodes but which do not have any tags. These Way.Refs contain ids of the Coords and hence can be used to populate.
Will be sending pull request soon


Need more detail and tutorial on how to use the language model to decrease the word rate error.

📚 The doc issue

How do we build our own language model and add it to the language model, such as wav2vec2? However many of the solutions from the doc require using another library.

If 1 requires training the language model again, then It looks like we can use our own text file for the language model to form a bean search

https://github.com/facebookresearch/fairseq/issues/3157

I was working on a project for deaf students to have a subtitle. You know they found out that after wav2vec2 using a language model, such as n-gram the word rate error will be dropped. Thus, I was thinking to add a lecture note or textbook to decrease the WRE for college class subtitling. But a lot of language model implementation for Pytorch audio model requires other library, such as KenLM. But I was thinking if it is a n-gram model, it shouldn't be difficult to have it in Pytorch. If we want to deploy it in other language, such as Javascript, it will require ONNX in Pytorch, so we may need to write the language model in Pytorch rather than in KenLM
First, this has been asked that it looks like we do not need to train the language model(such as n-gram) again. We just need to put the text file that has all the possible words that we want the n-gram model to do the beam search.

But you can see the doc only gives you one line of code to "short cut" everything without telling the user how to use their own text file.
Again, if we look at the doc, we see "Builds CTC beam search decoder from Flashlight". Thus, how do we use our own language model? Again, my point of using my own language model is not because I have some powerful transformer models. It is I need to be clear on how the model handles the process of wav2vec2 output to text with the language model.
Thus this issue was proposed and asked, and I feel it was not explained detailly.
https://github.com/facebookresearch/fairseq/issues/3157
Suggestion: I prefer HuBERT since it is smaller than Wav2vec2.

Hi @JonathanSum, thanks for the question.
For beam search decoding, the language model is trained externally and plays a part in the decoder scoring function, affecting the WER. We currently only support n-gram language models, which you can train from scratch using KenLM. We plan to provide support for neural network LMs and build-your-own LMs in a future release.
The lexicon file consists of the possible words, and should correspond to the words found in the language model. This file is used to restrict the possible outputs of the decoder, and is not a replacement for the language model. It is formatted like follows, with a word and its corresponding spelling (in the form of the acoustic model tokens) on each line
able a b l e |
about a b o u t |
above a b o v e |
...
hello h e l l o |
...

Once you have the language model (arpa or bin file) and the corresponding lexicon files, you can pass them in to construct the decoder.
Some additional sources/documentation for how to use the decoder

torchaudio decoding tutorial, using a pretrained wav2vec2 model and downloadable LibriSpeech lexicon and KenLM files (the official versions passed through this script). This brings you through an example of how to set up and use the decoder.
flashlight documentation: provides more details and background on beam search decoding, and information about the tokens and lexicon files

@carolineechen do you know why it does not use ngram where n >= 2 in kenlm? it seems to only use unigrams in kenlm.
thanks!

@carolineechen
I didn't mean lexicon file for replacing the language model. I was saying if it consists of the possible word, can we add the additional possible word without training it again?
In addition, I hope we will have a tutorial on how to link the CTC model to Pytorch language model(n-gram or others).
For the Hubert model, it was in Pytorch lighting. I hope everything will be in pain Pytorch. There are some cases where it is difficult to run it with all different kind of libraries, such as KenLM and Pytorch Lighting.

@JonathanSum TorchAudio unfortunately does not support n-gram language model training, so if you want to use one, you can train one using KenLM. KenLM will output an arpa or binary file that you can then pass in to the TorchAudio decoder to decode with a language model. The lexicon file should contain the same set of words that the LM is trained on, otherwise if you add a word to the lexicon file that is not in the LM, then the LM would return a score of 0 when it sees that word. I'm not fully sure the performance consequences in that scenario.


2.0.0-alpha19: cannot use _measurement field for delete predicate

Steps to reproduce:
List the minimal actions needed to reproduce the behavior.

...
...
...

Expected behavior:
Describe what you expected to happen.
Actual behavior:
Describe What actually happened.
Environment info:

System info: Run uname -srm and copy the output here
InfluxDB version: Run influxd version and copy the output here
Other relevant environment details: Container runtime, disk info, etc

Config:
Copy any non-default config values here or attach the full config as a gist or file.

Logs:
Include snippet of errors in log.
Performance:
Generate profiles with the following commands for bugs related to performance, locking, out of memory (OOM), etc.
# Commands should be run when the bug is actively.
# Note: This command will run for at least 30 seconds.
curl -o profiles.tar.gz "http://localhost:8086/debug/pprof/all?cpu=true"
curl -o vars.txt "http://localhost:8086/debug/vars"
iostat -xd 1 30 > iostat.txt
# Attach the `profiles.tar.gz`, `vars.txt`, and `iostat.txt` output files.

@ravz i just tried in the latest master and could not reproduce. do you mind trying again with alpha 20 or latest master?

This is working as of v2.0.3, closing this


Conflict between content blocks

If two content blocks share the same name, or a content block on a page could contain request sensitive information, then the incorrect html content could be served to a user if the server is processing 2 separate requests asynchronously.
e.g.

2 requests come in to the server from 2 different users
the first request is processed and saves a content block, but then encounters an async helper function
the second request is then processed before the first is completed, and consumes the content block that was saved to the blocks object by the first request

I created a test for this in PR #148. It doesn't seem to be an issue but maybe my test isn't tested what you are saying @penx. Let me know.

Ok after thinking about it more I think I have a failing test now See https://github.com/barc/express-hbs/pull/148 @penx let me see if this can be fixed without much changing.


Amazon Cognito w/ Android

https://aws.amazon.com/cognito/
Probably these are also worth trying

https://www.dropbox.com/developers/datastore
https://www.parse.com/questions/using-parse-offline

Dropbox Datastore API is gone.
https://blogs.dropbox.com/developers/2015/04/deprecating-the-sync-and-datastore-apis/


Add delete bulk actions

Motivation

Since #3080, we now have delete bulk actions. For consistency, they should also get added to all other existing bulk actions
Proposed Solution

Add delete bulk actions
Alternatives

Non really, if we have delete bulk actions for contacts, there is no reason not to have them for other objects.

This Issue should also probably look into integrating the permission to delete requirement into get_permission_required() in bulk_action_views.py to reduce the times this method needs to be overwritten.


fix: Set proper pod port where prometheus metrics are exposed

Currently, prometheus-server tries to scrape metrics from pod's port 80 which isn't exposed.
According to default prometheus kubernetes_sd_config service annotation prometheus.io/port should point to pod's port instead of service port.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.radoslaw.andrusiak seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Remove dependency on Immutable.js

Instead of pulling in the full library, we should use plain objects that are created anew for each navigation rather than mutating existing objects.

Immutable is approximately, before Gzip, 64.52% of the router size.

HTML here -- generated with disc

Needs package version bump and npm publish so everyone can get the size reduction.


Safari, Mac, Chrome (after first time) cannot send request

Describe the bug
I cannot get any requests to send with the client. This is true universally for Mac and safari and in chrome it actually went through once, but only that one time. New windows or modifying query didn't work.
To Reproduce
Steps to reproduce the behavior:

Download the app or visit the web app
Enter https://www.graphqlhub.com/graphql
Enter query
query {
reddit {
...reds
}
}

fragment reds on RedditAPI{
subreddit(name: "wholesomememes"){
name
fullnameId
title
publicDescription
accountsActive
subscribers
created
createdISO
}
}
4. No error, no indication that we can send anything by pressing the green button or any combination of enter, shift+enter, shift+cmd+enter, etc. commands
Expected behavior
Some UI feedback to indicate that a request is sending. Then I expect the query to go through or provide an error in the rhs pane.
Screenshots

Desktop (please complete the following information):

OS: OSX 10.13.6
Browser: safari 11.1.3
Altair version: 1.7.6

Hello @bpollock-vida I can't reproduce the issue you are having. I used the same query above and ran it, ran it again, modified it then ran it again, and it loaded all the time. Could there be some other reason why it wasn't working for you? Maybe a network issue? Proxy issue?

Also, the shortcut for sending the request without clicking the green button is Cmd+Enter

I'm getting this from the desktop client also.

@damiangreen Can you please give more context. I can't seem to reproduce the issue.

As of this message, the send request button works. It did not all yesterday with different graphql endpoints, maybe there was something on your end that was failing silently.
There isn't anything special with my network configuration.

Glad to hear that, but I didn't make any updates to the app. Also the app runs locally on your machine, and not on any server.

Like I said, maybe your app silently fails in some cases when it encounters issues. Clicking that button or pressing cmd+enter didn't cause any visual change in the UI.


rtpsource cannot interpolate rtp time (green video)

Though I'd create a separate issue for this one, although the resulting problems are still occassional green/missing video on the A-side, and consistently green video on the B-side.
I have been testing the local video capturing in the iOS build of OpenWebRTC on an iPad Mini Gen 1 (armv7) using demo.openwebrtc.io:38080.
A-side: iOS 8.1.3, iPad Mini Gen 1
B-side: Chrome 41.0.2272.76 (64-bit) on OS X 10.10
Turned on GST_DEBUG with warnings and noticed that there are a number of rtp-related warnings appearing in the log around the time that the video turns green:
rtpsource rtpsource.c:1412:rtp_source_get_new_sr: no clock-rate, cannot interpolate rtp time

/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1/GstFunnel:funnel.GstPad:src: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)95dc7f02fb08cee18153faecf1ed16442e3899f029824b7b903f58bba0dc\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:src: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)95dc7f02fb08cee18153faecf1ed16442e3899f029824b7b903f58bba0dc\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstNiceSink:nice-rtp-sink-1.GstPad:sink: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)95dc7f02fb08cee18153faecf1ed16442e3899f029824b7b903f58bba0dc\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"
/GstPipeline:transport-agent-1/GstBin:transport_bin_1/GstBin:send-output-bin-1/GstErDtlsSrtpEnc:dtls_srtp_rtp_encoder_1.GstGhostPad:src.GstProxyPad:proxypad9: caps = "application/x-srtcp\,\ srtp-key\=\(buffer\)95dc7f02fb08cee18153faecf1ed16442e3899f029824b7b903f58bba0dc\,\ srtp-cipher\=\(string\)aes-128-icm\,\ srtp-auth\=\(string\)hmac-sha1-80\,\ srtcp-cipher\=\(string\)aes-128-icm\,\ srtcp-auth\=\(string\)hmac-sha1-80"

The above seems to happen just before/after a pipeline change?
During the video call I'm also seeing the following rtpjitterbuffer warnings:
rtpjitterbuffer rtpjitterbuffer.c:449:calculate_skew: resync to time 0:00:15.217295000, rtptime 6:15:23.385266666
rtpjitterbuffer rtpjitterbuffer.c:487:calculate_skew: delta - skew: 0:00:03.569738000 too big, reset skew

I worked around the cannot interpolate rtp time issue in my fork by implementing a request-pt callback for rtpjitterbuffer that passes on the caps including the clock-rate. Does not seem to completely solve the green video issue.
https://github.com/ijsf/openwebrtc/commit/997ac7e5b5a07572de2d6cd554d4788448c75d34

For which pt is it requesting the caps? Isn't it complaining about no clock-rate on the RTCP caps?
But it would make sense probably to keep a pt->caps map around and let rtpbin request caps from that in any case.

I'm not sure yet. What I can tell from the logs is that there is a proxypad GstRtpBin:rtpbin.GstGhostPad:recv_rtp_src_1_2426246665_100.GstProxyPad and it contains a clock-rate in the caps.

It seems something odd is going on with the timing. Perhaps this has to do with the performance on the iPad, or with the system time synchronization mechanism on iOS that gstreamer apparently relies on.
I've tried to change rtpbin to use the pipeline running-time instead of the system clock (if I understand this correctly, see discussion at http://comments.gmane.org/gmane.comp.video.gstreamer.bugs/72342), and the above messages as well as the green video disappeared altogether. Video was significantly lagged (5 seconds or so) but was coming through nicely.
Patched this in my own fork: https://github.com/ijsf/openwebrtc/commit/2341b1b75fdad0c228384253a6ccfb81c434c370

Yeah if everything is too slow, RTP won't work very nicely.

It has to be real-time! :smiley:

Although some commits in my fork may improve RTP handling for non real-time cases, the actual green video issue seems to be unrelated to RTP and can be closed. See: https://github.com/EricssonResearch/openwebrtc/issues/260


How to ignore IOS silent switch?

Hey,
In my HTML I have an iframe of a video from youtube or vimeo, but there is not sound even when in native video fullscreen when the silent switch is on.
How do you ignore it like the react-native-video IngoreSilentSwitch?

    if (WebView.defaultProps == null) WebView.defaultProps = {};
    WebView.defaultProps.useWebKit=true;

This may have solved the issue


Add docstrings and more comments to code

For long term success, it is important to fully document key areas of code for reusability and later implementation.

After merging major-refactor, just about every method has a docstring and moving forward every method created has a docstring. This issue is being closed because branch major-refactor brought tons of organization to the codebase.


Go to location settings not working on iOS 10 or above

showLocationSettings method now checks iOS version. If below 10, keep the same behaviour as today. Otherwise, use the updated settings string path.

Does not seems to work on iOS 11.

Works for me on iOS 11.2.
With previous version, it does work for you on iOS 11?

Just tested in on iOS 11.2. It opened settings but didn't jumped to Privacy -> Location Services

Ok apparently I did something wrong, because it's working now. Thank you for your PR. Will merge this.

FYI: This PR will be reverted. Reason https://github.com/mauron85/cordova-plugin-background-geolocation/issues/394


Gradle:Configure Project

i got the app to build yesterday. woke up today and decided to fire up android studio and work on the app, but it hangs at gradle configure project

We are debugging this. Can you help check the settings?

already done that

i was able to build the app before and even build an apk which i ran on my physical device. i closed my pc and went to bed only to get this error the next time i decided to run it again

its not an error but the configure gradle project takes forever, even after cloning

We introduced CheckStyle gradle plugin, it hangs the build under some condition, we are trying to fix it.
A walk around is uncomment the line apply from: rootProject.file("codestyle.gradle") in projectRoot/build.gradle.
I am so sorry to bother you.

ok tanks a lot. will try that now

still hangs for some wired reason

and that line of code has already been uncommented

here is another control project i built just to check if it want from my end. it built succesful

ly and i generated an apk for my physical device

i created a control project in java to be sure it wasnt caused at my end. Everything builds easily and i even generate apk for my physical device.

and that line of code has already been uncommented

Oh, sorry my fault. That line should be commented.

Closing as now fixed


Extract Settings data from report to JSON

Since June 30, the weekly report includes settings data (the "location origin" where an infection has been been found. E.g. https://github.com/J535D165/CoronaWatchNL/blob/master/reports/COVID-19_epidemiological_report_20200630.pdf table 6.
This is very helpful data in inspecting measures vs the effect. Is it possible that the extraction of this data can be done from the PDF's and stored in a nice JSON file?

This makes sense to digitalize this table. Especially the "Sinds 4 mei" column.
Let's parse this into something like this: https://github.com/J535D165/CoronaWatchNL/tree/master/data-misc/data-underlying/data-underlying_statistics

Please note that the "sinds 4 mei" column changes its dates in following reports. No idea why though.


set listener for suggestion items

how to dispatch event when tap on suggestion item ?

+1

setOnItemClickListener() it's the method you are looking for :)


Auto patch ADO package deployment image

What type of PR is this?
Feature
What this PR does / why we need it?
Push-button approach for patching the container image of the package deployment manifest.
Which Jira/Github issue(s) this PR fixes?
Relates to: https://issues.redhat.com/browse/MTSRE-1664
Pre-checks (if applicable):

[ ] Tested latest changes against a cluster
[ ] Ran make test-unit command locally to run all the unit tests and mock tests locally.
[ ] Included documentation changes with PR
[ ] Squashed your commits

Codecov Report

Merging #529 (1358076) into main (8b37924) will not change coverage.
The diff coverage is n/a.

Additional details and impacted files

@@           Coverage Diff           @@
##             main     #529   +/-   ##
=======================================
  Coverage   73.06%   73.06%
=======================================
  Files          51       51
  Lines        3289     3289
=======================================
  Hits         2403     2403
  Misses        743      743
  Partials      143      143

/lgtm


Make the importer a module of the API server so we can control it from inside the API server.

Started working on this, expected to be done today.


Update README.md

Right now, the README is just a NestJS standard README template. We should update it with project information.

Fixed in #21

Fixed in #21


Unpublished changes

Hey @gippy, @jirimoravcik is trying to update xls stream package, but found these changes which were unpublished on NPM. Can we publish them as latest? These changes are still in beta and in apify-core we are using the latest version.

There are some commits from @petrpatek as well, maybe he will know.

@drobnikj I don't, TBH. It was a pretty long time ago 😞

Ok, let's merge it and do proper testing with @jirimoravcik new release.


add the option to choose subtitle language

Thanks for the very useful tool! One idea: Your script could be English by default, and use other languages when needed.
It would be great if your script could let me add (i.e.) - lang=cn to the command line, adding --sub-lang=cn to the yt-dlp command. So that the resulting html file uses the language specified.

This will be a very nice option! Cheers from Argentina

I'd happily take a PR for this

I made some modifications to add llanguage option at the end of the command line. Maybe adding a default US language later?
Cheers!


[Jira] Part of Jira cloud users' emails are not shown in the table.users (the future table.accounts)

Search before asking

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

What happened
After collecting data from Jira(cloud), only part of users' emails is shown in the table.users (the future table.accounts). It might have something to do with the domain of user emails.
In my case, users with emails like<EMAIL_ADDRESS>have no emails in table.users;
while users with emails like<EMAIL_ADDRESS>have emails in table.users.
What you expected to happen
All users from Jira(cloud) have email info in the table.users (the future table.accounts).
How to reproduce

setup DevLake v0.11
collect Jira data
see table.users

Anything else
No response
Version
main
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

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

To address this problem:

the involved user should set Profile and visibility properly (https://id.atlassian.com/manage-profile/profile-and-visibility)
recollect data


Adding support for OneTouch Verio Reflect meter (UPLOAD-347)

Addresses UPLOAD-347.

Ticket has been approved, so test suffixes have been removed. Ready for final check.


Compatible with browserify / commonjs modules?

Hi -
I've spent a few hours attempting to get AdminLTE loading alongside my other JS modules which are bundled using browserify.
I'm a bit lost now, I don't know what modifications are needed to AdminLTE in order to support this, what configuration to browserify is needed, and whether I need to require('adminlte') somewhere in my app.js file.

I don't use Browserify, so I am not sure if I can help.

@alasdaircr Admin LTE won't work with browserify right out of the box. You need to shim it first. Assuming you have already downloaded from npm:

Install browserify-shim as a dev dependency

npm install browserify-shim --save-dev

Add aliases for the required dependencies in your package.json (optional, but recommended)

"browser": {
    "jquery": "./node_modules/admin-lte/plugins/jQuery/jQuery-2.1.4.min.js",
    "bootstrap": "./node_modules/admin-lte/bootstrap/js/bootstrap.min.js",
    "admin-lte": "./node_modules/admin-lte/dist/js/app.min.js"
  }

Let browserify know we're shimming it

"browserify": {
    "transform": ["browserify-shim"]
  }

Attach jquery as $ global var and explicitly state Admin LTE's dependencies

"browserify-shim": {
    "jquery": "$",
    "admin-lte": {
      "depends": ["jquery:$","bootstrap"]
    }
  }

Finally you can require('admin-lte') in your main.js file and using the command bellow in the terminal or as an npm script browserify will do the res

"scripts": {
    "build": "browserify -d main.js -o bundle.js"
  }

This will give you the basic functionality enough to get you up and running. For any additional plugins that Admin LTE depends on you will have to add them to your package.json file. Let me know how this works out for you and shoot if you have any questions.

Is this solution still supposed to work? I gave up my attempts to make AdminLTE work with webpack and moved on to browserify; unfortunately, the same issue occurs -- when doing require('admin-lte) an Exception (Error: AdminLTE requires jQuery) is raised.
I followed your guide step by step, so please can you tell me this appraoch is still working for you?
(P.S.: using AdminLTE 2.3.3 and browserify 13.0.1)

I just checked with updated packages (AdminLTE 2.3.3, browserify 13.0.1 and browserify-shim 3.8.12) and surely it still works. Can you paste the contents of your package.json?

Hey, thanks for checking back! Here's my package.json:
"devDependencies": {
   "browserify-shim": "^3.5.0"
},
"dependencies": {
  "admin-lte": "^2.3.3",
  "backbone": "^1.3.3",
  "bootstrap": "^3.3.6",
  "handlebars": "^4.0.5",
  "jquery": "^2.2.3",
  "jquery-validation": "^1.15.0",
  "jquery.transit": "^0.9.12",
  "jstree": "^3.3.1",
  "lightbox2": "^2.8.2",
  "moment": "^2.13.0",
  "parse": "^1.8.5",
  "pikaday": "^1.4.0"
},
"browser": {
  "jquery": "./node_modules/admin-lte/plugins/jQuery/jQuery-2.2.0.min.js",
  "bootstrap": "./node_modules/admin-lte/bootstrap/js/bootstrap.min.js",
  "admin-lte": "./node_modules/admin-lte/dist/js/app.min.js"
},
"browserify": {
  "transform": [
    "browserify-shim"
  ]
},
"browserify-shim": {
  "jquery": "$",
  "bootstrap": {
    "depends": ["jquery:$"]
  },
  "admin-lte": {
    "depends": ["jquery:$", "bootstrap"]
  }
}

With this config, the error changed -- AdminLTE is not defined at all. Here's the calling code:
var AdminLTE = require('admin-lte');
...
// this line causes the crash: AdminLTE is undefined -- neither accessing it as a member
// of $ nor globally works
$.AdminLTE.layout.fix();

P.S.: there's a lot of dependent packages; I'm in the process of migrating a project from require.js to browserify, and most of these packages are not yet used in the migrated parts of the app.

I don't see browserify-shim in your devDependencies but I'll assume it's installed. Other than that everything looks ok. Are you using Babel in the building process? If so you will have to include babelify to the shimming pipeline.
I did a console log on AdminLTE and it doesn't seem to export any methods. If you're trying to call anything on it it will crash. The way I use it in my project I only require it at the top so it will be bundled in the output file. What you're trying to do works though. Just make sure to import jQuery like this var $ = require('jquery') after AdminLTE, then you'll have access to $.AdminLTE.
PS: Not sure if it makes a difference but I have jquery installed as a dependency too

browserify-shim is in the devDependencies, the second line of the code listing; I don't use Babel; jQuery is in my dependencies, and I require it before AdminLTE.
I did some more experiments; after require('admin-lte), $.AdminLTE is defined, but only contains one member options; it has no methods or other properties (like the layout property I was trying to access). Looks like AdminLTE is not imported correctly.
Thanks a lot for your help so far. If it works for you, then apparently my overall configuration is flawed in some way. If you have any further hints, I'd be very thankful; else I'll have to either abandon AdminLTE or browserify.

Sorry I meant browserify. I required adminLTE before jQuery but switching them around doesn't seem to make a difference for me. Here's the console log I get for $.AdminLTE:

Get rid of this line
"jquery": "./node_modules/admin-lte/plugins/jQuery/jQuery-2.2.0.min.js",

It gave me a problem when I just inserted it. I remember I used to have it in there but I removed it at some point. Not sure what's going on under the hood, perhaps AdminLTE's jQuery plugin conflicts with the already installed jQuery module. Hopefully this solves your problem.

Ad browserify: right, that's installed globally. Also tried to add it locally, but without any effect.
Ad jquery entry: removing that line didn't change the issue... AdminLTE still has only one property (options).


IndexAttribute or IndexAnnotation not working while initializing MySQL

I haven't tested with SQL Server yet and am not sure if the issue is only for MySQL.
Package versions:

EntityFramework 6.1.3
MySql.Data 6.9.9
MySql.Data.Entity 6.9.9

Simplified code:
public class MyDbContext : DbContext
{
    public MyDbContext() : base("MyDbContextConnectionString")
    {
        Database.SetInitializer(new MyDbInitializer());
    }

    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // The following code doesn't work either.
        // modelBuilder.Entity<User>()
        //     .Property(e => e.Mobile)
        //     .HasColumnAnnotation(
        //         IndexAnnotation.AnnotationName,
        //         new IndexAnnotation(new IndexAttribute("IX_Mob") { IsUnique = true }));
    }
}

public class MyDbInitializer : DropCreateDatabaseAlways<MyDbContext>
{
}

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    [Required]
    public string Name { get; set; }

    [Required]
    [Index(IsUnique = true)]
    public string Mobile { get; set; }
}

internal static void Main(string[] args)
{
    using (var context = new MyDbContext())
    {
        // ...
    }
}

I expect the table to be created with a primary key Id and a unique index for column Mobile. But the result was that a primary key index for Id was created, and a redundant unique index for Id was also created, but the expected unique index for Mobile was not.
Screenshots from MySQL Workbench:

Full code and project files:
eftest.zip

@euyuil I am not familiar enough with the MySQL provider to know for sure, but this might be a limitation if support for index migrations operations was not added. If you can prove that this works with SQL Server but not with MySQL, I would encourage you to file a bug. I believe https://bugs.mysql.com/ is the right place to do so.
cc @gmartinezsan.

EF Team Triage: Closing as with the current information we believe this issue is external to EF and not actionable for the EF team. Hopefully the information provided can help redirect the issue to the owners of the MySQL provider where it can be addressed.

Hi, I added a bug so you can follow up @euyuil if you like. We'll check if there is any issue in the MySQL provider.
Here's the link of the bug.
http://bugs.mysql.com/bug.php?id=82828
Feel free to subscribe.
Thanks!


Not compatible with ZF < 3.0

Fatal error: Uncaught Zend\ModuleManager\Exception\RuntimeException: Module (Zend\Hydrator) could not be initialized. in /var/www/vendor/zendframework/zend-modulemanager/src/ModuleManager.php on line 203
It is not a module until 2.2.0.
Same Problem for Zend\Router.

Hello,
If you add those modules to your ./config/modules.config.php

'Zend\Db',
'Zend\Filter',
'Zend\Hydrator',
'Zend\InputFilter',
'Zend\Paginator',
'Zend\Router',
'Zend\Validator',

the modules should be loaded.
'Zend/Hydrator' and 'Zend/Router'  are separate modules in ZF3
It would be more helpful if you wrote apigility version you used.
Thanks

"zfcampus/zf-apigility": "^1.3",

This repository has been closed and moved to laminas-api-tools/api-tools-skeleton; a new issue has been opened at https://github.com/laminas-api-tools/api-tools-skeleton/issues/9.


Update BooleanPropertyOntology-1.0.ttl

Some object properties had some comments under the property rdfs:label, so that when the ontology was opened with a editor (such as Protégé), comments may appear as the property label. I put them under the rdfs:comment property.

Thank you!