[Feature request] Solutions via Stackoverflow

Feature request
Context

Hey guys. I'm currently develop an idea for a crate which possibly fit in you environment.
As I'm less experienced rust developer, it often happens to me that i search certain Error messages which i don't understand or kind of errors where i need some examples to understand the true purpose of the function. So my idea is to write a crate to search after the error und list possible solutions by showing the links. It doesn't need necessarily a link to stackoverflow, instead it can be modular and e.g. search on rust docs and so on.
What do you think?

That isn't really the scope of human-panic and, if it were implemented at all, would be more suited for the rust compiler itself.
Realistically human-panic just makes panic events nicer for end users who don't actually care about debugging the applications with RUST_BACKTRACE and expect errors to be slightly nicer than a cryptic text about crashing.
When you're developing an application it's much easier just to set RUST_BACKTRACE as an env variable and let it crash to see the backtrace instead of getting a pretty text, then having to look up the cause in the logs.


Update Matomo Java Tracker to 3.0.6

Hey @terminalsin terminalsin,
Just wanted to give your project a little boost with the latest and greatest from Matomo Java Tracker! 🚀
Changes in a Nutshell:

Bug Fixes & Performance Boosts: Say goodbye to some pesky bugs and enjoy a faster, smoother tracking experience.

Security Makeover: We're getting the latest security swag to keep our project locked down.

Stay Cool with Compatibility: Now we're best buddies with Matomo versions up to 5, so no more awkward compatibility issues.

Less Baggage: Matomo Java Tracker 3.0.6 is lean and mean with fewer dependencies. Less stuff, more speed!

New Toys: Check out the cool new dimension parameter for super-customizable tracking.

Java 11 Party: We're upgrading to the latest Java 11 implementation. It's like giving our project a cool new set of wheels.

Smooth Moves: If you're coming from version 2, no worries! There's a handy migration guide here to make the switch painless.

How to Test:

Update to Matomo Java Tracker version 3.0.6.
Make sure our project still builds like a champ.
Double-check that our Matomo tracking mojo is still on point.
Test out any new features and give that dimension parameter a spin.

Where to Get Help:

Dive into the Javadoc for the nitty-gritty details.
Got issues or bright ideas? Hit up the Matomo Java Tracker GitHub.

Your Feedback Matters:
Give it a whirl and let us know how it goes! Your feedback is like gold to us. 🌟
Cheers,
Daniel

@terminalsin ping

@terminalsin ping

Hey Deid I’ve seen this ;), I’ve stopped updating my backend so I need to relaunch an instance of Matomo to get this merged 👍


RDS and ELB formatters

Formatters for RDS and ELB

sigh, apparently squash merges, require merging on extant pull requests.
could you merge and push this again. thanks

looks like this should wait on elb / rds tags

could you repush this


Issues trying react example

Hello,
When trying to run the react example I got some errors.
When installing the project I got:
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@connect2ic%2fcanisters - Not found
npm ERR! 404
npm ERR! 404  '@connect2ic/canisters@*' is not in this registry.

The package @connect2ic/fcanisters is not published to npm, removing from package.json solved the issue since it is not a dependency.
when I run dfx deploy I got other issues
Error: Failed while trying to deploy canisters.
Caused by: Failed while trying to deploy canisters.
  Failed to build call canisters.
    Failed while trying to build all canisters.
      The post-build step failed for canister 'ryjl3-tyaaa-aaaaa-aaaba-cai' (assets) with an embedded error: Failed to build frontend for network 'local'.: The command '"npm" "run" "build"' failed with exit status 'exit status: 2'.
Stdout:

><EMAIL_ADDRESS>build
> tsc && vite build

frontend/components/Counter.tsx(14,14): error TS2345: Argument of type 'unknown' is not assignable to parameter of type 'SetStateAction<undefined>'.
frontend/components/Counter.tsx(31,48): error TS2339: Property 'toString' does not exist on type 'never'.
frontend/components/Profile.tsx(10,35): error TS2339: Property 'isWallet' does not exist on type '{ readonly principal: string | undefined; readonly activeProvider: { icon: any; connector: IConnector & Partial<IWalletConnector>; name: string; id: string; } | undefined; ... 5 more ...; readonly disconnect: () => void; }'.
frontend/components/Transfer.tsx(10,11): error TS2339: Property 'isWallet' does not exist on type '{ readonly principal: string | undefined; readonly activeProvider: { icon: any; connector: IConnector & Partial<IWalletConnector>; name: string; id: string; } | undefined; ... 5 more ...; readonly disconnect: () => void; }'.

Stderr:

Thanks

Hello, When trying to run the react example I got some errors. When installing the project I got:
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@connect2ic%2fcanisters - Not found
npm ERR! 404
npm ERR! 404  '@connect2ic/canisters@*' is not in this registry.

The package @connect2ic/fcanisters is not published to npm, removing from package.json solved the issue since it is not a dependency.
when I run dfx deploy I got other issues
Error: Failed while trying to deploy canisters.
Caused by: Failed while trying to deploy canisters.
  Failed to build call canisters.
    Failed while trying to build all canisters.
      The post-build step failed for canister 'ryjl3-tyaaa-aaaaa-aaaba-cai' (assets) with an embedded error: Failed to build frontend for network 'local'.: The command '"npm" "run" "build"' failed with exit status 'exit status: 2'.
Stdout:

><EMAIL_ADDRESS>build
> tsc && vite build

frontend/components/Counter.tsx(14,14): error TS2345: Argument of type 'unknown' is not assignable to parameter of type 'SetStateAction<undefined>'.
frontend/components/Counter.tsx(31,48): error TS2339: Property 'toString' does not exist on type 'never'.
frontend/components/Profile.tsx(10,35): error TS2339: Property 'isWallet' does not exist on type '{ readonly principal: string | undefined; readonly activeProvider: { icon: any; connector: IConnector & Partial<IWalletConnector>; name: string; id: string; } | undefined; ... 5 more ...; readonly disconnect: () => void; }'.
frontend/components/Transfer.tsx(10,11): error TS2339: Property 'isWallet' does not exist on type '{ readonly principal: string | undefined; readonly activeProvider: { icon: any; connector: IConnector & Partial<IWalletConnector>; name: string; id: string; } | undefined; ... 5 more ...; readonly disconnect: () => void; }'.

Stderr:

Thanks

Hey it should be fixed now hopefully. Try latest version 0.1.0


is there any way to remove extra fields from the ElasticSearch response?

Hi I am very new to the ElasticSearch and I am struggling to remove all extra fields from response getting from ElasticSearch. Please see below response:

"report": {
    "unique_users": {
      "doc_count_error_upper_bound": 0,
      "sum_other_doc_count": 0,
      "buckets": [
        {
          "key": 1234,
          "doc_count": 2,
          "user_details": {
            "hits": {
              "total": 2,
              "max_score": 1.4E-45,
              "hits": [
                {
                  "_index": "orders-test",
                  "_type": "order",
                  "_id": "2",
                  "_score": 0.0,
                  "_source": {
                    "customer_email"<EMAIL_ADDRESS>                    "customer_phone": "476.824.4998 x498",
                    "customer_name": "Mohammed Abernathy"
                  }
                }
              ]
            }
          }
        },
        {
          "key": 5678,
          "doc_count": 1,
          "user_details": {
            "hits": {
              "total": 1,
              "max_score": 1.4E-45,
              "hits": [
                {
                  "_index": "orders-test",
                  "_type": "order",
                  "_id": "1",
                  "_score": 0.0,
                  "_source": {
                    "customer_email"<EMAIL_ADDRESS>                    "customer_phone": "1-715-183-8343 x026",
                    "customer_name": "Richie Tillman II"
                  }
                }
              ]
            }
          }
        }
      ]
    }
  }

Above you can see that there are some additional fields coming with the response like _index, _type, _score, max_score etc. I have followed ElasticSearch response_filtering guide to remove these fields but it was not working for me. I have also passed the filter_path parameter to the request <IP_ADDRESS>:5000/v4/reports/user.json?filter_path=unique_users,unique_users.user_details.hits.hits._source but did not get any response. I am using below function to process the Elasticsearch query.
def query(options = {})

    aggregations = {}

    buckets = {}
    buckets_for_unique_users buckets, aggregations
    buckets_for_new_users buckets, aggregations
    buckets_for_high_rollers buckets, aggregations

    filters = []
    filters << time_filter(options)
    filters << restaurant_filter(options) if options[:restaurant_id]
    filters << channel_filter(options) if options[:channel_id]

    query = {
      query: { bool: { filter: filters } },
      aggregations: buckets
    }
    query
  end

I have also used _source https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-source-filtering.html but it did not remove extra fields. Could anyone please let me know where I am doing wrong.

Hi @ravindra9278
Have you been able to resolve your issue? If not, perhaps https://discuss.elastic.co/ would be a good resource for you.

Hi @ravindra9278
I'm going to close this issue but feel free to open another one if you are still having trouble. Thanks
Emily

I would also like to be able to exclude (filter out) the  _index, _type and _id fields in hits results of an aggregation query. Not sure why this was closed. What is the solution?


can no assign extern class var  if var is static type Array[type]

Godot version
v4.1.rc.custom_build [e044e13d5]
System information
debian stable
Issue description
test.gd
@tool
extends EditorScript

var arr1:Array[int]

func _run():
	arr1=[0]
	var ex_arr=ExArray.new()
	ex_arr.arr1=[0]

ex_array.gd
class_name ExArray

var arr1:Array[int]=[0]

When extern class var is static type Array[type], can not assign value
err info
 res://test.gd:9 - Invalid set index 'arr1' (on base: 'RefCounted (ExArray)') with value of type 'Array'.

Steps to reproduce
just run test.gd
Minimal reproduction project
ex_array_bug.zip

You can't assign a typed array with a non-typed array here I'd say

Use Array.assign() method:
ex_arr.arr1.assign([0])

When a typed array is declared, the initializer array literal is automatically typed. We could do the same for assignment if the type of the left value is known, but that would be even more confusing since we can't do the same for an untyped assignment.

You can't assign a typed array with a non-typed array here I'd say
* See: [Array `map`/`filter` fail with typed-array variables and functions #72566](https://github.com/godotengine/godot/issues/72566)

Ok, but why arr1=[0] can pass?

Ok, but why arr1=[0] can pass?

Use a static type, then this will work:
var ex_arr := ExArray.new()
#          ^
ex_arr.arr1 = [0] # Will work.

See also #71336. When/if the PR is merged you will be able to:

ex_arr.arr1 = Array[int]([0])

Also an array literal can already be casted using as:
var ex_arr = ExArray.new()
ex_arr.arr1 = [0] as Array[int]

Thanks for answering, I close this issue.


Removed lock on travis ci node versions

Thanks! Would you mind to use double quotations?

Fixed

Thank you :)


Panning Around Image when AllowCropping is On.

Bug
Version Number of Plugin: 2.6.2
Device Tested On: iPhone 7+
Simulator Tested On: (No Cam on Simulator)
Expected Behavior
Cropping Should allow panning to all corners of the photo as long as the image is still filling the crop-square.
Actual Behavior
Top 5th and bottom 5th of the photo seem to be in an "out-of-bounds state" where you can drag the photo to any of the far corners but when you release from the gesture, the photo jumps/pans back to center. Zooming in to crop and dragging to the corner produces same behavior. Basically... you can't set the crop-square to any of the photo's corners.
I know we're using iOS's default camera and the cropping feature is something built in, correct? So this may not be related to the plugin at all. It's very possible it's all out of your control. If so, disregard this. I just want to make record of it.

I have no control over this. It uses the default camera controls.


Unrecoverable crash, JavaScript token error

OS: Windows 10 1511
Version: 3.2.4
Issue Descriptions:
2 days ago, when I clicked play on a song, and as soon as it started playing, the audio hitched, and my PC immediately restarted. I tried relaunching GPMDP after it started again, though it threw the following error:

Any further attempts to open it give me no error, but it will simply not launch. I tried installing it again, but it only throws that error once more.
Any idea how I can get this working again please? Let me know if I can submit any further information.

press win + r and enter %appdata%\..\Local and press ok. there you delete the GPMDP folder.
now press win + r again and enter %appdata%\..\Roaming and press ok. here you delete the Google play music desktop player folder. now you can reinstall it and it should work again

@PuffShr1k3 Simply navigate to %APPDATA%\Google Play Music Desktop Player\json_store and delete the .settings.json file.
Then the app should start.  This issue will be fixed in the latest release


Possible False Positive?

https://github.com/cliffrowley/atom-circle-ci/pull/15#issuecomment-72931012
It's telling me to use "getOriginURL()" but I am using it... perhaps the description isn't clear?

nevermind, it's a case sensitive mishap!


Formik 2.0 Field as prop

📖 Documentation
Currently the typescript type here https://github.com/jaredpalmer/formik/blob/next/src/Field.tsx#L29 gives this component access to only the ['field'] props, but why am I disallowed from access to the form props? I think knowing why this is would help me understand how I could be using formik better.

Closing due to long inactivity

The as prop is for element-like components like Styled Components. Otherwise, component or children provide access to the form prop you are looking for


412 remove error symbol

Fixes #412 .
Description
This PR removes dollar symbols in readme in order to fix the figure unseen error..
Status
Ready
Please ensure all the checkboxes:

[x] Codeformat tests passed locally by running ./runtests.sh --codeformat.
[ ] In-line docstrings updated.
[ ] Update version and changelog in metadata.json if changing an existing bundle.
[ ] Please ensure the naming rules in config files meet our requirements (please refer to: CONTRIBUTING.md).
[ ] Ensure versions of packages such as monai, pytorch and numpy are correct in metadata.json.
[ ] Descriptions should be consistent with the content, such as eval_metrics of the provided weights and TorchScript modules.
[ ] Files larger than 25MB are excluded and replaced by providing download links in large_file.yml.
[ ] Avoid using path that contains personal information within config files (such as use /home/your_name/ for "bundle_root").

/build

/build

/build

Since there are some other minor issues, I will push more commits within this PR to solve them.
The issues include:

typos in pancreas_ct_dints_segmentation readme
default value of pretrained flag in pathology_tumor_detection (This part needs @drbeh 's verify), also need to add print log restriction on multi gpu config.
some bundles may need to describe dataset_dir in readme (needs discussion)

cc @Nic-Ma @KumoLiu


Display the user's heading on the map

Expected behavior
I should always be able to see my heading on the map
Actual behavior
I can only see it if I tap twice on the button in the top left corner of the map
Screenshot
Here's what Google Maps looks like. We should basically do this.

Here's my (lame) mockup of it:

In the process of fixing #485, I added a third party component that resembles the user location annotation view. I modified this component to improve its support for displaying heading or orientation indicators, and even added a graphic to the app's xcassets catalog that looks like what Apple uses on their built-in component.

Nice! Is this done then?

@sethfri no, still needs doing. The second screenshot was just a mockup (which is now out of date).

@aaronbrethorst oh ok I think I misunderstood when you said "I modified this component to improve its support for displaying heading or orientation indicators". So we have this component currently in the app, but it's not in use?

@sethfri Right. I added SVPulseAnnotationView to display buses with their headings in the ArrivalAndDeparture controller, and I'd love to be able to use it to display the user's location with their heading on OBASearchResultsMapViewController, too.


Some tasks are now invisible?

I updated my git checkout of master to try out the new swimlanes feature, and now I see that the last of my 6 columns always shows as empty even though there are items in it!
I thought the tasks had been deleted in a terrible accident, but:

Creating a new task in that column results in the task not showing up
Using the "Search" feature, I can find the tasks that were in that column... and their status is still Open (not Closed), so there's no reason why they shouldn't show up there. How can I troubleshoot this?

Hmmm... When I click on a task's title inside the board, I get an error message: "Sorry, I didn't found this information in my database!" — I haven't bisected or anything, but could your latest fixes have caused this?
P.s.: there's a typo in there... it should be "I didn't find", not "I didn't found"...

I have to confirm nekohayo error. My version is ee8ec7685f95125c385d17dad41369a549ce9bbf.
If I go back to 66f150d887a34d2b51ff14f22d0fd41a34f8cc77 everything is OK.

Lol j'ai trouvé. The bug is that &project_id=123 is missing in the URL when you do that...

Yes, I fixed that yesterday, you should update the code again and also the dependencies with composer.
I'm currently testing with my own instance to find other bugs after my different refactorings... unit tests can't catch user interface problems.
I close this ticket, if you find something else just open a new one :)


Add a non body consuming check for form boundaries

This also adds an option to control whether blank content types should be
assumed to be a form type for the purpose of checking when getting a form
for the purposes of this check.
The default is False, as otherwise installing pyramid-sanity could cause
otherwise working apps to fail (e.g. ones expecting JSON, but not requiring
a content type to declare it).

Can you explain the assume_form_on_blank setting? It looks like previously the invalid form tween did its thing on all POST requests. Now, by default, it only does its thing if the request method is POST and the Content-Type is "application/x-www-form-urlencoded" or "multipart/form-data".
Why the change? It looks to me like this is to fix the bulk API because, since bulk API requests aren't "application/x-www-form-urlencoded" or "multipart/form-data", the invalid form tween has now been disabled for bulk API requests? So the request.POST iterable will no longer be getting consumed by the tween, for bulk API tests?
Why the config setting to undo the change? Wouldn't it make sense to always limit the invalid form tween to "application/x-www-form-urlencoded" or "multipart/form-data" requests?

Hmm, and it seems that request.POST.get("", None) was replaced with  cgi.valid_boundary(). I'm not sure what valid_boundary()` does though, it's undocumented!

It's "inspired" rather than directly related. It's not needed to fix the bulk API issue per se, but will affect 3rd parties who try to use pyramid-sanity. Consider the following situation:

You setup a POST view, that is expecting JSON for example
You do not require any particular Content-Type header (so it's fine to send anything, or nothing at all)
You therefore end-up with consumers (self or other) that make requests, sending JSON, without a Content-Type
Now you enable pyramid-sanity
As a result, previously working end-points are broken raising messages about bad form boundaries, which is wrong and hyper confusing

I can't see a sane way of proceeding if the Content-Type is blank that doesn't break people. If you say it's a form and it's broken, than seems fair enough. If you don't even claim it to be a form, it's a bit weird. However by removing this, we strip protection for that. So I wanted a way to add that protection back in if you wanted it.
This is pretty much the situation we are actually in with h and the bulk API. We don't enforce that you tell us the content type to be declared, we just assume it's NDJSON. This meant that although the client sends the correct header, the func tests weren't. It turns out webtest tries to be helpful, and defaults to "application/x-www-form-urlencoded" so they crashed.
So while the actual type of the content we are sending is NDJSON for the bulk API, the Content-Type can be anything, or nothing at all.

The cgi stuff is stripped out of the webob.compat stuff mentioned in the code.

This has undergone some fairly major changes:

I added full testing of the error condition and realised it only applied to "multipart" things (which makes sense)
This removes the need for the option
I added testing of the others to catch similar things
Added suggested wording for docstring above


Make repr display more general

Change: Make the information displayed by __repr__ more commonly used

Thank you!


[Bug] [WebSite] SeaTunnel Web Source download link is error

Search before asking

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

What happened
https://seatunnel.apache.org/download

The source tar download link is https://downloads.apache.org/seatunnel/seatunnel-web/1.0.0/apache-seatunnel-web-1.0.0-bin.tar.gz
SeaTunnel Version
seatunnel web 1.0.0
SeaTunnel Config
*

Running Command
*

Error Exception
*

Zeta or Flink or Spark Version
No response
Java or Scala Version
No response
Screenshots
No response
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

I have created a PR on the respective repo (seatunnel-website)
The PR: https://github.com/apache/seatunnel-website/pull/280
Would appreciate it if @EricJoy2048, you could please review.

I have created a PR on the respective repo (seatunnel-website)
The PR: apache/seatunnel-website#280
Would appreciate it if @EricJoy2048, you could please review.

Done, Thanks for your contribution.


Update heroku.yml

Hi! It looks like these are changes you want to make for your own project - did you mean to submit a PR to the original template repo?

Hello, I am so sorry! I just gettng back into development. I apologize for opening this PR.


Issue with helmfile and capabilities

Having an issue with helmfile and a chart that uses .Capabilities.APIVersions.has. Any idea on how to overcome?
I actually have the required CRDs but it seems that helm template command does not check the cluster.
Failed to load target state: failed to generate manifest for source 1 of 1: rpc error: code = Unknown desc = plugin sidecar failed. error generating manifests in cmp: rpc error: code = Unknown desc = error generating manifests: `argocd-lovely-plugin` failed exit status 1: 2024/06/06 18:12:56 error running helmfile: exit status 1: Adding repo traefik https://traefik.github.io/charts "traefik" has been added to your repositories Templating release=traefik, chart=traefik/traefik in ./helmfile.yaml: command "/usr/local/bin/helm" exited with non-zero status: PATH: /usr/local/bin/helm ARGS: 0: helm (4 bytes) 1: template (8 bytes) 2: traefik (7 bytes) 3: traefik/traefik (15 bytes) 4: --version (9 bytes) 5: 28.2.0 (6 bytes) 6: --namespace (11 bytes) 7: kube-system (11 bytes) 8: --values (8 bytes) 9: /tmp/helmfile2658468773/kube-system-traefik-values-7b8c868556 (61 bytes) 10: --include-crds (14 bytes) ERROR: exit status 1 EXIT STATUS 1 STDERR: Error: execution error at (traefik/templates/servicemonitor.yaml:5:10): ERROR: You have to deploy monitoring.coreos.com/v1 first Use --debug flag to render out invalid YAML COMBINED OUTPUT: Error: execution error at (traefik/templates/servicemonitor.yaml:5:10): ERROR: You have to deploy monitoring.coreos.com/v1 first Use --debug flag to render out invalid YAML

Okay, adding this to helmfile.yaml seems to work:
apiVersions:
  - "monitoring.coreos.com/v1"

I wonder though, on a regular argocd helm installation this is not needed. is there any possible improvement here to make it work without needing to manually specify apiVersions?

It seems that argo populates the helm template apiversions, that's why it is not an issue.
https://github.com/argoproj/argo-cd/pull/7519
Could lovely plugin mirror this behaviour?

At the moment ArgoCD doesn't send this information to plugins, so it's not possible to implement in a plugin. You can get around it in various ways, including the one kind of documented here https://github.com/crumbhole/argocd-lovely-plugin/tree/main/test/helm_k8_rbac_api_version_v2

That's weird because I see the apiversions for the destination cluster available in $KUBE_API_VERSIONS, which any plugin can read.


Performance: memoization

Hi again.
While fixing the other issue yesterday, it got me thinking that trying to determine which font to use in each render might not be super efficient.
I decided to take a look at it from a performance perspective, here are my findings.
It appears that on an Oppo A72 Android device, it takes about 1ms to execute the logic in the overridden render function. Now, if there are 16 Text nodes on the screen, that's already 16 ms, so a dropped frame.

If however I add some memoization, it drops to 0.1ms most of the time, which is a 10x improvement:

I'll open a PR shortly with this for your consideration

Actually my second screenshot is wrong, it's fast because the useMemo is missing a dependency on element.
But I have further narrowed down the timing, and it's actually generateOverrideStyle that takes 1+ms each time.

Since it only works with fontFamily, fontWeight, and fontStyle and those will be fairly static, it should be possible to cache the result.

Just FYI: @andreialecu I also experienced bad performance using this library, thought it was waay to big for the task, and didn't like the dependency on Expo, so I've created my own.
https://www.npmjs.com/package/@mthines/react-native-font-face
https://github.com/mthines/react-native-font-face

@andreialecu Thanks for doing the research on this. I don't have the bandwidth to look into this right now, but I'm happy to accept a PR.


The start of a MockMemcachedClient.

Here is the start of a mock memcached client.  It's backed by a HashMap, implements MockMemcachedClientIF, and has a few of the commonly used methods implemented.
It currently fits my needs, but I'd be willing to flesh it out more if there is a need.
Cheers,
Anthony

This does look useful, and it'd be good to bring it in.  In 2.8, we're breaking out the interface a bit, so it should be even simpler there.  That's now the current active master branch.


Memory Leak & Garbage not working

Context

MapFish print version: 3.28.2
Java version: 11.0.21
OS: Windows & Debian

Describe the bug

Description: When starting Mapfish, it exhibits a memory leak behavior. Initially, it consumes around 150 MB of RAM, but over time, this usage gradually increases. For instance, after 5 minutes, it reaches 200 MB.

Production Scenario: In a production environment, we utilize Mapfish Print to generate PDFs. However, when a user triggers the PDF generation process, Mapfish Print successfully completes the task. Unfortunately, it fails to release all the allocated memory afterward. Also there is thousand of thread created for the generation but the aren't delete after.

How to reproduce

I can't give the configuration files.
Put the json spec (request sent by the browser) here.

Actual results

I cn't submit the log
Put the logs here.

Expected results

I expect mapfish to release all the ram after usage and to not use more and more ram overtime

I don't see that it use so much space.
To go further, it can be good to:

See a longer period.

Use low value of JMX to force the garbage collection.

After a longer period the ram continues to climb, with time it goes faster 1mb/30sec after 20min

Garbage collector activity I dot know how to monitor it with Idea

As you can see on the capture below the first force does the job then after some call I did nothing and the thread stays alive

When the Mapfish-print is not in used this got +1000 Libe object per sec (~50 000 bytes/sec)

I running Mapfish-print for 30min now is doing that (loop):

@sbrunner Does Mapfish-print store the data from previous print in case the same layers is called again ?

No, we don't directly store some things between the run
For the thread number I don't know, @sebr72 do you have an idea?
For the ramp we observe the same thing, It needs more in-depth investigation.

@LouisBoyaval I am working on the main/master branch. I noticed that indeed the threads are not deallocated immediately. They are managed by Threadpools (responsible to decide when the Threads are no longer required). Most likely it is the same in your version.

@sbrunner and @sebr72 Thanks for your responses ! I will investigate the excessive RAM usage.

  This may not be an error. gradle: 11:33:04.398 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.404 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.404 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.410 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.410 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.417 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.417 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.422 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.423 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.427 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.427 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.430 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.431 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.436 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.436 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.440 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.441 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.445 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.445 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.450 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.451 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.455 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.455 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.458 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.458 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.461 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.461 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.465 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.465 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.470 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.470 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.474 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.474 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.478 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.478 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.481 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.482 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.487 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.488 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.492 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.492 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.496 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.496 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.501 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.501 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.505 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field reportTemplate in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error. gradle: 11:33:04.505 [PrintJobManager-1] WARN  o.m.p.o.AbstractJasperReportOutputFormat - The field displayName in simpleReportA4.jrxml is not available in at least one of the rows in the datasource.  This may not be an error.


Provide a mixin to help use immutable data patterns

Immutable data patterns are an excellent way to have explicit, granular control of how structured data is passed between elements. Polymer should provide a mixin which encourages using this pattern by integrating with the library's data manipulation api (e.g. this.set).

Great to see some progress on this. I think you've talked about this internally, but could you share some details on what you plan to do, i.e. how it could look like in action? In particular, how does your current idea solve the dom-if=false issue?

MutableData has a big benefit: It makes it possible let a third party lib which does treat data as immutable manage the objects.
Immutable data is hard. Here's a trivial example:
const a = { b }; const b = { prop: 1 } and set b.prop = 2

A new immutable copy of b needs to be created and all references to b must be updated
To update the reference to b in a a new immutable copy of a needs to be created and all references to a must be updated

The part in bold is IMO the hard part because most objects do not know their parent(s). Requiring a library to output immutable data only is a lot to ask.

@MajorBreakfast Immutable patterns are most straightforward with unidirectional data flow, where state changes are centralized at the top of the tree and flowed down, such that the most objects do not know their parent(s) problem is not an issue.
MutableData was provided as an escape-hatch option, for cases where neither immutable data patterns nor Polymer's path mutation API's can be used, which is meant to address the Requiring a library to output immutable data only is a lot to ask concern; it comes at the cost of performance, but is an option where as you say, it's too much to ask to change e.g. existing business logic that relies on making mutable changes.
However, for this issue I'm experimenting with a drop-in replacement to Polymer's path mutation API's (set, push, pop, ...) via an e.g. ImmutableData mixin that implements the immutable pattern amd can be used in conjunction with two-way binding to allow an element deep in the tree to mutate a path and ensure all parent objects up the tree (for which it does not know its placement into) to have their references cloned.  For the most part, it's a drop-in replacement for the existing API (assuming the ImmutableData mixin can be applied to all elements that make modifications and their 2-way-bound parents), and should allow existing code written against the set/push... API's to work unchanged.
The idea is that ImmutableData would be an alternative to MutableData for avoiding the dom-if bug that is compatible with existing code and should not regress performance in the same ways.  I sympathize with "reliability shouldn't be opt-in", but we've not come up with a non-breaking way to fix that bug, without just reverting https://github.com/Polymer/polymer/pull/4299 (which introduced the bug).

Prototype ImmutableData mixin: http://jsbin.com/manudat/edit?html,output

@kevinpschaaf Thanks for the demo! I'll definitely play around with it :)

Per discussion: this basically needs an update of the test suite to duplicate most of the data-binding logic, but not all.


Use separate file for enums in Blazor components

In Button.razor.cs, we have the below code:
namespace FluentCMS.Web.UI.Components;
public enum ButtonSize
{
    Default,
    Small,
    Medium,
    Large
}

public enum ButtonType
{
    Button,
    Submit,
    Reset
}

Each enum should be in a separate file. So, we won't have the file (Button.razor.cs). And then, we should add two files (ButtonSize.cs and ButtonType).
Or, we can put all the enums in a single file.
The .razor.cs files should ONLY contains the code-behind for each individual .razor component (not any other classes, enums, helpers, etc.)

I agree with you and I have done this in PR #909. Check it, please.

@pournasserian check the latest dev branch.

Each enum should be in a separate file.

@abdolian I don't see separate file for enums.

@pournasserian I agree with the separating files like ButtonSize.cs and ButtonType.cs.


Create an alert for news flashes that might be worth publishing

Initial definition will be as follows:

interurban: news flash that's segment contains at least 5 fatal accidents in the past 3 years OR 10 fatal and severe accidents in the past 3 years (3 years back from the last accident date in the DB)
urban: TBD

Alert will be sent in the following channels:

Slack: A new slack channel we'll create for that purpose
Emails<EMAIL_ADDRESS>@galraij and my own email

@galraij @MichalOren any comments?

@OriHoch
The Slack webhook URL is a secret according to their documentation, what would be the best practice for storing the secret?
Seems to me the URL should only be available for the production instance, otherwise the channel might get spammed when
people run the scraping process in development.
Perhaps using the production .env file?


feat: allow bounding the zoom and pitch state

#199  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


User: Submit a new submission to the library

Users should be able to add a new submission to the library. The submission should contain:

[ ] Title
[ ] Description ~ Provide a WYSIWYG editor
[ ] Banner Image
[ ] Other Images ([Optional] variable number of attachments)
[ ] List of all technologies used to build the project
[ ] Main tech stack.
[ ] Repo link
[ ] Web URL (Optional field)
[ ] Categories ~ List of all categories that this project can fit in (Machine Learning, Web, Mobile, Native etc)
[ ] License - Choose from available open-source LICENCEs.

Expect completion by Monday 11:59pm 20th March @otsembo @mutuajoseph @KelvinMuriithi @KelvinMuriithi @Roseoketch

Frontend: => Review expected tonight
Backend: still having some issues => (24th March)


Send regular keepalives

If I understand correctly, the MVar is used to cancel/reset the ping timeout if we received a message from the peer. Do we really need that or is it sufficient to just send a ping at a regular interval regardless of whether we received anything from the peer?

As discussed offline, the MVar is used as a semaphore so the peer knows to disconnect when no data has arrived for more than 90 seconds. If we were to send pings at regular intervals, we would still be at the mercy of arbitrary OS TCP timeouts. Most network applications control their own TCP retransmission and timeout settings. I set Haskoin’s to be more aggressive than those of bitcoind, so that it works better on a mobile/laptop environment, while not negatively impacting running on a server.

OK, nice patch. ACK


Make sure suppressing-rules.md is aligned between versions

Fixes #7548

Warnings

:warning:

It looks like you're editing the versioned copy of our website. This affects only users on the 'current' version of detekt, and it's correct only if you intend to fix the documentation for an already released version of detekt. Most of the time you want to update also the docs inside website/docs/ as well, so this change will reflect also for documentation on future versions of detekt.

Messages

:book:

Thank you very much for making our website better :heart:!

  Generated by :no_entry_sign: dangerJS against dcff6d5a47b11c5055d55d71fa8e34f32715f241


Add quickstart for reach and frequency queries

Another advertising focused quickstart showing SQL on Snowflake.

this is great! thanks for the addition


Lab 11 Using Wav file not in LODS

Module: 05
Lab/Demo: 11 PYTHON
Task: 1
Step: 06
Description of issue
If the user cannot use the microphone there is a wave file to use. The wave file provided is time-in-london.wav the updated instructions did not appear in the lab - also ir referenced a time.wav which was not added into the lab folder, and also the name of the the recognizer is listed as speech_recognizer  but in the code it is 'recognizer'.
I was able to get it to work for the user by fixing the code but the wave file asked questions that the LUIS and code was not set up to handle - in short this was a mess - but may be from it not publishing to LODS and having to work with the old and new together.
cheers
Repro steps:

The .wav file is in the right folders in the repo. It was added 6 days ago - if you cloned it previously, you'd need to pull to get the latest files.
I can't repro the issues you describe above with the current files in the repo.

Update - it seems this is an issue at the LODS end - the latest markdown files aren't being pulled into the lab environment for some reason. Additionally, the LODS environment  has stopped capturing the microphone for some reason (which is what necessitated the update in the first place) I've reported both issues to LODS, but unfortunately there's nothing we can do from a content perspective - the files in thsi repo are up to date (and tested), but they're not getting pulled into the hosted lab environment.
I'll leave this issue active until we hear back from LODS.

We (LODS) have updated the labs so that they fall in line exactly with what Graeme was expecting students to be seeing. In order to see this update, if your lab is currently running, you will need to refresh your lab window. Otherwise, when you resume any saved labs for AI-102, or launch a new lab, you will see the updated instructions.
We were not able to replicate the .wav files not downloading, but if you continue to see this, please don't hesitate to submit a ticket with our support so that we can evaluate the issue as it is ongoing.
On the microphone issue, we have engaged the 3rd party developers responsible for the gateway that is causing the loss of microphone utility. They are working on the issue, but we do not yet have an estimated time of resolution. Thank you Graeme, for accounting for this in your latest updates.

I think the point is that the WAV files ARE downloading, but the instructions pane isn't pulling in the latest instructions markdown file, so students have no idea what to do with them. As I understand it, the instructions pane should automatically pull in the latest markdown from GitHub; so any changes we make are automatically reflected there when a new instance of the lab starts (or the user refreshes the browser). That doesn't seem to be happening.
Cheers,
G

Graeme Malcolm
@graeme_malcolm

From: Zeke Starr @.>
Sent: 13 April 2021 18:19
To: MicrosoftLearning/AI-102-AIEngineer @.>
Cc: Graeme Malcolm @.>; State change @.>
Subject: Re: [MicrosoftLearning/AI-102-AIEngineer] Lab 11 Using Wav file not in LODS (#59)
We (LODS) have updated the labs so that they fall in line exactly with what Graeme was expecting students to be seeing. In order to see this update, if your lab is currently running, you will need to refresh your lab window. Otherwise, when you resume any saved labs for AI-102, or launch a new lab, you will see the updated instructions.
We were not able to replicate the .wav files not downloading, but if you continue to see this, please don't hesitate to submit a ticket with our support so that we can evaluate the issue as it is ongoing.
On the microphone issue, we have engaged the 3rd party developers responsible for the gateway that is causing the loss of microphone utility. They are working on the issue, but we do not yet have an estimated time of resolution. Thank you Graeme, for accounting for this in your latest updates.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftLearning%2FAI-102-AIEngineer%2Fissues%2F59%23issuecomment-819153243&data=04|01|Graeme.Malcolm%40microsoft.com|a30ebda3cc3f4d35a4cc08d8fee36494|72f988bf86f141af91ab2d7cd011db47|1|0|637539599892117162|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=SdnYl%2FDceY3sTDvf1GYknioN2eD0xvbs8pmL0TZVHjw%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FACZZZ7WA25AXTZE4UXEHIKDTITUTFANCNFSM42337PIA&data=04|01|Graeme.Malcolm%40microsoft.com|a30ebda3cc3f4d35a4cc08d8fee36494|72f988bf86f141af91ab2d7cd011db47|1|0|637539599892127157|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=zLANbDLlH8Kj9kdQe0WsASngmqj8mPnRJn96aldRrGo%3D&reserved=0.

Yep! That's what we were seeing too. We've re-worked the instructions so that that match your development setup, and sync with GitHub immediately (there can be up to a few minute delay, as we're relaying on the raw GitHub links). Outside of that, the only lingering issue should be the microphone passthrough, which we're getting traction on and hope to have resolved soon.


Better layout for Attribute Table when located on sidebar

Currently the UI of Attribute Table is non optimal when "win": "sidebar" is specified for the module in app-conf.

The 'choose a layer' v-select box is too wide to fit into the the window header (wgu-win-toolbar) properly.
The sidebar already comes with a vertical scollbar, therefore attribute should avoid using one itself.

This can be regarded as follow up task to #213.

Regarding point 1:
It may also be an issue for small screen width devices when not running in sidebar mode.
@chrismayer @JakobMiksch Would it be a better approach to place the selectunder the header in general?
Regarding point 2:
@chrismayer @JakobMiksch Can we solve this by just using smaller page sizes on the wgu-attributetable ?


Add mean computation to linalg

The goal is to extend linalg to have mean computation operations.

Can collect patches that need this here:
#3044

I am interested in this.
Could you please explain what's needed in more details?

Check the linalg readme and read the code and unit tests. Then try to add the operation. There is already a lot of summing in the redux module so this is a very simple task

Hi,
I had a look at the code. Since linalg does all the matrix computation, I guess I need to implement a Mean module independent of all current modules in linalg.h, and calculate the mean.row and mean.col of matrices? Did I take this too easy?
I had no experience in coding large projects and I really would like to learn! Thanks!

There already is a sum redux module. But yes

Is this one done @karlnapf ? Can be closed I guess.


introduce static method Routing.forTableOnNode

that returns a simple routing for a table on the given node (without shards)
mostly used for sys tables

ack


generateFragmentFromRange from fragment-generation-utils.js is broken, infinite loop (Chrome, Safari, Firefox)

<EMAIL_ADDRESS>To reproduce:

Load https://raw.githack.com/IDPF/epub3-samples/refs/heads/main/30/accessible_epub_3/EPUB/pr01.xhtml (I tested on MacOS with Firefox, Chrome and Safari)
Open the developer console, and paste the Javascript code snippet below (note the 1-second debounce on the selectionchange event to avoid flooding generateFragmentFromRange() calls).
Create a text selection in the webpage by double-clicking or dragging the cursor (I personally test selections in the first paragraph, so I can debug/trace character offsets in the search space(s) more easily).
Observe in the console that the process is blocked, seems stuck in an infinite loop.

document.addEventListener("selectionchange", async () => {
    window._FRAG = window._FRAG || await import("https://unpkg.com/text-fragments-polyfill@5.7.0/dist/fragment-generation-utils.js");
    if (window._selectionchangeTimeout) {
        clearTimeout(window._selectionchangeTimeout);
        window._selectionchangeTimeout = undefined;
    }
    const r = document.getSelection()?.getRangeAt(0);
    if (r && !r.collapsed) {
        console.log(">>> CHANGED document.getSelection().getRangeAt(0)");

        window._selectionchangeTimeout = setTimeout(() => {
            window._selectionchangeTimeout = undefined;

            console.log(">>>---- PRE generateFragmentFromRange...");
            const f = window._FRAG.generateFragmentFromRange(r, 400);
            console.log(">>>---- POST generateFragmentFromRange:");
            console.log(JSON.stringify(f, null, 4));
        }, 1000);
    } else {
        console.log(">>> REMOVED / COLLAPSED document.getSelection().getRangeAt(0)");
    }
});

Unlike this original Javascript codebase, my TypeScript port runs but the TextFragment generation fails due to the "embiggen" logic not managing to create a unique TextFragment with prefix/suffix. I will report back here if / when I figure out what's going on :)  (I "fixed" a couple of issues, notably in the text accumulator, perhaps that's why the original JS code loops indefinitely)

Thank you! Just release v6.0.0 with your recent fixes!

I tested on this page:
https://text-fragments-polyfill.glitch.me
=> status = 3 (TIMEOUT)
... so it's better than a seemingly infinite loop, but clearly something is wrong, somewhere :)

Thank you for releasing v6.0.0. The bug remains. I updated the above script to use the latest version 👍

Hi, I am using text-fragments-polyfill in a Chrome extension that highlights webpages. I am encountering failures with 6.x that were not present in 5.7.6 that I think relate to this current issue.
E.g. if you:

open this page
enter the following script (this is the same script as above but I have removed the timeout: window._FRAG.setTimeout(null);)
Select text from the "summary" section (see screenshot below.)

Then the outcomes differ between 5.7.6 and 6.x.
document.addEventListener("selectionchange", async () => {
    window._FRAG = window._FRAG || await import("https://unpkg.com/text-fragments-polyfill@6.1.0/dist/fragment-generation-utils.js");
    window._FRAG.setTimeout(null);
    if (window._selectionchangeTimeout) {
        clearTimeout(window._selectionchangeTimeout);
        window._selectionchangeTimeout = undefined;
    }
    const r = document.getSelection()?.getRangeAt(0);
    if (r && !r.collapsed) {
        console.log(">>> CHANGED document.getSelection().getRangeAt(0)");

        window._selectionchangeTimeout = setTimeout(() => {
            window._selectionchangeTimeout = undefined;

            console.log(">>>---- PRE generateFragmentFromRange...");
            const f = window._FRAG.generateFragmentFromRange(r, 1000);
            console.log(">>>---- POST generateFragmentFromRange:");
            console.log(JSON.stringify(f, null, 4));
        }, 1000);
    } else {
        console.log(">>> REMOVED / COLLAPSED document.getSelection().getRangeAt(0)");
    }
});

6.0.0 and 6.1.0 both log AMBIGUOUS:
{
    "status": 2
}

whereas 5.7.6 logs:
{
    "status": 0,
    "fragment": {
        "textStart": "ranked-choice voting (rcv) is a confusing, chaotic “reform” being pushed by mega-liberal political donors and other activists."
    }
}

I don't see a release/branch for 5.7.6, but based on the dates from NPM, I think this is the correct diff. I will start poking around to see if I have any idea what changed. :)


add more community example

Hello, i create an example of graphql go. I also integrate this example with echo framework, GORM, Postgres database and unit testing.
thank you

I'm closing this PR because the example has a lot of dependencies. They will get outdated very quickly and will not be relevant to most users with time.


No permission to run a command from the sandbox

Following the instructions in README, I ran the demo.js:
$ sudo node demo/demo.js
Whooops! Error: The child process has reported the following error: The specified path "/opt/sandbox-test/rootfs/sandbox/binary" does not exist.

Then, I created /opt/sandbox-test/rootfs/sandbox/binary and /opt/sandbox-test/rootfs/sandbox/working, and then retry:
$ sudo node demo/demo.js
Sandbox started, press enter to stop
Your sandbox finished!{"status":1,"time":656329,"memory":131072,"code":126}

The running exits with code 126 which should indicates no permission to run the command.

Check if nobody user can access your rootfs. You can do this by sudo -u nobody -s and cd to that directory. Note that the user must have x (execute) permission on every parent directory in order to access the rootfs.
If it doesn't help, you might have to check for the return code of execve function call. I'm very sorry that I didn't write a logic to check the return code of execve. You can add some lines of code to the catch block of ChildProcess() in native/sandbox.cc to print the error message to Standard Error (you could comment out the redirection of stderr stream in line 105 to see the error message directly).


CMI doesn't recognize mod tools for /repair

Unfortunately /repair only works on vanilla items. Maybe at some point write a small server side mod that would do the same thing as /repair, but for mod items?

Will require a custom solution but forwarded to our development team :)


Add #![deny(missing_docs)]

This commit adds the #![deny(missing_docs)] pragma, which causes
compilation to fail if a public type or function is missing a
documentation comment. It also adds missing documentation comments for
public types and functions that were missing them.
Fixes #94
r? @emilio

@bors-servo: delegate+

:v: @fitzgen can now approve this pull request

@bors-servo r=emilio

:pushpin: Commit fcfb8e5 has been approved by emilio

:hourglass: Testing commit fcfb8e5 with merge e06aab1...

:sunny: Test successful - status-travis


Pricing question

Let's say i run this project to make a single call to a different webhook every 24 hours.
Will the price be usage of 24 hours? or is it in "sleep mode" and i would only be charged for the minimum run time of 15 mins ones a day?

It seems to me you're incurring the minimum full time cost which comes to $36/mo which is insanely expensive for something like this.

Digging further, using a single app engine and low volume pub sub is free.


System tests improvements

https://jira.mitre.org/browse/SARAALERT-196

Do you know what causes these errors? They're not causing tests to fail out or error out -- so i suspect maybe the test does a retry and when it does the page is in a ready state.

Do you know what causes these errors? They're not causing tests to fail out or error out -- so i suspect maybe the test does a retry and when it does the page is in a ready state.

Might be worth adding bundle exec rake assets:precompile to CI


MINOR: Clean-up MemoryRecords variables and APIs

This is found that the buffer.capacity() would be reflecting the underlying whole byte buffer's capacity, and hence cannot be reliably used for readable records. Renamed some other APIs for better clarity and a minor behavior fix for hasRoomFor. Ping @junrao for reviews.

Jenkins failures are irrelevant.

@junrao Addressed your comments per off-line discussion.

Thanks for the patch. LGTM.


Fix CVE-2023-34062

Description
Fix https://github.com/Azure/azure-sdk-for-java/issues/38066
All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

API change check
APIView has identified API level changes in this PR and created following API reviews.
com.azure.spring:spring-cloud-azure-autoconfigure


Why is pycoral faster than libedgetpu (c API)?

I am benchmarking MoveNet (Lightning) performance on a Raspberry Pi 4b (32-bit buster, 4Gb RAM, overlocked to 2 GHz, USB Accelerator) with "libedgetpu1-max" runtime installed.
I have compared inference performance (latency) using pycoral and libedgetpu's c API using the following minimal programs (attached, renamed as txt files...because...GitHub):
benchmark_movenet_pycoral.py.txt
benchmark_movenet_c_api.c.txt
build_benchmark_movenet_c_api.sh.txt
I get an average latency of 16 ms for pycoral and 21 ms for libedgetpu c API. Why is this?
Also, why are these both significantly longer than the benchmarks reported here.
You can test these programs by copying them into a new sub-folder of your "pycoral" root (on a Raspberry Pi running 32-bit RPiOS "buster", probably also works with bullseye). Note: the benchmark_movenet_c_api.c program can be built with the attached bash script. However, you first have to build libtensorflow_c.so and libedgetpu.so (direct) following the instructions here and "install" the relevant headers. Please get in touch if you have problems, I am happy to help.
I have also inspected the semi-detailed (verbosity=5) logs generated by each (pycoral and c API) program, and, well, they look quite similar.
c_api_log.txt
pycoral_log.txt
On another, seperate but equally confusing note, why does there seem to be USB transfers (according to the verbose debug output) after the first inference? The model is already loaded, the inputs are set, and only inference is being invoked on the second run. What data has to pass over USB?
The second inference starts at line 329 in the c_api log and 330 in the pycoral log. These are then followed by many lines such as this: "I driver/usb/usb_driver.cc:1138] bulk in 1024 bytes from buffer index [?])". What is going on here?
Thanks in advance!

I get an average latency of 16 ms for pycoral and 21 ms for libedgetpu c API. Why is this?

Please compare average latency for at least 1000 inferences. And please check these issues it is expected that for some models  python API is faster than C API. https://github.com/tensorflow/tensorflow/issues/29746, https://github.com/tensorflow/tensorflow/issues/15552#issuecomment-396573076

Also, why are these both significantly longer than the benchmarks reported here.

MoveNet (Lightning)  has some operations running on CPU. The latency difference is due to difference between benchmark Desktop CPU and RPI CPU.

On another, seperate but equally confusing note, why does there seem to be USB transfers (according to the verbose debug output) after the first inference? The model is already loaded, the inputs are set, and only inference is being invoked on the second run. What data has to pass over USB?
The second inference starts at line 329 in the c_api log and 330 in the pycoral log. These are then followed by many lines such as this: "I driver/usb/usb_driver.cc:1138] bulk in 1024 bytes from buffer index [?])". What is going on here?

These are data  transfers logs from TPU to CPU for each inference. The only difference for first inference and rest of the inferences for same model is loading the model into Edge TPU memory.

Please compare average latency for at least 1000 inferences. And please check these issues it is expected that for some models python API is faster than C API. tensorflow/tensorflow#29746, tensorflow/tensorflow#15552 (comment)

The benchmarks reported were run with 1000 iterations. Thanks for linking to the other issues. However, in my case, I discovered that I had compiled libtensorflow_c.so without XNNPACK, and given your insight that MoveNet uses many CPU-only OPS, this explains the performance difference.
Having rebuilt libtensorflow, I now achieve 11 ms latency using the C API. All good, you can close the issue.
Thanks for the help!

Also, why are these both significantly longer than the benchmarks reported here.

MoveNet (Lightning) has some operations running on CPU. The latency difference is due to difference between benchmark Desktop CPU and RPI CPU.

Again, this was a key insight for me. Thanks!

On another, seperate but equally confusing note, why does there seem to be USB transfers (according to the verbose debug output) after the first inference? The model is already loaded, the inputs are set, and only inference is being invoked on the second run. What data has to pass over USB?

Given that the results of CPU ops need to be transferred to the EdgeTPU, then, obviously, we expect USB traffic.


_WD_LoadWait - better error handling

Pull request
Proposed changes
_WD_LoadWait should have better error handling
Checklist

[x] I have read and noticed the CODE OF CONDUCT document
[x] I have read and noticed the CONTRIBUTING document
[ ] I have added necessary documentation or screenshots (if appropriate)

Types of changes
Please check x the type of change your PR introduces:

[ ] Bugfix (change which fixes an issue)
[x] Feature (change which adds functionality)
[ ] Code style update (formatting, renaming)
[ ] Refactoring (functional, structural)
[x] Documentation content changes
[ ] Other (please describe)

What is the current behavior?
On $_WD_DEBUG_Error function do not set complete information about $iTimeout reason.
_WD_ExecuteScript($sSession, 'return document.readyState', '', Default, $_WD_JSON_Value) can set error to <> $_WD_ERROR_Timeout what was not documented in header.
What is the new behavior?
added support for $_WD_ERROR_Exception
Additional context
https://www.w3schools.com/jsref/prop_doc_readystate.asp
and $iExt shows latest status from: https://www.w3schools.com/jsref/prop_doc_readystate.asp
I was working with https://github.com/Danp2/au3WebDriver/pull/362 and because of this https://github.com/Danp2/au3WebDriver/pull/362#issuecomment-1225545526 I was thinking about small refactoring
even before we decide about it would be helpfull to change _WD_LoadWait behavior on the fly without touching capabilities. : _WD_LoadWait() enhancements
System under test
Please complete the following information.

I'm with your change

Should these string literals (loading, loaded, etc) be changed to constants?
https://github.com/Danp2/au3WebDriver/blob/3b85f07a965fe43902b3175007c8badaf9b6d491/wd_helper.au3#L781-L793

Should these string literals (loading, loaded, etc) be changed to constants?
https://github.com/Danp2/au3WebDriver/blob/3b85f07a965fe43902b3175007c8badaf9b6d491/wd_helper.au3#L781-L793

Yes. Even more it can be changed to Global Const $_WD_ReadyState[]
What you think about ?

Global Const $_WD_ReadyState[]

I was thinking something similar, but not an array. How will that work?

 [$aWD_READYSTATE added](/Danp2/au3WebDriver/pull/384/commits/6193d341784b5464e91bdbb4e5901648f6f34bb7)

Please take a look on: $aWD_READYSTATE added


Ensure Consistent Styles Across Pages

[x] The Add User cannot add user?!?
[x] Form Validation

Never throw validation for wrongly type password and confirmation_password, but backend checks

[x] Allocate Roles - > modal or new page?
[ ] Schedule Availability 😢
[x] Tests for UsersController
[ ] Page for Admin to Change Members' PWs

Coverage decreased (-0.4%) to 59.021% when pulling 2e05a857a50584ece15690f4138dac2f38242258 on uniform-styles into 7d4eb86099e99e423a1faf155932112b4b619b55 on master.

Fixes #57


Parsers declared with \DeclareListParser appear to have quadratic behavior

I was looking at the implementation of \docsvlist and \forcsvlist and trying to understand the purpose of the \space macros (possibly to prevent stripping off too many layers of braces?) and I noticed that the parsers have running time quadratic in the length of the list.
The issue is the check if there are any more elements in the list starting on lines 1508 and 1524. The \ifblank is going to \detokenize the rest of the list, and then assuming it isn't blank, it has to put the tokens back.
It's slightly difficult to talk about these macros in general, so I'll focus on \docsvlist. If I understand this correctly, \docsvlist{a,b,c} expands to \etb@lst@docsvlist  a,b,c,& (where the aforementioned \space is what's causing the extra space after \etb@lst@docsvlist).
Rather than appending ,&, \docsvlist should be able to append something like ,\etb@lst@sentinel,&. Then, \etb@lst@docsvlist can be defined like
\long\def\etb@lst@docsvlist#1,#2,{%
  \etb@listitem\do{#1}%
  \ifx\etb@lst@sentinel#2\empty
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
    {\listbreak}%
    {\expandafter\etb@lst@docsvlist\space#2,}%
}

This implementation appears to be expandable just like the original, but simpler. The only change is looking for the sentinel rather than checking if the rest of the list is blank.
f.txt is a simple version demonstrating the code and demonstrating the expandable nature of the list.
t.txt computes how long it takes to iterate through a 500-element comma-separated list using both the etoolbox code and mine. It takes the mean of 1000 runs which is probably over kill, but on my (several year old) machine, the mean time for the original code is 2558/2^16 seconds and 70/2^16 seconds for my code.
If you change the number of elements in the list, the quadratic run-time becomes apparent.
I realize that by TeX's very nature, lists are going to take quadratic time for a bunch of operations that should be linear time (or amortized constant time) in a sane programming language. But I don't think iterating over a list is one of them.

Your analysis is right, but that doesn't necessarily mean that a change is likely.
As you may know, I'm looking after etoolbox as the original author (Philipp Lehman) 'dropped off the radar' some years ago. There were a few changes that were essential, so someone had to pick up the package. What I'm therefore mindful of is that changes need to be in line with Philipp's original ideas. Here, he chose a particular approach, and I'm wary of change.
At the same time, I'm on the LaTeX3 Project, and we have a 'bigger' set of programming tools (expl3). I have to be careful that etoolbox doesn't end up too much as simply 'a second version of the same stuff'. If you look at the (for example) comma list mapping implementation in expl3 is uses exactly the approach you suggest, with a marker, though there are some subtle differences as brace stripping issues are not the same.
I'll need to think about this: the question is not technical but rather one of policy.

Makes sense.
I glanced quickly at etextools and pgffor to see if I could figure out what their loops' behaviors are but both are inscrutable (for entirely different reasons).

I'd stay away from etextools: it's not maintained and there are some long-standing issues.

That's good to know and also too bad since it seems to add some missing functionality around comma-separated lists. It's probably time to bite the bullet and learn expl3.

@stevecheckoway I'm happy to consider new functionality in etoolbox if it's within the scope of the package. Ideally, the guy behind etextools would adjust his code such that I can move 'core' ideas to etoolbox, but that has not happened to date.
I think on balance I will look at the performance here: I doubt Philipp intended to pick a slow method.

\etb@defparser@arg has the same quadratic behavior and I think \etb@forlistloop@i does as well, but I'm running out the door and I merely glanced at it just now.

My implementation idea doesn't work exactly as specified. The problem is that looking for the sentinel causes braces to be stripped. \docsvlist{a,{b,c}} and \docsvlist{a, {b,c}} now have different behavior. The first expands to (essentially) \do{a}\do{b}\do{c} with the new definition and the second to \do{a}\do{b,c}.
The list macros have other brace issues, namely \docsvlist{{a}b,c} expands to \do{ab}\do{c} which isn't ideal. But that behavior doesn't justify the stripping braces around {b,c} which drastically changes the meaning.
I think I figured out an approach that works. I implemented it for the internal lists first and then adapted it to the comma-separated lists.  More effort is involved in the comma-separated list case.
The internal list macros strip one layer of braces already, but I think with some care, the sentinel approach should work here as long as braces are added around the part that's being put back in the input. Something like this.
\long\def\etb@forlistloop#1#2{\etb@forlistloop@i{#2}#1|\etb@lst@sentinel|&}%
\long\def\etb@forlistloop@i#1#2|#3|{%
  \ifblank{#2}%
    {}%
    {#1{#2}}%
  \ifx\etb@lst@sentinel#3\@empty
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
    {\listbreak}%
    {\etb@forlistloop@i{#1}{#3}|}%
}%

In the second to last line, the braces around #3 will be stripped by \etb@forlistloop@i but they're needed to prevent two layers of braces from being stripped. I.e., given
\def\foo{}
\listadd\foo{{{foo}}}
\listadd\foo{{{bar}}}

\dolistloop\foo expands to \do{{foo}}\do{{bar}} Using either \listadd\foo{foo} or \listadd\foo{{foo}} instead expands to \do{foo}. I believe my implementation preserves that behavior.
Fixing the comma-separated list versions take more work. But not a whole lot more. The key idea is to change \etb@lst@docsvlist and \etb@lst@forcsvlist such that the first argument contains the leading-space-stripped current item in the list. Here's my code.
\def\if@etb@sentinel#1{%
  \expandafter\ifx\expandafter\etb@lst@sentinel\@firstofone#1\@empty
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
}

\def\etb@defparser@do#1#2{%
  \begingroup
  \edef\@tempa{%
    \endgroup
    \long\def\noexpand#1####1{%
      % Start with an empty (not just blank) first argument.
      \expandafter\noexpand
      \csname etb@lst@\expandafter\@gobble\string#1\endcsname
      {}\space####1\noexpand#2\noexpand\etb@lst@sentinel\noexpand#2&%
    }%
    \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2\noexpand#2{%
      % If the argument is empty, there's nothing to do. Otherwise `\do{#1}`
      \noexpand\ifstrempty{####1}%
        {}%
        {\noexpand\do{####1}}%
      % If it's blank, it isn't the sentinel so pass an empty first argument to
      % this macro. Otherwise, check for the sentinel and break if
      % found, otherwise, expand the macro again, but this time strip leading
      % spaces from ####2 using the `\@firstofone`.
      \noexpand\ifblank{####2}%
        {%
          \expandafter\noexpand
          \csname etb@lst@\expandafter\@gobble\string#1\endcsname{}\space
        }%
        {%
          \noexpand\if@etb@sentinel{####2}%
            {\noexpand\listbreak}%
            {%
              \noexpand\expandafter
              \expandafter\noexpand
              \csname etb@lst@\expandafter\@gobble\string#1\endcsname
              \noexpand\expandafter{\noexpand\@firstofone####2}\space
            }%
        }%
    }%
  }%
  \@tempa
}

\def\etb@defparser@arg#1#2{%
  \begingroup
  \edef\@tempa{%
    \endgroup
    \long\def\noexpand#1####1####2{%
      % Start with an empty (not just blank) first argument.
      \expandafter\noexpand
      \csname etb@lst@\expandafter\@gobble\string#1\endcsname
      {}{####1}\space####2\noexpand#2\noexpand\etb@lst@sentinel\noexpand#2&%
    }%
    \long\csdef{etb@lst@\expandafter\@gobble\string#1}####1####2####3\noexpand#2{%
      % If the first argument is empty, there's nothing to do for this item.
      % Otherwise `#2{#1}`
      \noexpand\ifstrempty{####1}%
        {}%
        {####2{####1}}%
      % If it's blank, it isn't the sentinel so pass an empty first argument to
      % this macro. Otherwise, check for the sentinel and break if
      % found, otherwise, expand the macro again, but this time strip leading
      % spaces from ####3 using `\@firstofone`.
      \noexpand\ifblank{####3}%
        {%
          \expandafter\noexpand
          \csname etb@lst@\expandafter\@gobble\string#1\endcsname{}{####2}\space
        }%
        {%
          \noexpand\if@etb@sentinel{####3}%
            {\noexpand\listbreak}%
            {%
              \noexpand\expandafter
              \expandafter\noexpand
              \csname etb@lst@\expandafter\@gobble\string#1\endcsname
              \noexpand\expandafter{\noexpand\@firstofone\space####3}{####2}\space
            }%
        }%
    }%
  }%
  \@tempa
}

Note that these don't need \etb@listitem and \etb@listitem@i any longer because leading spaces (and braces) have already been stripped \@firstofone
The \if@etb@sentinel can also be used in \etb@forlistloop@i (that's why the \@empty is there, otherwise it's not necessary):
\long\def\etb@forlistloop@i#1#2|#3|{%
  \ifblank{#2}%
    {}%
    {#1{#2}}%
  \if@etb@sentinel{#3}
    {\listbreak}%
    {\etb@forlistloop@i{#1}{#3}|}%
}

Regardless of whether you want to use this new code for either the comma-separated lists or the internal list, I think you need to revert https://github.com/josephwright/etoolbox/commit/365a80ab84981130b84fb660cc929d2a5e249c7b because stripping braces is definitely the wrong behavior.

@stevecheckoway Well brace/space behaviour is already not quite what I'd aim for in a new implementation: Try something lie {a},b, {c},{d} , {e}  with the older code ...

I'm of course in the position with etoolbox that I don't have any tests set up: I guess I'll need to set some up here.

Looks like \do{a}\do{b}\do{c}\do{d }\do{e} (and a quick test confirms). The existing behavior may not be ideal, but we definitely shouldn't change it and https://github.com/josephwright/etoolbox/commit/365a80ab84981130b84fb660cc929d2a5e249c7b changed it.

I'll set up some tests using l3build in the morning, along with reverting the commit if required and addressing the issue(s).

Tests are a great idea! I recommend a,{b,c} be one of them.
Running
\def\do#1{(#1)}
\def\expected{(a)(b,c)}
\edef\actual{\docsvlist{a,{b,c}}}
\ifx\expected\actual
  \typeout{Match^^J}
\else
  \typeout{Expected: \meaning\expected^^JActual: \meaning\actual^^J}
\fi

with the new code prints
Expected: macro:->(a)(b,c)
Actual: macro:->(a)(b)(c)

and prints Match with the old.

@stevecheckoway Hopefully things are now working for the list parser case. I'll work on the other performance issues, and I'll give it a day or so before a release unless I hear back that it looks good to you.

These all look good to me and pass my minimal test cases. Using \@nil instead of \space is clever. Thanks for taking a look at these!


vim vg0, vg^ and vg$ should include the character at the end of the line in the selection

VSCode Version: Code - Insiders 1.4.0-insider (fc167f86c1aee27951b7d4b4db51229f62d0a0ad, 2016-07-26T05:12:44.554Z)
OS Version: Linux x64 4.4.0-28-generic, Ubuntu 16.04

#9699
Not sure if this is an extension, sample extension or API issue?
Steps to Reproduce:

Open a file
Go to a line with content
end
Type vg0, notice the character at the end is not included in the selection (unlike when running vim)

And

Go to beginning 0
Type vg$, notice that character at the end is not included

And

Go to beginning 0
Type vg_, notice that non white space character at the end is included, BUT, cursor position is on next character

Same case as #9803. Thanks @Tyriar

This is a different issue than #9803. All selection commands are excluding the last character.

Again these are Vim specific details which has to be implemented by Vim extensions. Because, Vim extension uses Block cursor type for Normal (and Visual mode). Relation between Block type cursor and Line type cursor is that

To represent current character or column, Line cursor type blinks before it where as block type cursor blinks on top of the character

For eg: ab|c <==> block cursor on top of c
All movement and selection operations are based on this fact. So, when selecting backwards it is expected to ignore the current character.
One more fact is that in Vim world, there is no special position for end of line, instead last character is represented as end. So when end or $ is pressed, Vim moves the cursor to last character. Hence by default vg0 or vg^ ignores first character if just calling cursorMove command. So Vim implementation has to handle selecting current character on top of calling this command.
Moving this to Vim sample extension

This issue was moved to Microsoft/vscode-extension-samples#3


Add map grid to display

Map grid is on by default and drawn over all other layers at 75% alpha.
Grid may be toggled via Ctrl+G.

I made a few small tweaks to make the grid and cursor look slightly nicer together, see what you think.

I made a couple more adjustments:

Tweaked the shape of the grid assets used along the bottom edges of the map for consistency
Applied a -1px offset to center entity bubbles within the grid lines (and the tweaked cursor)

If you're happy with those changes, I'll go ahead and merge.

Looks good to me!


Add port command to get service host/ip

In docker-compose, there is a "port" command which outputs the public port of a port binding.
The equivalent functionality in kube-compose would be to output the cluster IP or service hostname depending on a flag.

I don't personally like the name "port" as a command - we should consider something more meaningful even though docker-compose uses port. Perhaps align more with what kubectl would respect?

What would kubectl respect?
As discussed a get and --format would be nice, similar to the --format of docker images.


Problem with "Get a bearer token for the current user"

The step 1 "Get a bearer token for the current user"
Azure CLI

az account get-access-token https://search.azure.com/.default

gave the following error:
Unrecognized arguments: https://search.azure.com/.default

Don't this need to be the specific ACS URL in our environment? Running a similar command in PowerShell gave an error as well. We need to use our own tokens to query our index data controlled by RBAC.
Please clarify. Thanks.

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

ID: 2293a04c-2b13-4087-0b20-eebf2278f522
Version Independent ID: 9fc429b6-1f91-74e0-3f35-3b0e54ecd213
Content: Connect using Azure roles - Azure Cognitive Search
Content Source: articles/search/search-security-rbac.md
Service: cognitive-search
GitHub Login: @HeidiSteen
Microsoft Alias: heidist

@whsh-ca
Thanks for your feedback! We will investigate and update as appropriate.


Dashboards have confusing panels and dropdowns

Bug Description
Issue
Field reported that the Loki dashboard has a few issues:

the Messages input panel shows no data, even though the metric itself is present in Prometheus (maybe a $__interval -> $__rate_interval issue?)
the dropdown for "Juju Model" shows models where Loki is not deployed; it's not clear that it only makes sense to select models where loki is deployed. Should we use a loki-specific metric to populate the dashboard variables? Or maybe add a juju_charm=loki-k8s?
the Messages total panel shows no data when selecting the model loki is deployed in, but does show data when the dropdown is set to "All"
the Index row is empty; it seems to be using cortex_ metrics, so it will probably always be empty for non-HA Loki

Possible Solution

change $__interval to $__rate_interval where it makes sense (everywhere?)
select the dropdown variables only for models where Loki is present (not sure if only the juju_model variable or all of them)
investigate the Messages total dashboard
either remove the Index row completely, or specify it's for HA

To Reproduce
juju deploy loki-k8s loki
juju deploy prometheus-k8s prometheus
juju deploy grafana-k8s grafana

juju relate loki:metrics-endpoint prometheus
juju relate promethteus:grafana-source grafana
juju relate loki:grafana-dashboards grafana

Environment

Relevant log output
-

Additional context
No response

The Loki dashboard could use a full rewrite. However, until we have time for that, I'll address the most pressing issues only.


4.x: ServerCdiExtension.serverBuilder() is not public

Environment Details

Helidon Version: 4.0.0
Helidon MP

Problem Description
ServerCdiExtension.serverBuilder() is not public:
https://github.com/helidon-io/helidon/blob/ce8c23320fd96326b93bce39a389814cdf6b1b1a/microprofile/server/src/main/java/io/helidon/microprofile/server/ServerCdiExtension.java#L301
This means it is not possible perform certain customizations of the WebServer on startup as described in these issues

#7783
#3727

This is "as designed". The existing public methods (serverRoutingBuilder, addFeature, etc) should cover the needs for a Helidon MP application.


[QUESTION] One or more objects in request body?

Description
I'd like to have an endpoint in my API that accepts one or more objects in the request body. For example, I would like both of these to be valid request bodies:
{
  "name": "foo"
}

[
  {"name": "foo"},
  {"name": "bar"}
]

I'm not sure how to do this in fastapi/pydantic. Is it even possible? Any advice?

I haven't yet seen anything like this implemented in FastAPI, but I think a reasonable starting point would be to try to use the recently-added custom root model feature in pydantic: https://github.com/samuelcolvin/pydantic/pull/628 and https://github.com/samuelcolvin/pydantic/issues/507 (I am not sure whether FastAPI is compatible with the appropriate version of pydantic yet).
Note that it would be straightforward to handle either case if contained inside an object wrapper, i.e.:
{
    "name_data": {
        "name": "foo"
    }
}

vs.
{
    "name_data": [
        {"name": "foo"},
        {"name": "bar"},
    ]
}

which (I believe) could be implemented via
class Name(BaseModel):
    name: str

class NameData(BaseModel):
    name_data: Union[Name, List[Name]]

@dmontagu Thanks for the response. Yes, I'm aware of the pattern you mention above, but I want to avoid wrapping my object(s) as such. I've also run into problems with Pydantic when it tries to marshall Unions with collection types like in your example above; I might try running your example to see if it works. Lastly, I've also looked at the custom root models in Pydantic, and I had some troubles getting a custom validator to work with one (and your concern about FastAPI compatibility is valid).

@kevlar1818
Union is currently somewhat finicky in pydantic due to the way it is implemented -- the order matters because it will try to parse types in the provided order. For what it's worth, if you have issues with pydantic Union parsing, I would encourage you to open a github issue over on the pydantic repository -- if the problem isn't a bug (which it might be), you'll probably get a suggestion for how to accomplish your goal.

For what it's worth, the following script does work for me:
from typing import List

from pydantic import BaseModel, Union

class Name(BaseModel):
    name: str

class NameData(BaseModel):
    name_data: Union[Name, List[Name]]

data1 = {
    "name_data": {
        "name": "foo"
    }
}

data2 = {
    "name_data": [
        {"name": "foo"},
        {"name": "bar"}
    ]
}

print(NameData(**data1))
# NameData name_data=<Name name='foo'>

print(NameData(**data2))
# NameData name_data=[<Name name='foo'>, <Name name='bar'>]

If your issue with the container approach is that you don't want to write a container model for every list-or-object type you want to have, you can leverage pydantic.generics.GenericModel:
from typing import List, TypeVar, Generic

from pydantic import BaseModel, Union
from pydantic.generics import GenericModel

T = TypeVar("T")

class Name(BaseModel):
    name: str

class ListOrObject(GenericModel, Generic[T]):
    contained: Union[T, List[T]]

data1 = {
    "contained": {
        "name": "foo"
    }
}

data2 = {
    "contained": [
        {"name": "foo"},
        {"name": "bar"}
    ]
}

data3 = {
    "contained": "string1"
}

data4 = {
    "contained": ["string1", "string2"]
}

print(ListOrObject[Name](**data1).contained)
# Name name='foo'

print(ListOrObject[Name](**data2).contained)
# [<Name name='foo'>, <Name name='bar'>]

print(ListOrObject[str](**data3).contained)
# string1

print(ListOrObject[str](**data4).contained)
# ['string1', 'string2']

(The above script runs for me as is)

Thanks for the detailed response! I'll consider these options and decide how to proceed. I'll mark this issue as closed unless someone else objects.

Thanks for the help @dmontagu 🌮!
Thanks @kevlar1818 for reporting back and closing the issue.


Feature request: addStyleRule

Would it be possible to enable the addition of style rules to the frame? E.g. http://davidwalsh.name/add-rules-stylesheets
This would allow for support of css pseudo classes like :focus or :hover.

Hi @ithielnor, thanks for this link. Being able to add pseudo-classes is one of our most requested features, so we definitely hear you.
Our challenge is allowing this type of flexibility while still providing a secure solution. I do believe we have a solution in the works, though it's more than a few weeks out. Stay tuned!

@rwdaigle - any chance you could give me a hint about what this solution might look like?
We are currently trying to implement our payment form using the iframe and we're finding it difficult to get the iframe to work with our form design. Not looking for any guarantees - just a little hope :)

@isaac sure. We're basically looking at providing a solution where each field (card number and cvv) are their own iframes and would only contain the one field. This has the advantage of allowing you to place each field wherever you want as well as keeping all labels, tooltips etc... outside the iFrame and in your complete control. We believe this will be a much less limiting solution than what's currently in place.

Thanks @rwdaigle. Any idea when this might be ready?

@galenking some idea, but we haven't been able to formally put it on our dev schedule so I'm not going to commit to anything here :)
We're just as excited about it as you are since it reduces our support burden, so rest-assured, our interests are aligned! We'll drop a note here when we have something to share.

Thanks @rwdaigle!
Please let me know if you ever need testers for this feature.
So with this solution you're looking at would it be possible to target the iframe inputs with input:focus CSS?
If this is not possible for security reasons another potential way for us to style inputs on focus would be to expose "focus" and "blur" javascript events for each input.

@rwdaigle, in the meantime, I wonder if you could remove the :focus styling that puts the grey halo around the input fields? Or is there a purpose to this styling that I am missing?

@isaac

If this is not possible for security reasons another potential way for us to style inputs on focus would be to expose "focus" and "blur" javascript events for each input

Yes, this is the approach we will be taking.
@galenking

I wonder if you could remove the :focus styling that puts the grey halo around the input fields? Or is there a purpose to this styling that I am missing?

I believe that styling is browser-dependent? I.e. I don't believe we're adding that ourselves.

Thanks @rwdaigle - sounds good!

@ithielnor, @galenking, @isaac
Our newest release, iFrame v0.10, is implemented as two independent credit card fields (one for the number and one for the CVV) beneath a unified API. This lets you place them wherever you want on your form as they are no longer forced to be physically near each other. This also lets you keep the field labels and any other validation adornments on the master page under your full control. Custom web fonts, credit card branding images, and validation messages are now in the purview of the master page.
We encourage all users of previous iFrame versions to upgrade to v0.10 and anybody looking to limit their PCI exposure while still retaining a custom UI to try iFrame v0.10. Full documentation is available here: https://docs.spreedly.com/guides/adding-payment-methods/iframe_0_10/ . If you have any issues, please contact us at<EMAIL_ADDRESS>