[Support]: can't figure out what's wrong

Describe the problem you are having
I copied the example config and simply changed the camera name to reflect an existing HASS one, and adding it's valid snapshot URL.
Version
3.1.0-2717ec6
Swatch config file
# REQUIRED: Define a list of objects that are expected to be seen. These can be specific
# to one camera or common between many / all cameras
objects:
  # REQUIRED: Name of the object
  cancello1:
    # REQUIRED: the list of color variants that this object can be detected as. Useful for
    # different lighting conditions
    color_variants:
      # REQUIRED: the name of the color variant
      default:
        # REQUIRED: the lower R, G, B values that are considered a potential match for the
        # color variant of the object.
        color_lower: 70, 70, 0
        # REQUIRED: the upper R, G, B values that are considered a potential match for the
        # color variant of the object.
        color_upper: 110, 100, 50
        # OPTIONAL: the time range for when this color variant is allowed
        # NOTE: make sure that /etc/localtime is passed to the container so it has valid time
        time_range:
          # OPTIONAL: Color variant is valid if current time is > this 24H time (Default: shown below).
          after: "00:00"
          # OPTIONAL: Color variant is valid if current time is < this 24H time (Default: shown below).
          before: "24:00"
    # OPTIONAL: the min area of the bounding box around groups of matching R, G, B pixels
    # considered a true positive. This is not recommended to be set as a super small amount
    # could be a false positive. (Default: shown below)
    min_area: 1000
    # OPTIONAL: the max area of the bounding box around groups of pixels with R, G, B
    # values within the bounds to be considered a true positive (Default: shown below).
    max_area: 100000
    # OPTIONAL: the min ratio of width/height of bounding box for valid object detection (default: shown below).
    min_ratio: 0
     # OPTIONAL: the max ratio of width/height of bounding box for valid object detection (default: shown below).
    max_ratio: 24000000

# REQUIRED: Define list of cameras that will be used for color detection.
cameras:
  # REQUIRED: Name of the camera
  piazzale:
    # OPTIONAL: Frequency in seconds to run detection on the camera.
    # a value of 0 disables auto detection (Default: shown below).
    auto_detect: 0
    # OPTIONAL: Configure the url and retention of snapshots. (Default: Shown Below)
    snapshot_config:
        # OPTIONAL: but highly recommended, setting the default url for a snapshot to be
        # processed by this camera. This is required for auto detection (Default: none).
        url<EMAIL_ADDRESS>        # OPTIONAL: Whether or not to draw bounding boxes for confirmed objects in the snapshots (Default: shown below).
        bounding_box: true
        # OPTIONAL: Whether or not to save a clean png of the snapshot along with the annotated jpg (Default: shown below).
        clean_snapshot: true
        # OPTIONAL: Whether or not to save the snapshots of confirmed detections (Default: shown below).
        save_detections: true
        # OPTIONAL: Whether or not to save the snapshots of missed detections (Default: shown below).
        save_misses: false
        # OPTIONAL: Variations of snapshots to keep. Options are all, mask, crop (Default: shown below).
        mode: "all"
        # OPTIONAL: Number of days of snapshots to keep (Default: shown below).
        retain_days: 7
    # REQUIRED: Zones are cropped areas where the object can be expected to be.
    # This makes searching / matches for efficient and more predictable than searching
    # the entire image.
    zones:
      # REQUIRED: Name of the zone.
      street:
        # REQUIRED: Coordinates to crop the zone by.
        # NOTE: The order of the coordinates are: x, y, x+w, y+h starting in the top left corner as 0, 0.
        coordinates: 225, 540, 350, 620
        # REQUIRED: List of objects that may be in this zone. These correspond to
        # the objects list defined previously and are matched by name.
        objects:
          - cancello1

Relevant log output
[2024-02-09 17:05:28,217]: INFO - Starting SwatchApp
[2024-02-09 17:05:28,226]: INFO - Importing SwatchApp Config
[2024-02-09 17:05:28,226]: INFO - Verified SwatchApp Config
Starting migrations
[2024-02-09 17:05:28,243]: INFO - Starting migrations
There is nothing to migrate
[2024-02-09 17:05:28,252]: INFO - There is nothing to migrate
[2024-02-09 17:05:28,254]: INFO - Starting snapshot cleanup
[2024-02-09 17:05:28,254]: INFO - Starting Detection Cleanup
[2024-02-09 17:06:05,185]: ERROR - Exception on /piazzale/street/snapshot.jpg [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1519, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/opt/swatch/swatch/http.py", line 385, in get_latest_zone_snapshot
    jpg_bytes = current_app.snapshot_processor.get_latest_zone_snapshot(
  File "/opt/swatch/swatch/snapshot.py", line 206, in get_latest_zone_snapshot
    crop = img[
TypeError: 'NoneType' object is not subscriptable
[2024-02-09 17:06:05,193]: ERROR - Exception on /piazzale/snapshot.jpg [GET]
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 2073, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1519, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1517, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.10/site-packages/flask/app.py", line 1503, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/opt/swatch/swatch/http.py", line 342, in get_latest_camera_snapshot
    jpg_bytes = current_app.snapshot_processor.get_latest_camera_snapshot(camera_name)
  File "/opt/swatch/swatch/snapshot.py", line 185, in get_latest_camera_snapshot
    _, jpg = cv2.imencode(".jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 70])
cv2.error: OpenCV(4.6.0) /io/opencv/modules/imgcodecs/src/loadsave.cpp:976: error: (-215:Assertion failed) !image.empty() in function 'imencode'

Any other information that may be helpful
No response

same problem here


Features to develop

Set project milestones to track progress and achievements

András! Please, create the issues! #

I created 3 issues, delegated to the developers.

Thanks for the quick work


⚠ Bofrost.at has degraded performance

In fa704d5, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1059 ms

Resolved: Bofrost.at performance has improved in 585b472 after 50 minutes.


Cannot find Eigen dependencies...

Hi, I am trying to build libpointmatcher on windows, I have Eigen, i add the path in the cmake gui, and even though the 'Core' file that it is looking for is there, it gives these errors:
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
EIGEN_INCLUDE_DIR
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/examples
used as include directory in directory D:/VIRT/localisation/libpointmatcher-master/libpointmatcher-master/utest
Even when i remove these lines from CmakeLists.txt:
find_path(EIGEN_INCLUDE_DIR /Eigen/Core
/usr/local/include/eigen3
/usr/include/eigen3
)
include_directories(${EIGEN_INCLUDE_DIR})
The same errors. Is there a way that i can I just build without Eigen and re-link in the visual studio sln?
thanks!

I believe that this problem should be covered in the revised version of the building documentation for Windows.


Demands : ask for Node || Node.js

Currently, the Node tool installers satisfies the Node demand. The vsts hosted agent provide the Node.Js Capability.
I have  task (Yarn) which requires node js to run. Both are acceptable to run the task. How can I specify that.
I'm afraid that at the moment the only thing I can do is remove the demands entirely and rely on the user to do the right thing.

I don't think we currently support || statements in demands (or an equivalent feature). This could be a good enhancement though.

@bryanmacfarlane my understanding is that their question is about having a demand that requires either node or node.js.
So basically what they want is something in the task.json like:
demands=["Node" || "Node.js"]
This could be satisfied by a tool that has satisfies=["Node"] or satisfies=["Node.js"]
It doesn't totally make sense to me why they'd need it for this particular case since there's not really a distinction between the 2 - I guess both names are in use for some reason and that's keeping the node demand from being satisfied when the other task provides node.js - but I can imagine a situation where it could be useful to specify demands=["A" || "B"]
@sandorfr is this correct?

@damccorm you are perfectly right.
The problem we have is that there’s a mismatch between the default node capability that comes with the preinstalled node on hosted agent and what the node installer satisfies. On is using Node and the other one Node.Js
Maybe the easiest way to solve that would be for the installer to actually satisfy both Node and Node.js demands

Yeah, that's true. As I think about it, that should probably be our recommendation here and it makes this enhancement unnecessary. I'm going to close here, @sandorfr could you create an issue for this in the task lib?


Update cri to v1.0.3.

Update cri to v1.0.3 to fix 2 bugs.
Release note: https://github.com/containerd/cri/releases/tag/v1.0.3
Signed-off-by: Lantao Liu<EMAIL_ADDRESS>

Codecov Report

Merging #2395 into release/1.1 will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           release/1.1    #2395   +/-   ##
============================================
  Coverage        50.12%   50.12%
============================================
  Files               75       75
  Lines             7280     7280
============================================
  Hits              3649     3649
  Misses            2957     2957
  Partials           674      674

Flag
Coverage Δ

#linux
50.12% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

LGTM


CS Education Week Blog Post

Hey Galen,
Can you get this blog post up?
All the files should be posted here: https://1drv.ms/u/s!AmMIW5Hxi0RtgaB_QaVV6jfWmvKQKw?e=GVNnzS
Let me know if you have any questions.
Thanks!
Jacqueline

Hey @ganicke , for some reason I'm not seeing the Minecraft image come through on the blog https://makecode.com/blog/csed-week/csed-week-2022


Zoom +/-/0 with numpad keys doesn't work

Description
Tried zooming with the numpad +/-/0 keys and neither do work.
Steps to Reproduce Issue

Open any application created with nativefier
Press CTRL + +/-/0
No zoom action happens

Specifications

Version of Nativefier (run $ nativefier --version): v7.4.0
Version of Node.js (run $ node --version): v7.10.0
OS: Arch
Architecture x64

Seems legit, thanks for the report @gsantner 👍. As a workaround, non-keypad Ctrl++/-/0 do work, and menu actions (in the View menu) do too.

Ctrl-MouseWheelUp/Down also do not zoom (like they do in the browser). Not sure if related.

I can zoom using the non-keypad combinations, but the zoom resets on every click navigation. I'm using nativefier 7.4.1 for GitHub.

Can confirm zoom functionality stopped working for me as well.

Zoom with Ctrl+{+/-/0} numpad keys is fixed in ts branch, which I encourage everyone to test.
To those of you willing to give this dev. branch a try, go ahead: it's ready to ship, currently being reviewed by Jia, will ship soon, so testing is extremely welcome. See the build instructions at https://github.com/jiahaog/nativefier/pull/898#issuecomment-581062794 , and please report any issues with a [ts]  prefix.

Hi @ronjouch,
Thanks for the reply.
I've just tested with ts branch and indeed hotkey zoom works. Any pointers on how to get touchpad zoom working again like in previous versions?

Turns out pinch-to-zoom (macOS touchpad) zoom was disabled by default in newer versions of Electron:
https://github.com/electron/electron/pull/12679
To re-enable, I've added the following invocation inside window.webContents.on('did-finish-load', () => {}:
window.webContents.setVisualZoomLevelLimits(1, 3);

Woohoo! :)

Turns out pinch-to-zoom (macOS touchpad) zoom is now disabled by default in newer versions of Electron: electron/electron#12679 To re-enable, I've added the following invocation inside window.webContents.on('did-finish-load', () => {}:
window.webContents.setVisualZoomLevelLimits(1, 3);

@eladnava thanks! I incorporated your patch in branch ts, but I don't have a mac to test it. Please check out branch ts, pull, re-build, and confirm pinch-to-zoom works. If it doesn't, suggestions welcome as to what I barfed up in https://github.com/jiahaog/nativefier/pull/898/commits/38757439cc4555059ad5655af131753dc32c774c . 🙏

Hi @ronjouch,
Perfect, just one thing, it would be nice if pinch-to-zoom was supported on any non-main windows (e.g. opening a link in a new nativefier window):
In mainWindow.js:
Find:
const sendParamsOnDidFinishLoad = (window) => {
        window.webContents.on('did-finish-load', () => {
            window.webContents.send('params', JSON.stringify(options));
        });
    };

Replace with:
const sendParamsOnDidFinishLoad = (window) => {
        window.webContents.on('did-finish-load', () => {
            // Re-enable zoom
            window.webContents.setVisualZoomLevelLimits(1, 3);
            window.webContents.send('params', JSON.stringify(options));
        });
    };

Perfect, just one thing, it would be nice if pinch-to-zoom was supported on any non-main windows

@eladnava true! Incorporated in ts! Thanks again!

Perfect, confirmed working 🎉


Update dependencies and fix grand exchange test

Added some small commits that does what the title says, adds yarn.lock file, and updates the .gitignore file using gitignore.io

Did they change how the API works for GE?

no not at all but "0" was making it fail even though the examples work.

I'll merge this in but I'm not going to bump the version for it. Thanks :)

Side note: You should add the email you commit with to your Github account so that your commits link back to your actual account.

Will look into that. thank you.


[RaisedButton] with containerElement can't use with disable props

Problem description
I try to disable button with react-router. the ui show  with disable css. But I can click to the disable button.
Steps to reproduce
<RaisedButton
    containerElement={<Link to="page/somepage" />}
    label="USERNAME CONTROL"
    disabled=true
/>

Versions

Material-UI: 0.15.4
React: 15.2.1
Browser: chrome, electron

For now, I'm use like this.
constructor(props) {
    super(props);
    this.handleDisabledButton = this.handleDisabledButton.bind(this);
}

handleDisabledButton(event) {
    event.preventDefault();
  }

<RaisedButton
    secondary={somebool}
    onClick={somebool? () => {} : this.handleDisabledButton}
    backgroundColor={somebool ? "" : "#E5E5E5"}
    labelColor={somebool ? "" : "#A5A5A5"}
/>

If there are another best solution to handle this are appreciate.

We have been porting the component on the next branch. We reimplemented it from the ground-up. While we haven't tested it, I think that the issue is most likely fixed on that branch. Hence, I'm closing it.


chore: update postcss

📝 Description
bump postcss
💣 Is this a breaking change (Yes/No):
no

fixes https://github.com/chakra-ui/panda/pull/1550


fix for graphiql-plugin-explorer example

The example index.html was overwritten in #2835 with an incorrect unpkg URL.

...and I didn't notice in the review 🙈 thanks for fixing! 💜

An easy line to miss. Thanks for the quick review!


Adds support for pool on job submission

Changes proposed in this PR

adding pool as an optional, top-level field on /job POSTs
adding validation for jobs submitted with a pool

Why are we making these changes?
For full context, see issue #755. This PR is focused only on adding the ability to submit jobs to a specific pool.
What's not included?

this PR does not yet make the quota check on job submission pool-aware (issue #802)
this PR does not introduce any pool-specific scheduling

Can we merge this?


[Utilities][Opacity] Add opacity classes

Easily change the opacity of elements with the opacity utilities.
This can be very useful in some context, for example :

Instead of :

I can provide a PR if you are interested in this feature.

opacity-10     => opacity:10%
opacity-20     => opacity:20%
opacity-30     => opacity:30%
opacity-40     => opacity:40%
opacity-50     => opacity:50%
opacity-60     => opacity:60%
opacity-70     => opacity:70%
opacity-80     => opacity:80%
opacity-90     => opacity:90%
opacity-100   => opacity:100%

I can do that @PululuK

I can do that @PululuK

Yes please ! Thank you man

Hey I want to contribute on this issue.

I'm against it on this project (not even because of my own advice, but because this project is not globally following this workflow at all, and it means that we'll mix 2 different patterns).
Sometimes you'll have to go through scss files in order to modify some styles, and sometimes you'll have to go to twig files in order to modify some styles, this could make the project harder to maintain. If you are working on a certain component style, and you want to modify his opacity on a specific state, you'll have to go to a twig file, you'll have to modify some markup (which could include breaking changes), instead of only modifying a single line, on a single state selector of this component !

I'm against it on this project (not even because of my own advice, but because this project is not globally following this workflow at all, and it means that we'll mix 2 different patterns).
Sometimes you'll have to go through scss files in order to modify some styles, and sometimes you'll have to go to twig files in order to modify some styles, this could make the project harder to maintain. If you are working on a certain component style, and you want to modify his opacity on a specific state, you'll have to go to a twig file, you'll have to modify some markup (which could include breaking changes), instead of only modifying a single line, on a single state selector of this component !

This request has nothing to do with the template engine you are using.
The idea is to do something like :

  Instead of :

Damn, I just seen that we were on the bootstrap repo 🤦
This is not related to my message then...
sorry :)

Damn, I just seen that we were on the bootstrap repo facepalm
This is not related to my message then...
sorry :)

Ok ! don't worry @NeOMakinG  !

Closed for now per attached PR. Not seeing too much interest here and these can easily be added via the API.


file permissions incorrect after adding signalR to new webapp on ubuntu?

Functional impact
file permissions incorrect after adding signalR to new webapp on ubuntu?
Minimal repro steps
after adding signalR using
libman install @aspnet/signalr -p unpkg -d wwwroot/lib/signalr --files dist/browser/signalr.js --files dist/browser/signalr.min.js
from
https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio
the file permissions are like this

so it works locally but when run on server get error because public cannot see it

sudo chmod 664 filename
fixes it
Expected result
even a new sln or project file is generated with more permissions then these files? should or could it start with default 664 like most other generated files? since these permissions create an 'error' without a 'good' error message
or maybe i am just missing a setting or something
or maybe it is something with those permission and dotnet publish
thanks

This should be fixed in the CLI or Build NuGet packages version 2.0.76 or higher.


verifying<EMAIL_ADDRESS>... reading<EMAIL_ADDRESS>410 Gone

What version of Go are you using (go version)?

$ go version
go version go1.13.5 darwin/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE=""
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/matt/Library/Caches/go-build"
GOENV="/Users/matt/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/matt/Dev"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/Users/matt/Dev/src/github.com/caddyserver/caddy/go.mod"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/sf/7w4p15_15jb59d7kwy0wglh40000gn/T/go-build947643690=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
Run:
$ go get<EMAIL_ADDRESS>
What did you expect to see?
No error
What did you see instead?
verifying<EMAIL_ADDRESS><EMAIL_ADDRESS>reading<EMAIL_ADDRESS>410 Gone

This is weird, because the tag is new and unmodified (no deletions, no renames, no force pushes, etc) -- I am the only one who has committed to this repo at all recently (like, in the last several weeks/months) and I need to use the v0.9.0 tag for a new build: https://github.com/mholt/certmagic/tree/v0.9.0
Edit:
Also tried GOPROXY=direct and the same error.
(The tag is "new" but several minutes old.)

If this is a new tag, almost certainly duplicate of https://github.com/golang/go/issues/34370#issuecomment-532752050.

For posterity, the error from the sumdb:
not found<EMAIL_ADDRESS>invalid version: unknown revision v0.9.0

The tag was posted several minutes before the command though?

I don't think this is a duplicate, because in that issue the tag was created after the command was run, but for me, the tag was created before running the command.

I don't think this is a duplicate, because in that issue the tag was created after the command was run, but for me, the tag was created before running the command.

Your first command was run at Tue, 17 Dec 2019 17:32:19 GMT (no matched tag was found at this time). But v0.9.0 was cached by proxy.golang.org at Tue, 17 Dec 2019 17:33:16 GMT.

That is weird, though. Doesn't match up with what I did, I wonder if there was some lag in a system between my computer and the proxy and the git server.

And the cache has just expired:
aofei@as-macbook-pro:~$ curl -i<EMAIL_ADDRESS>
HTTP/2 200
accept-ranges: bytes
content-length: 365
content-type: text/plain; charset=UTF-8
date: Tue, 17 Dec 2019 17:54:02 GMT
expires: Tue, 17 Dec 2019 20:54:02 GMT
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 0
cache-control: public, max-age=10800
age: 118

546235
github.com/mholt/certmagic v0.9.0 h1:dYh9sZPDBTcIiPhYM/Qtv3V623/zFH34FmpbrQTpMAc=
github.com/mholt/certmagic v0.9.0/go.mod h1:91uJzK5K8IWtYQqTi5R2tsxV1pCde+wdGfaRaOZi6aQ=

go.sum database tree
546279
uVHuaN+c8KtdVSSph74Y+Zmdma8fYIqx7HMDhFjoaok=

— sum.golang.org Az3groND3X+FPNnslWNpFahhwLVCH4Ww5b0OEi5KpyPEWplyvt4qc00TB/pcpRgDKzJQQql7DnNiTWcKAHnPijt3ego=

I checked the internal logs for proxy/sum.golang.org. The first request they ever got for certmagic v0.9.0 was at 2019-12-17 17:23:35 UTC, which is the request that resulted in the negative cache entry in question. The GitHub UI for https://github.com/mholt/certmagic/releases/tag/v0.9.0 says that it was tagged at 12:22 EST, or 17:22 UTC. I don't have any explanation for the mismatch; the go command just says that it couldn't find that version. Was the tag created using the GitHub UI, in which case maybe there's some delay there?

No, it was command line. Maybe it took GitHub a minute to sync or something. Thanks for looking into it.

Incidentally, 410 Gone means:

The target resource is no longer available at the origin server and that this condition is likely to be permanent.
If the origin server does not know, or has no facility to determine, whether or not the condition is permanent, the status code 404 Not Found ought to be used instead.

This is clearly not the case with the module cache.
Additionally, perhaps negative hits should not be cached.

410 is necessarily for internal implementation reasons.
The need for negative caching is described in https://github.com/golang/go/issues/34370#issuecomment-532784418.


fix: changed date to use toLocaleDateString

The date was set for a European style vs. local style.  Those in the US typically use the mm-dd-yyyy format, so using toLocaleDateString should satisfy most users regardless where they are located.

I agree, this will allow the displayTime feature to satisfy more users


refactor: remove  return values in public database transaction functions

Currently in our database code we propagate all errors via Results all the way up to the application code. This was done partly because there was a discussion on where database errors should be handled https://github.com/fedimint/fedimint/discussions/1370
In practice, we were just calling expect on database errors, which makes the code much more verbose and difficult to read. This PRs refactors the error handling so that the public database transaction functions do not return Result, except for commit_tx. Right now database error handling is done after attempting to commit to the database. Database implementations that fail prematurely (e.g sqlite) can swallow their failures and fail during commit_tx as well, so that the failure semantics are similar across database implementations.
Fixes: https://github.com/fedimint/fedimint/issues/1829

Codecov Report
Patch coverage: 74.45% and project coverage change: -0.14 :warning:

Comparison is base (72a7531) 63.46% compared to head (3872666) 63.32%.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1834      +/-   ##
==========================================
- Coverage   63.46%   63.32%   -0.14%
==========================================
  Files         133      133
  Lines       25814    25382     -432
==========================================
- Hits        16382    16073     -309
+ Misses       9432     9309     -123

Impacted Files
Coverage Δ

client/client-lib/src/wallet/mod.rs
87.08% <0.00%> (-0.19%)
:arrow_down:

fedimint-dbtool/src/dump.rs
0.00% <0.00%> (ø)

fedimint-dbtool/src/main.rs
1.33% <0.00%> (-0.04%)
:arrow_down:

modules/fedimint-dummy-common/src/db.rs
0.00% <0.00%> (ø)

recoverytool/src/main.rs
0.35% <0.00%> (+<0.01%)
:arrow_up:

client/client-lib/src/ln/mod.rs
79.38% <50.00%> (-0.35%)
:arrow_down:

fedimint-rocksdb/src/lib.rs
71.49% <50.00%> (ø)

modules/fedimint-wallet-server/src/lib.rs
83.44% <52.17%> (+1.72%)
:arrow_up:

fedimint-client/src/sm/executor.rs
83.16% <57.14%> (-0.09%)
:arrow_down:

modules/fedimint-ln-server/src/lib.rs
79.39% <59.25%> (+4.09%)
:arrow_up:

... and 24 more

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

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

Database implementations that fail prematurely (e.g sqlite) can swallow their failures and fail during commit_tx as well,

Does it work for reads? If we are to continue and pretend there was no error, we need to be able to return something. After a failed write, can one still issue new reads on the same opened transaction? Even then - we would probably get stale reads, which might be a problem in case the code has some assertions where it verifies reading own writes, even unintentionally.

In my opinion, its difficult to architect the code to be totally agnostic of the database's behavior, as it forces us to handle the cases where the db transaction fails optimistically or pessimistically.

Generally true.
Though in this the pessimistic locking is a more general case of optimistic locking. We could handle these errors everywhere and retry on them and that would work for both sqlite and rocksdb. If we were to use sqlite as a default we would have to do that anyway.
More work and complexity, but it could be done. Though if we were using rocksdb as default, these codepaths wouldn't we well tested, so :shrug: .
I guess with this change, we are accepting that rocksdb will be the only db we use. Both on server and client. These panics in certain scenarios will be a problem in rare, but inevitable cases if we are supporting 3rd party modules. So I think we need to be explicit about it - unless we enforce some event-based append-only model of client side operations or something like that, I think this change will make certain scenarios panic randomly on sqlite, making it not very workable for client.
It's probably for the best, though I wish it wasn't a C++ project. :/

@dpc I hope we might be able to find a good rust native KV DB for at least the client eventually, but supporting wildly different transaction semantics sounds like too much effort for now. This PR at least gets us to some local maximum.

Agree with everything mentioned above. I don't think the issues with sqlite are worth blocking this PR on but at some point in the future I'd like to spend some time to add the appropriate error handling changes to make it work properly. For now I think this refactor PR is an improvement.
I'll start a discussion on the different DB implementations that we've looked at and their tradeoffs, that will probably be useful in the future.


Pushbutton sample is a better example

@paulmon,
Thanks for your contribution.
To ensure that the project team has proper rights to use your work, please complete the Contribution License Agreement at https://cla.microsoft.com.
It will cover your contributions to all Microsoft-managed open source projects.
Thanks,
Microsoft Pull Request Bot

@paulmon, thanks for signing the contribution license agreement. We will now validate the agreement and then the pull request.
Thanks, Microsoft Pull Request Bot


number.eo:344-346: Fix sqrt and its tests. Since new...

The puzzle 105-1292f880 from #105 has to be resolved:
https://github.com/objectionary/eo-math/blob/e4098ee4f3f60d7a0d3fba0cda5d30b52ee4e58d/src/main/eo/org/eolang/math/number.eo#L344-L346
The puzzle was created by @rultor on 19-Feb-23.
Estimate: 30 minutes,  role: DEV.
If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

@maxonfjvipon please pay attention to this new issue.


Structured logging

Closes #39
This is a first iteration, some testing is pending still but i wanted to raise the PR to have some early feedback, specially on the creation of loghelper.go and the func (i Imposter) LogFields() method, it just didn't feel right to me to repeat the fields everywhere and this way it looks more maintainable to me, but perhaps there's something i'm overseeing

@joanlopez  thanks for the review, i addressed the comments, would you mind giving it another round?

@joanlopez  just came back to this one to resolve a conflict, could you please take a look so future changes in main don't require this PR to be updated too?

Hey @tomp21!
Sorry, we have prioritized https://github.com/friendsofgo/killgrave/pull/139 because it's critical. Killgrave's codebase is increasing, as well as the contributors base, and we have many cool features on the pull requests pipeline, that's risky to introduce without a decent amount of testing (see the example of https://github.com/friendsofgo/killgrave/pull/173, where we had to fix an issue introduced in a previous changeset).
The good news is that we're very very close to merging it. I'll ping you once ready, so you can pull latest changes, and I'll have a final look to your PR, and see if there's any additional feedback I'd like to leave. So, you don't experience any additional conflict, and we can get this merged asap.
Meanwhile, thanks for your patience! 🙌🏻


fix: fixes

Codecov Report
Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (80052cb) 43.89% compared to head (36c8331) 43.89%.

Files
Patch %
Lines

...acter/server/code/locked_code/LockedCodeService.kt
0.00%
0 Missing and 1 partial :warning:

Additional details and impacted files
@@            Coverage Diff            @@
##               main       #7   +/-   ##
=========================================
  Coverage     43.89%   43.89%
  Complexity      403      403
=========================================
  Files           112      112
  Lines          2795     2795
  Branches        281      281
=========================================
  Hits           1227     1227
  Misses         1482     1482
  Partials         86       86

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Make TFLu renode test script target platform independent

This replaces test_bluepill_binary.sh and test_stm32f4_binary.sh with test_with_renode.sh.
With this change, the unit tests for stm32f4 are also emabled as part of the CI. These are the first set of unit tests of the cmsis-nn kernels.
Similar to the bluepill + renode test suite, the STM32F4 test suite takes ~30 seconds to run on my local machine.

@freddan80, @mansnils: once this PR is merged, we will have the STM32F4 + Renode + CMSIS tests be part of the CI for the very first time!
@piotrzierhoffer, @mgielda: with this our first round of Renode integration will be complete, and very successful too!
The renode download and installation is improved with https://github.com/tensorflow/tensorflow/pull/45812


can't import data_utils from tensorflow.models.rnn.translate(No module name tensorflow.models)

i encountered this while trying to import data_utils from tensorflow.models.rnn.translate.(in the end - NO module named tensorfow.models was my output)

I apologize but I am having a hard time understanding what the problem is, where the problem is, and what version it affects. Please resubmit and pay attention to the issue template (https://github.com/tensorflow/tensorflow/issues/new) . Please provide all the information it asks, particularly detailed steps to reproduce the problem. Thank you.


Use semantic equality comparison in VMI controller

reflect.DeepEqual cannot be used to reliably compare k8s objects since it may return unexpected results in certain scenarios. E.g. if one of the objects contains an uninitialized slice (== nil) while the other has it initialized but empty (!= nil), reflect.DeepEqual will return false. However semantically the objects will be equal.
This may result in unwanted side effects like unnecessary update calls which interfere with current expectations logic. To avoid such issues semantic comparison is now used.

What this PR does / why we need it:
This is the follow-up of the https://github.com/kubevirt/kubevirt/pull/6997. The PR fixes the bug described in https://github.com/kubevirt/kubevirt/pull/6997#issuecomment-1019546079
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
This PR addresses only the issue with VMI controller in virt-handler. There are other places in the code where reflect.DeepEqual is used. I tried to replace it everywhere but it caused some test failures. So that requires an in-depth analisys. If the approach is okay in general, the other issues can be fixed in follow-up PRs.
Release note:

NONE

/lgtm
/approve
/hold
Waiting for @davidvossel.

Maybe we can think of some fuzzing ways to test our controllers better. It is for instance possible to add fuzzying factors which randomly switch between empty slices and nil, which should be equivalent.

I tried to replace reflect.DeepEqual in other places in my local branch (a nice grep/sed exercise :) ). After that some unit-tests started to fail. Also in this PR I had to remove one EXPECT() on the Update call... the tests currently seem 'bound' to the reflect.DeepEqual behaviour. So I would say that its definitely worth looking more deeply on how the controllers are tested. Perhaps fuzzy testing might be smth to consider.

/hold cancel

/retest

/cherry-pick release-0.49


Wrong recurrence string made in Volto

Describe the bug
It seems that the rrule string generated in Volto isn't correct.
To Reproduce
Steps to reproduce the behavior:
How to reproduce it:

Add an Event
Set start and end date (end some years in the future)
Select recurrence: yearly, every 1 year, repeat the same day and stop after 3 recurrences
Save

Expected behavior
Event can be saved with the selected recurrence, but Plone returns an error because the string is not well formatted.
The same setting in Classic Plone Works.
Volto send a string like this:
RRULE:INTERVAL=1;COUNT=3;BYMONTHDAY=10;BYMONTH=3"
Same settings in Plone:
RRULE:FREQ=YEARLY;BYMONTH=3;BYMONTHDAY=10;COUNT=3
This is the traceback:

Traceback (innermost last):
Module ZPublisher.WSGIPublisher, line 167, in transaction_pubevents
Module ZPublisher.WSGIPublisher, line 376, in publish_module
Module ZPublisher.WSGIPublisher, line 271, in publish
Module ZPublisher.mapply, line 85, in mapply
Module ZPublisher.WSGIPublisher, line 63, in call_object
Module plone.rest.service, line 22, in call
Module plone.restapi.services, line 19, in render
Module plone.restapi.services.content.add, line 93, in reply
Module plone.restapi.services.content.utils, line 95, in add
Module OFS.ObjectManager, line 383, in _setObject
Module zope.event, line 32, in notify
Module zope.component.event, line 27, in dispatch
Module zope.component._api, line 134, in subscribers
Module zope.interface.registry, line 448, in subscribers
Module zope.interface.adapter, line 899, in subscribers
Module zope.component.event, line 36, in objectEventNotify
Module zope.component._api, line 134, in subscribers
Module zope.interface.registry, line 448, in subscribers
Module zope.interface.adapter, line 899, in subscribers
Module Products.CMFCore.CMFCatalogAware, line 274, in handleContentishEvent
Module Products.CMFCore.CMFCatalogAware, line 197, in notifyWorkflowCreated
Module Products.CMFCore.WorkflowTool, line 300, in notifyCreated
Module Products.CMFCore.WorkflowTool, line 610, in _reindexWorkflowVariables
Module Products.CMFCore.CMFCatalogAware, line 110, in reindexObjectSecurity
Module Products.CMFCore.CatalogTool, line 272, in unrestrictedSearchResults
Module Products.CMFCore.indexing, line 97, in processQueue
Module Products.CMFCore.indexing, line 227, in process
Module Products.CMFCore.indexing, line 49, in reindex
Module Products.CMFCore.CatalogTool, line 368, in _reindexObject
Module Products.CMFPlone.CatalogTool, line 361, in catalog_object
Module Products.ZCatalog.ZCatalog, line 507, in catalog_object
Module Products.ZCatalog.Catalog, line 341, in catalogObject
Module Products.ZCatalog.Catalog, line 292, in updateMetadata
Module Products.ZCatalog.Catalog, line 425, in recordify
Module plone.indexer.wrapper, line 65, in getattr
Module plone.indexer.delegate, line 20, in call
Module plone.app.event.dx.behaviors, line 348, in end_indexer
Module plone.app.event.dx.behaviors, line 503, in end
Module plone.app.event.dx.behaviors, line 479, in _recurrence_upcoming_event
Module plone.app.event.recurrence, line 100, in occurrences
Module plone.event.recurrence, line 110, in recurrence_sequence_ical
Module dateutil.rrule, line 1732, in call
Module dateutil.rrule, line 1707, in _parse_rfc
Module dateutil.rrule, line 1561, in _parse_rfc_rrule
TypeError: init() missing 1 required positional argument: 'freq'

The difference seems to be in missing FREQ, but i'm not a dates expert.
Software (please complete the following information):
Tested also on https://demo.plone.org

hey can you elaborate this more

@Narottamchy
The idea is that the recurence definition is processed by 2 libraries: the rrule npm package (used in Volto via the RecurenceWidget) and the dateutil.rrule in the Plone Python backend.
The problem is that some recurrence value was generated that's missing the freq value, which is required when this data is sent in the backend.

Hello @cekk , I followed same steps and it seems to be working fine to me

Sorry @cekk . My bad. I got this error. I thought with save you meant saving in the dialog of recurrence. When I saved the whole event from left side bar, it gave me error.

Hello, I was able to refactor the issue. I'll raise the PR once my contributor agreement is approved

@BhuvaneshPatil any news about this?


chore: remove db from consensus engine

gets rid of db field in consensus engine,
this currently fails because of
FINISH.get_progress(&self.db.tx()?)?.unwrap_or_default();

this API is weird to begin with, but I think we can move this to BlockchainProvider via additional trait
wdyt @Rjected

like the idea. we can either expose this on a provider or on the pipeline, tho the latter might be complicated due to pipeline ownership

the latter might be complicated due to pipeline ownership

i don't think so because the provider type also has a database

replaced by #2917


Set default hide keys for environment variables config and cookies

This PR follows up #9506 with some default values as recommended in the comments.
One caveat to adding entries here as opposed to adding them to application/config/concrete.php is there's no way to reenable some of these things without doing something like setting these config values in code.

One caveat to adding entries here as opposed to adding them to application/config/concrete.php is there's no way to reenable some of these things without doing something like setting these config values in code.

Yep, that's a big drawback. What about using a new-line-separated list of values? Overriding a string is much easier than overriding an array.
We could set it with:
return [
    'debug' => [
        'hide_keys' => [
            '_ENV' => <<<'EOT'
                DB_PASSWORD
                DB_USERNAME
                DB_HOSTNAME
                DB_HOST
                DB_SERVER
                DATABASE_PASSWORD
                DATABASE_USERNAME
                DATABASE_HOSTNAME
                DATABASE_HOST
                DATABASE_SERVER
EOT
            ,
        ],
    ],
];

And we could read it with:
preg_split('/\s*\n\s*/', (string) $config->get('concrete.debug.hide_keys_ENV'), -1, PREG_SPLIT_NO_EMPTY);

I don't like the idea of a free text to track these separate things. We can do what we have done in the past and give them keys:
'DB_PASSWORD' =>  'DB_PASSWORD'
Then users can override by doing 'DB_PASSWORD' => null. Not exactly the most intuitive but in my opinion it's better than a free text


feat: mark jumplist before moving to symbol on click

I tried out this new feature and found that it doesn't add to the jump list, so ctrl-o and ctrl-i do not work.
This marks the location before moving the cursor, and works how I expected it to.

Added it myself, Thanks for bring it to attention. :)


When listing prefixes in cli, missing values are displayed as None

When listing prefixes with nipap address list, values not filled in are displayed as None, maybe there should not be anything written out. This is a purely cosmetic issue, but I think it looks wierd.

This has been discussed before, see #48. I'm sure there are other related issues as well.
Not printing something, i.e. '', would make output much more difficult to parse using AWK or whatever else you might do from the command line since you would essentially have variable number of columns. You can't rely on the width of the columns staying the same either as they are variable based on the width of your data.
If this is just about changing 'None' to something else, what would you then suggest?

I'm actually going to close this one. If you feel you have a suggestion for something better than 'None', feel free to reopen.


Length of annotations cannot be changed by cursor

Originally reported by: Thomas Schraml (Bitbucket: TSchraml, GitHub: TSchraml)

When I add one or two annotations at the same point of the video, I can easily adjust the length of one annotation by cursor at the right end of the annotation.  It is only possible to edit the length of the first two annotations by cursor.
Another problem is that after changing the zoom level it is not possible to adjust the length of any annotation by cursor. The cursor doesn't change to adjust the length of the annotation. It is only possible to move the annotation to another point of the video. After moving the annotation, it is strangely possible to adjust the length. If I change the zoom level again, it is again impossible to adjust the length of an annotation by cursor. Only if I move the annotation at this zoom level again, I am able to adjust the length.
These problems occur with Firefox and Chrome on Windows 10 and MacOS 10.13.

Bitbucket: https://bitbucket.org/opencast-community/annotation-tool/issue/69

I can no longer reproduce this bug.


Bug/2.7.x/8435 openbsd package provider broken with remote packages

This takes #20, a fix for the OpenBSD provider, and adds a bunch of tests so that we can have some basic confidence about the provider.

This whitespace clean-up (9558d45) actually breaks things, causing the package provider to try to run: /usr/sbin/pkg_info-a instead of /usr/sbin/pkg_info -a
A couple of notes from my testing on OpenBSD 5.0:

Specifying a bad source does not fail or indicate any error, e.g. source => "ftp://ftp.openbsd.org/pub/OpenBSD/5.0/"
Accidentally omitting the trailing slash causes a confusing error, likely the fault of pkg_add(1). That is to say, the execution fails without any proper warning message

If 9558d45 is reverted, then I'd say this change should be integrated.

@warms0x - thanks so much for testing that!  You are spot on: that works in some-but-not-all cases, because our API is a bit precious.  Good catch.  I will update that and get this resubmitted shortly.

I find this process a bit confusing, the ticket (8435) is referenced, but the original commit also references issue #20 on GitHub?
Is there a good document covering some of this? Such that if I were to submit additional patches to make OpenBSD and Puppet cooperate, I could manage it? (Say, after I fix all these tests from breaking on OpenBSD)

Understood. Let me know if there is anything additional that I could help with to get this change merged appropriately

@warms0x - well, you could test the code again, which would be nice.  Otherwise that should be ready to go as soon as I get internal review of it done. :)

I'll have some test results for you tomorrow (your time), I didn't notice at first that there was an additional commit here (thanks GitHub).

Tested the newest cut of your bugfix branch and things look fine, ensure => present; and ensure => absent; both worked properly.


Builds on macOS

This PR allows Sassy to build and run on macOS, but sadly it crashes at runtime in the JIT-compiled eval_all() during audio callback.
I suspect this is the same issue mentioned in #1 on Linux.
Any clues about how to diagnose the problem?
Note that the macOS build settings in the Makefile are slightly odd given that I'm building on an M1 arm64 machine, but asking the compiler to build an x86_64 executable to run under Rosetta 2. In theory this should work, even with JIT code, as documented here: https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment but if someone has an Intel Mac to test on, it would be good to verify that this is/isn't related to the crash.

Here's a screenshot of the macOS build running.

Note that formulas with arithmetic work 2*99+17+(15*9) but if you try to call any function time() or mention another cell a4 then it crashes inside the audio callback, inside eval_all

Curiously the debugger seems to have lost its place within eval_all which might imply some stack corruption?
Thread 7 Crashed:: SDLAudioP2
0   <translation info unavailable>	       0x100c084ec ???
1   sassy                         	       0x100449a62 eval_all() + 162
2   sassy                         	       0x100449a62 eval_all() + 162
3   sassy                         	       0x100449caf sdl2_audiomixer(void*, unsigned char*, int) + 415
4   libSDL2-2.0.0.dylib           	       0x10929884f SDL_RunAudio + 208
5   libSDL2-2.0.0.dylib           	       0x1092ee767 SDL_RunThread + 53
6   libSDL2-2.0.0.dylib           	       0x109356385 RunThread + 9
7   libsystem_pthread.dylib       	    0x7ff8124bb259 _pthread_start + 125
8   libsystem_pthread.dylib       	    0x7ff8124b6c7b thread_start + 15


Client issues to generate jar file

Fix client issues to generate jar file. Also explain in the README the steps exactly.

Sorry could you remind me what the issues exactly were?

Sorry could you remind me what the issues exactly were?

@HendGedawy Can you check if this issue still exists and elaborate on this issue?

No it is fine now
On Fri, Nov 25, 2022, 21:21 Thang Bui @.***> wrote:

Sorry could you remind me what the issues exactly were?
@HendGedawy https://github.com/HendGedawy Can you check if this issue
still exists and elaborate on this issue?
—
Reply to this email directly, view it on GitHub
https://github.com/bnnthang/RealFL/issues/14#issuecomment-1327768843,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACUJMAVPXIWBFU7LSJFWFJDWKD7RPANCNFSM6AAAAAARGIHCSM
.
You are receiving this because you were mentioned.Message ID:
@.***>


fix: [fixes #2] Large file transfers in firefox

This PR incorporates https://github.com/jimmywarting/StreamSaver.js/pull/305 to enable larger file transfers in Firefox.

No code change is necessary to enable large file transfers in Firefox now that https://github.com/jimmywarting/StreamSaver.js/pull/305 is merged.


User restrictions

From an admin perspective it may sometimes be useful to support restrictions on user resource usage. A few examples:

Maximum number of workers per user
Maximum resources per user
Maximum number of clusters per user

We should probably provide a common metrics, but will likely also need a generic hook for operations an admin may want to restrict. This may look like:
def can_start_cluster(user):
    """Check if a user can start a cluster.

    Returns
    -------
    allowed : bool
        True if the user can start a cluster, False otherwise
    msg : str or None
        A user-facing message explaining why the operation is currently forbidden.
    """
    pass

def can_start_worker(user, cluster):
    """Check if a user can start a worker.

    Returns
    -------
    allowed : bool
        True if the user can start a worker, False otherwise
    msg : str or None
        A user-facing message explaining why the operation is currently forbidden.
    """
    pass

cc @jhamman, this is related to our discussion earlier.

I'm looking at adding this. A few limits we may want to support out of the box:

Max clusters per user
Max {workers, cores, memory} per cluster
Max memory/cores per user?

The last one I'm not sure if it's worth supporting. I can think of two ways a restriction model could be implemented:

Limits with clusters as the fundamental unit, and then limits internal to each cluster (workers, memory, cores). This is easy to reason about (I can have up to 5 clusters, each with up to 10 cores), and easy to implement. Downside is that what admins usually care about is resource usage, not the abstractions built on top. You can still restrict users to maximum limits, but you'd also dictate how they'd have to break that up (e.g. a limit of 5 clusters of 10 cores each wouldn't allow 1 cluster with 100 cores). This would expose:

Max clusters per user
Max workers per cluster
Max memory per cluster
Max cores per cluster

Limits with resources (memory, cores) as the fundamental unit. This is a bit more complicated to reason about and implement, but gets more at what admins usually care about. This would expose:

Max memory per user
Max cores per user
Max clusters per user
Max workers per cluster?
Max memory per cluster?
Max cores per cluster?

I'm also unsure if a flat restriction model is enough, or if we'd want limits specific to each user (e.g. user alice gets more resources than user ben).

Also, if a user hits a resource limit, what should happen? A few scenarios:

User tries to create a new cluster, but the restrictions prevent this. I think this should error. The other option would be to hang until available, but this would be much trickier to implement.

User calls cluster.scale(50), but this exceeds some resource/worker restriction. 3 options:

We could error informatively. This may make sense if the users code relies on that many workers, and we know we'd never get them to them.
We could warn, and scale to the maximum allowed size. Downside is in automated settings warnings aren't always seen, and could instead lead to a slower script or a failure at a later point.
If the limit could potentially resolve (e.g. they request 100 cores, have a user max of 120 cores, but 50 of them are currently on another cluster that eventually scales down), we could put these workers in pending, and schedule them later when resources are available. This would be much more complicated to implement, and moves some of what the backing resource-manager (e.g. YARN) should be doing into dask-gateway itself. Still, some backends don't have resource queues and this could be useful in certain contexts.

Right now I'm leaning towards erroring when trying to start a cluster would exceed a restriction, and either erroring or warning when trying to exceed some worker restrictions.

See also https://github.com/dask/distributed/issues/3054

Enterprise orgs typically think in groups of users, not individual users. For example, we've regularly heard from our customers that they want to be able to restrict the different resource profiles on Anaconda Enterprise to different groups citing that they'd want their Data Science team to have access to the really big resource profiles while their less sophisticated Business Intelligence folks wouldn't need, for example, a 4GPU resource profile. Not sure how that impacts what you're looking to do here.

This is a massive improvement in the usefulness of Gateway, wholly in favour! I can perhaps help.
I agree with erring for situation 1. . For 2. it is indeed tricky, I think I favour an error still ("please try again later"!), but obviously autoscaling needs to know that scaling can fail.
To @ericdill 's comment: can_start_worker, etc., would be pluggable, and the org can implement how they make this decision themselves?

Enterprise orgs typically think in groups of users, not individual users.

We don't currently support groups in our user model, although this is something we could do. I agree that group-level restriction sets would be what we'd want if we supported anything other than uniform restrictions.

User calls cluster.scale(50), but this exceeds some resource/worker restriction. 3 options:

I like option 2. When libraries/frameworks/apps do what you suggest in option 1, it always feels a bit pedantic. "Look, I need lots of workers why are you making me specify that I can only ask for 49 instead of 50" can be a really annoying UX

I agree that group-level restriction sets would be what we'd want if we supported anything other than uniform restrictions.

As long we don't engineer ourselves into a corner with respect to this at some point in the future, I'd suggest punting on it for now

ohh i think i misunderstood this whole issue. You're talking about having one restriction rule (for each resource category) for all users

I have WIP of this in #93.


Add the ability to connect Portainer to an external database

Requirements
Add the ability to connect Portainer to an external database to provide an HA deployment (the database technology will need to support HA deployments).
This needs to be provided as an alternative way to deploy Portainer as we want to keep the simplicity as the default option.
The database configuration must be supported via CLI (flags or configuration file to be considered).
Considerations
As we've discussed internally, the key/value model is now limiting us and we might decide to switch to another database technology as such we might need to find an alternative to the current technology powering a simple deployment (boltdb).
Interesting tools to consider/investigate:

https://dqlite.io/
https://github.com/rqlite/rqlite

This would also help if you keep portainer's data dir on a NAS share, sine sqllite doesn't like staying on a network fs.
Any news, btw? I've found this issue because of that ⬆


Internal server error when expecting integer number of epochs but receiving a float instead (3.2 dev)

Steps to reproduce the bug:
New Image Classification Model -> Previous Networks -> select some previous network and pretrained model -> click Customize
If you select a previous model with fractional epoch naming (e.g. Epoch#2.75) and click 'Customize', there is an error:
500: INTERNAL SERVER ERROR
ValueError
invalid literal for int() with base 10: '2.75'
If the selected epoch naming is not fractional (e.g. Epoch#3) then there is no interface error after clicking Customize.

Thanks for the excellent bug report! Fix is at #571.


Encapsulate the second stage into RoI heads

Hi all,
After a discussion with @hellock and @yhcao6 , we decide to encapsulate box and mask heads into RoI head to reduce the codebase's complexity. This refactoring has several advantages as follows.

The refactoring reduces most of the duplicate code in the detectors. For example, when adding new methods like Double head R-CNN and Cascade R-CNN, the previous implementation always need to create a new file in the detectors directory and copy the same code for RPN. Since most of these modifications are about the RCNN process, it seems to be better to encapsulate the second stage (including box head, mask head, mask scoring head, and potentially key point head, etc.) into the RoI heads to reduce the duplicate codes and logics.

The refactoring only creates box assigners and samplers once in RoI heads. The previous implementation creates assigner and sampler during each iteration in the training process, this is unnecessary since they are the same during the training process. Now, the assigner and sampler are created once as a sub-module of RoI heads to reduce the unnecessary overhead.

The refactoring will ease the processes when code refactoring and adding new methods as it reduces duplicate code and logic and seems to be more conceptually simple than before.

Notice: The structure of the detectors are changed, as all configs of two-stage detectors are changed. Thus, it might have compatibility issues with the previous model zoo. We will re-benchmark all the models in the configs when all the refactorings are finished, which will be released in early February.

In commit 3486716, the configs are ensured to have the same key-values as the previous commit 77d073a. The new configs systems also fix some bugs in old commits by reducing duplicated codes.


Reset camera when using tool

The behavior of the camera reset is different when using a tool; the image is not centered in the same way.
This is without activating a tool:

This is with a tool activated:

When digging more into it, it seems like the focal point of the camera is different when using a tool. Do you know why this is the case? How can this be fixed? Thanks!

I can't seem to reproduce this. I'm opening an image, zooming in and panning, then turning on paint, and then resetting the camera (both via the button and the key "R"), and it resets for me. Is there some different sequence of actions that result in this undesired behavior?

The problem is not that the camera isn't reset, but that when resetting it centers the image differently when the tool is activated compared to when it's not. I zoomed in in order to make this effect more apparent than when the image is totally zoomed out. Here are the steps:

Zoom to have the image fit the screen.
Activate the paint tool.
Click on the reset camera button.
Zoom to have the image fit the screen. You should see that the image is translated compared to step 1.

Even without zooming in, if you take the "Tooth" sample and reset the camera with and without the paintbrush activated, you will see the image moving. In this case, the translation is very small, while for my image it is much more noticeable:

:tada: This issue has been resolved in version 4.11.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


added evaluation statement for shouldNotRun-call

Added the Mockery::close() call in the documentation (mock-and-test), when using shouldNotReceive. Otherwise it will not be evaluated.

Hi there, isn't this done automatically by the framework in the teardown method? I don't recall needing to do this when mocking this way.

I looked it up. You are totally right, it is there and is called. Then I have to check my code, probably there is another bug.
Thank you for your quick response.


Issue with trailing slash on the _posts path

- Do you want to request a feature or report a bug?
Bug Report
- What is the current behavior?
Content Manager Admin Wont Open Posts is the Post Path has A trailing Slash
- If the current behavior is a bug, please provide the steps to reproduce.
Set Post Path to '_posts/' in the config.yml file and open the posts/collections from the admin UI
- What is the expected behavior?
When clicked on an error message gets displayed "file not found"
- Please mention your node.js, and operating system version.

Also see https://gitter.im/netlify/NetlifyCMS?at=59bd2210177fb9fe7eca9bf8

Here is the relevant code: https://github.com/netlify/netlify-cms/blob/caa5c69522e5446e8677775d7ea25fdbb0e2b36e/src/reducers/collections.js#L44-L46 The problem is that the folder and a slash is added directly to the string without checking whether the folder name already contains a trailing slash.

We should just be able to do:
collection.get('folder').trim().replace(/\/$/, '')


Mod shows missing fabric-api

Minecraft version
1.20.1
Describe the bug
After I installed the mod and the fabric mods, The game shows that its missing fabric-api, even that I installed the forgified farbic-api its still not working, I've tried to put normal fabric-api, it still doenst work. Im using Particualr mod (the one on modrinth). (first time i open i use the forgified farbic api, second time i use normal fabric api)
Steps to reproduce
1.Installed the connector ,forgified fabric-api and fabric mods
2.open the game
3.bug triggered
...
https://github.com/user-attachments/assets/f3ce283f-9ea3-4ddd-bae8-55813cd3f5ec
Logs
No response
Additional context
No response
### Tasks

### Tasks

Buy Minecraft

Custom server APIs (such as Mohist, Magma, Arclight) are not supported. This also applies to launchers for mobile platforms (Pojav, FoldCraft) and pirated launchers.
Such platforms provide unpredictable environments in which mods might not function as expected, and therefore we can't provide support for them. Ensuring mod compatibility is the platform's duty, just like Connector tries its best to achieve parity when running Fabric mods on Forge.
This is explained in our FAQ.


Characters disappearing and changing position upon input on Android stock browser Chromium (Samsung Mobile)

Problem:
See video of the issue.

However on the Samsung Galaxy S2 Stock Browser it works fine.
See JSFiddle
Browser: Stock Browser "Internet" Chromium (latest update)
App: Internet 1.5.28 1528
Version: Chrome/28.0.1500.94
Android: 4.4.2 GT-I9301I

I think this will be very similar to #416.

My users also reporting such a behaviour. The Input completely disapears while my tests.
I just connected with USB remote debugger to check whats going wrong where inputs from PC keyboard works as expected. So my guess is that input behavior differs from virtual mobile keyboard from the PC one.
Any fast help is highly appreciated because I am using this plugin in production on a high traffic page.
I am using jquery.inputmask version 3.3.1.
My device info:
Google Inc.
Copyright 2016 Google Inc. Alle Rechte vorbehalten.
Google Chrome	50.0.2661.89 (Offizieller Build) (32-Bit)
Ãœberarbeitung	78c36d241d8eebad599e33e13fe50f05393635ab-refs/branch-heads/2661@{#619}
Betriebssystem	Android 5.0.2; HTC One Build/LRX22G
Blink	537.36 (@78c36d241d8eebad599e33e13fe50f05393635ab)
JavaScript	V8 <IP_ADDRESS>
User-Agent	Mozilla/5.0 (Linux; Android 5.0.2; HTC One Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.89 Mobile Safari/537.36
Befehlszeile	--use-mobile-user-agent --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --use-mobile-user-agent --enable-begin-frame-scheduling --enable-pinch --enable-overlay-scrollbar --validate-input-event-stream --disable-gpu-process-crash-limit --main-frame-resizes-are-orientation-changes --disable-composited-antialiasing --ui-prioritize-in-gpu-process --profiler-timing=0 --prerender-from-omnibox=enabled --enable-dom-distiller --flag-switches-begin --flag-switches-end --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5 --top-controls-show-threshold=0.5 --top-controls-hide-threshold=0.5
AusfÃ¼hrbarer Pfad	Datei oder Verzeichnis nicht vorhanden
Profilpfad	/data/data/com.android.chrome/app_chrome/Default
Build-ID	83b74c4c-a412-4c86-9c4c-9de3addf1634

@s-a ,
On most mobile devices, all input is detected throught the inputFallBackEvent as the other events are not triggered (from the android keyboard) and also to handle the input suggestions.
Send me the mask used and an input example where it goes wrong.  Usefull is also which data gets to the inputevent and in which sequence.

Thanks for the fast reply.
I have tried to handle inputFallBackEvent like follows, but it does not trigger.  Have I instelled it correctly?
On my device every input goes to nirvana.
datamask : "**********************"

  Inputmask.extendDefinitions({
  	'*': {
  		casing: "upper",
  		placeholder: " "
  	},
  	'9': {
  		placeholder: " "
  	}
  });

// ...
// document ready
	  $(".masked-input").each(function(){
	  	var mask = $(this).data("mask");
	  	var im = new Inputmask(mask, {
	  	    inputFallBackEvent: function () {
	  	        console.log(arguments);
	  	    }
	  	});
	  	im.mask(this);
	  });

I successfuly hooked into
	  	    onKeyValidation: function () {
	  	        console.log(arguments);
	  	    }

here there goes nothing to console if I input values from mobile device.

@s-a ,
Nono, it's not an event but the eventhandler used inside the inputmask.js(   bound to the inputevent.
So basically see what happens inside tha handler.

I think it is reproducable at http://robinherbots.github.io/jquery.inputmask/ #demo #ipadress-example but irregular.
The If condition here https://github.com/RobinHerbots/jquery.inputmask/blob/b5841950c5697314c61b2b20566f9d20d8fb1250/js/inputmask.js#L2417 return permanent false if input comes from virtual keyboard on smartphone.

While "F" comes from PC Keyboard

@s-a ,
Can you reproduce it on browserstack?

what do you mean browserstack?

https://www.browserstack.com

there it works even from smart device. Sorry for the noise it seems it is something related to my own code .

sorry i have no browserstack account . tried at jsfiddle.
just commented out my custom eventhandlers without success. could you see something suspicious? I missed to describe that my controls are created at runtime with handlebars.js

in inputFallBackEvent I wonder why is e.which is undefined isnt it the property holding the pressed key value?

@s-a ,
The inputfallback acts on the input event.
Can you send me your jsfiddle

https://jsfiddle.net/00sa/u9v761cg/2/
A friend reportet it works on his device. weird...

@s-a , @rzr999 ,
It this still an issue when using version  4.x beta?

Not anymore involved to the project now. Cannot say something about new version. Sorry.


Add missing language tags to resources

Add missing language tags to resources, required by existing datasets on GitHub.

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Feature request: Basic AND/OR support for tags filtering.

Hello,
Question about the roadmap: Are there any plans for fancier tags filtering with basic AND/OR support when accessing memory, in order to scope content?
Example:
A) You have a hierarchial structure: an organization, with departments and teams in each department. From there, you want to scope to which documents each part of the organization has access to (somehow manage some basic visibility rules):
1) The Company security guidelines are stored at the Organization level, accessible to everyone.
2) The IT department internal procedures documents are accessible only to members of the department.
3) The Security Team of the IT department is working on a draft document only accessible inside their team.
In that example, when accessing memory, a user should have access to its hierarchical parent.
With the current Tag approach it would be difficult to accomplish considering that all Tags are filtered as ANDs.
Now, assuming that we support basic hierarchial AND/OR  (2-3 levels), we could go a long way in supporting new scenarios.
Searching inside the organization only: Organization=A AND Department=None AND Team=None
Searching inside the organization or department: (Organization=A AND Department=None AND Team=None) OR (Organization=A AND Department=IT AND Team=None)
And so on...
Thanks!

hi @SimonLuckenuik
OR logic is already supported by passing a list of filters. The rules inside each filter are composed with AND, and multiple filters are composed with OR.
Example:
var filter1 = MemoryFilters.ByTag("group", "g1").ByTag("user", "u1")

var filter2 = MemoryFilters.ByTag("group", "g1").ByTag("user", "u2")

var filter3 = MemoryFilters.ByTag("group", "g2").ByTag("user", "u3")

var answer = answer = await memory.AskAsync(
    question,
    filters: new List<MemoryFilter> { filter1, filter2, filter3 });

Is interpreted as: WHERE filter1 OR filter2 OR filter3
so
WHERE
        (tags contains "group:g1" and tags contains "user:u1")
     OR (tags contains "group:g1" and tags contains "user:u2")
     OR (tags contains "group:g2" and tags contains "user:u3")

Excellent, thanks for the detailed answer and quick response!
Would probably be worth documenting it or reviewing the property naming to reflect that behavior. My point of contact with the Kernel Memory was through the MemoryPlugin, it seems that the "filters" is missing in the MemoryPlugin only "filter" is used, preventing that AND/OR logic.

good point about the plugin, we should update that. In terms of documentation, we currently have this https://microsoft.github.io/kernel-memory/security/filters - I guess we could decouple the topic from "security"


Adds a trace note about missing using typesVersion because it's not in the package subtree

We have a check that a module should be included in the module subtree when applying typesVersion.
I was debugging why this package didn't have typesVersions applying, and now --traceResolution would give a message that it failed:
{
  "name": "@reduxjs/toolkit-query-react",
  "version": "1.0.0",
  "description": "",
  "main": "../../dist/query/react/index.js",
  "module": "../../dist/query/react/rtk-query-react.esm.js",
  "unpkg": "../../dist/query/react/rtk-query-react.umd.min.js",
  "license": "MIT",
  "types": "./rtk-query-react.d.ts",
  "typesVersions": {
    ">=4.1": {
      "rtk-query-react.d.ts": [
        "../../dist/query/react/index.d.ts"
      ]
    },
    "<4.1": {
      "rtk-query-react.d.ts": [
        "../../dist/query/react/indexTs40.d.ts"
      ]
    }
  }
}

It's been a year, so I'm going to close this, but we can re-open if we want.


[doc] Automation for creating documentation for a new release and versioning of release docu

User story
When releasing a new version of Keptn, the documentation is also released based on the same release tag. As a user, I can switch between the release versions, while the latest stable version is shown by default.
Future situation: As we are going to change the versioning of releases by incrementing the Minor version (Major.Minor.Patch), the current documentation approach does not scale. We would have duplicate the docu for each new release.
Details

Using tagging / branching to create release documentation in https://github.com/keptn/keptn.github.io
On the page, I can switch between the release docu. For example, see istio.io:

When switching to an older release, the release version is reflected in the URL: https://istio.io/v1.9/
Consequently, we should not show the documentation for previous releases, but rather the release docu the user has selected:

Advantage

By applying this approach, it becomes obsolete to duplicate the docu for each release in: https://github.com/keptn/keptn.github.io/tree/master/content/docs

Related to this I do have two more suggestions:

Include a search in the documentation https://github.com/keptn/keptn.github.io/issues/693
Include a "Improve this page" or "Edit on Github" button on each page https://github.com/keptn/keptn.github.io/issues/859

I would suggest to look into a documentation specific website generator like ReadTheDocs which has things like support for intelligent version switching and text search already included.
It should not be that hard to switch since ReadTheDocs is also based on Markdown files and our content wouldn't need to change much.

We need real reference pages for commands and files, with accompanying guides that contain introductory information about each entity.  These should not be part of release-specific source but should instead be written to cover all releases, with a "Differences between versions" on each page to chronicle changes to the interface over time.

We need a separate, comprehensive Architectural section rather than the current structure, which has an Architecture section under “Concepts”.  This has general diagrams for Keptn with links to other architectural materials included in other sections.  Need to investigate whether this is the best approach or whether we should have a separate “Architecture” section that consolidates all the architectural  information for all components and operations.  Include prose that discusses how various operations are actually implemented to supplement the drawings and, as appropriate, note differences between versions.

Should link of possibly embed appropriate videos in the documentation as appropriate.


若有急事，烦请电联或发送短信。祝您工作顺利，生活愉快！

邮件已成功收到啦～胡茹茹


Update the release guide after release 0.3

One of the notable information is what crates we want to publish.
A fundamental question of releasing is what to release. I think it currently includes:

The source code.
Public crates on crates.io. engula-client, engula-api, ...
Convenient binaries to run services.

There are only three public crates now: engula, engula-apis, and engula-client. The engula crate provides the binary to run services. So we simply need to publish those three crates for now.


Ineffective methodology

Sorry to say, but this will not work as you intend. The generative art models begin with noise and apply different pixels, so they will not recreate your watermark. The Invisible Watermark project you used to make this NoAI watermark project is indeed great, but they say in the readme:

"The algorithm cannot guarantee to decode the original watermarks 100% accurately even though we don't apply any attack.
Known defects: Test shows all algorithms do not perform well for web page screenshots or posters with homogenous background color".

Unfortunately the way invisible watermarks work at the pixel level and the process generative art models are taught with will make it ineffective.  Your initiative is awesome though, and I truly hope something similar will catch on and proliferate through the art community.

It could be useful to upload your code/implementation of invisible watermark so the open source community could perhaps find a way to utilize it to protect art!!

we did not use that watermark library that you linked.

It is in the requirements, in the zip file you link... as well as open cv..

I'm going to check, but as fas as I know it was different than the one you showed

https://github.com/ShieldMnt/invisible-watermark/releases/tag/0.1.5

ah i see what you mean. we are also working on some other tools in parallel with this one. There is another watermark app in progress by someone else. Our community is strong, and will find a way to solve this issue against bots :)


railties version conflict with newest solidus (2.10.1) version

I just set up a new solidus instance from scratch (as per the README) and added solidus_i18n (and kaminari + railsi18n) dependencies.
Afterwards bundle update throws following error:
Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    rails (~> 6.0.2, >= <IP_ADDRESS>) was resolved to 6.0.3.rc1, which depends on
      railties (= 6.0.3.rc1)

    rails-i18n (~> 5.1) was resolved to 5.1.3, which depends on
      railties (< 6, >= 5.0)

Modifying the dependency of rails_i18n to ~> 6.0 solved the issue, so it should just be a README update.

Should I draft a PR for the README?!

Since this one is still open, please refer to the rails-i18n page for any new version - it might cause misleading according to the rails in use. Update your rails-i18n version accordingly.


custom color on one path element inside svg

My question is related to https://github.com/smooth-code/svgr/issues/308 but more than that. Here's my problem statement.
It's a Typescript  project and therefore the typescript template from https://www.smooth-code.com/open-source/svgr/docs/typescript/
I generated the React SVG components via svgr and output is
import React, { SVGProps } from "react";

const SvgInfo = (props: SVGProps<SVGSVGElement>) => (
	<svg width={24} height={24} {...props}>
		<path fill="none" d="M0 0h24v24H0V0z" />
		<path d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" />
	</svg>
);

export default SvgInfo;

Now, I have similar icons of exact shape width, height and viewBox.  I'm using material icons.
What I want is support for colour on the second path element. If you notice, fill property doesn't even exist on it else I could have at least thought of using --replace-attr-values "#063855=currentColor". Not quite what could have worked because another path element has a fill too which essentially fills the background area too.
So how can I have a resulting output of
 <svg width={24} height={24} {...props}>
    <path fill="none" d="M0 0h24v24H0V0z" />
    <path fill="currentColor" d="M11 7h2v2h-2zm0 4h2v6h-2zm1-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z" />
</svg>

fill="currentColour"  can be achieved by some <path { ...innerProps}  . Question is how?

Never mind.
What I was missing is that SVG element itself could have fill attribute. Now, this works for me because fill="none" on first path element which overrides and hence fill applies to second element only.


Refactor main() into site specific and common code.

The actual main() entry point is reduced to some basic setup code that
can be substituted out as a module when more complex executable setup
is required with certain site's deployments.  Left in main() is
SignalAction initialization, Options parsing, and HotRestarter
allocation.  Everything else is moved into main_common().
A future commit will further shift the hot restart related code into
the site-specific main() so deployments not using hot restart do not
have to depend on the code.
This is a purely mechanical refactoring, no logic is changed.

@htuch

Yes, I'll look into this today.

+1


Added guidance on adding support for the full-width column to web parts

Category

[ ] Content fix
[x] New article
Related issues: fixes #X, partially #Y, mentioned in #Z

What's in this Pull Request?
Added guidance on adding support for the full-width column to web parts

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/images/fullwidthcolumn-webpart-add.png
:white_check_mark:Succeeded

docs/spfx/web-parts/basics/use-web-parts-full-width-column.md
:white_check_mark:Succeeded

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

Great to get this also out, good short setup - thx.


Windows: when I close SteamVR, my script closes too

I'm using Windows 10 1903 with Python 3.74 and SteamVR beta 1.8.12, pyopenvr 1.7.1501.
From my understanding of this issue:
#https://github.com/ValveSoftware/openvr/issues/878
And the referenced on the OBS input plugin:
#https://github.com/baffler/OBS-OpenVR-Input-Plugin/issues/3
There should be a way to keep running the process if SteamVR is closed.
Right now I couldn't find how.
I'd like my script to query some info from OpenVR about the Basestations and the pose.
Not matter if the acknowledgeQuit_Exiting() is called on VREvent_Quit, once openvr.shutdown() is called the script is killed.
If I remove the shutdown (shutdown = False) SteamVR hangs in "Exiting" and the script goes on till about 30 seconds till is killed and SteamVR closes.
Am I missing something on how to keep it on?
Any help would be appreciated, thanks.
Also I'm wondering how to properly initialize and, eventually if not killed, re-initalize with the init function or in any other way.
In the script attached I just try for the init function and this causes a memory leak.
It's even more obvious in the script with testreinit = True.
Every time an init is issued some memory between 100KB and 300KB is allocated and never released.
Setting to None the vr_system variable doesn't help and it's not recovered either by the garbage collector.
It's probably a bigger issue if called in a loop, probably shouldn't be done for starting.
But in general would be nice to know if it can be freed somehow, even if allocated once.
Also while checking SteamVR opening and closing I noticed very often there's no event or pose updates, sometimes the connection is established but the Quit event is never received.
I wonder if I'm not using it how it should be.
testloop.txt

Not matter if the acknowledgeQuit_Exiting() is called on VREvent_Quit, once openvr.shutdown() is called the script is killed.

Acknowledging VREvent_Quit by calling shutdown is a correct way to "detach" from SteamVR server (https://github.com/ValveSoftware/openvr/issues/1061).
The problem with your code is that after it calls shutdown, it still uses vr_system interface, in particular in:
            vr_system.pollNextEvent(event)

where, not only vr_system is no longer valid, but an attempt to call it, ends up with an invalid memory access, because the IVRSystem interface, which backs up vr_system was unallocated when shutdown freed vrclient_x64.dll.
So basically your program (Python interpreter) dies from an access violation error.
The fix is simple, once you call shutdown, you cannot use any interface, until you openvr.init it again (which will also load vrclient_x64.dll again).
Just to prove the idea I patched your testloop with this:
$ diff -ru testloop.py testloop_fix.py
--- testloop.py 2019-10-15 00:11:45.296730100 +0200
+++ testloop_fix.py     2019-10-15 00:08:40.655332500 +0200
@@ -39,6 +39,7 @@
                 if shutdown:
                     openvr.shutdown()
                     print("Shutdown sent")
+                    raise "OpenVR shutdown"
             elif event.eventType == openvr.VREvent_QuitAcknowledged:
                 print("ACK received eventType={0}".format(event.eventType))
                 print("eventAgeSeconds={0}".format(event.eventAgeSeconds))

and it works as expected (i.e. attaching to SteamVR when it starts, and dropping the connection, when it is terminated).

@mann1x, please create separate issues for the memory leak and/or the events.

@risa2000 thanks a lot for your help!
I opened another issue for the memory issue with init:
https://github.com/cmbruns/pyopenvr/issues/71


[k3s] Should download charts first when building from source

[k3s] Should download charts first when building from source (local build), otherwise the chartsTraefik tgz will not be compiled into the k3s binary.
xref: https://github.com/rancher/k3s/pull/729#issuecomment-521501318

lgtm


Revisit how to implement Create MODEL in MlflowCatalog

Running CREATE MODEL foo USING ... with MlflowCatalog should achieve two objectives:

It makes a model named foo immediately usable in the Spark SQL session, via ML_Predict,
It should create a valid registered model in mlflow, that can be used in other SparkSession, or even other envionments, like torch training and inference.

one other thing that's missing here is what happens if we want to use a previous version of an existing model in the mlflow registry. In that case we would NOT want a new registered model to be created in mlflow right?

one other thing that's missing here is what happens if we want to use a previous version of an existing model in the mlflow registry. In that case we would NOT want a new registered model to be created in mlflow right?

I think this should create a new version of the same model?
So if mlflow supports the following python code:
model = mlflow.load_model(name)
for epoch in range(...):
    # train model
    mlflow.log_model(model, name)

I think we should support the same semantics in CREATE MODEL statement as well.


WIP: Upgrader tasks/platform strategy

The upgrade logic between the different platforms has some high level differences that need to be accounted for:

Creation of directories with the correct ACLs

On Mac, the directories will be created with the expected ACLs, and we will not need to re-acl the directories.

There are other ways to handle the platform differences, but including:

performing the re-ACLing of directories on non-windows platforms. We could re-use more of the top level logic, but then we would be doing extra work with ACLs that is not needed.

Do no re-ACL on non-windows platforms. I did not want to cause confusion with the methods not doing what they advertise (especially around ACLs), in case someone misses this subtlety in the future. This would be hard from a maintainability standpoint...

Whether the Upgrader is responsible for remounting or not

On Windows, the upgrader itself is responsible for re-mounting after upgrade, while on Mac, the GVFS.Service will auto remount when the service starts up.

There is still some further work I need to do here to get this into shape, but I wanted to put this up for initial feedback on the general direction.

Thanks @derrickstolee for the review!

This means having an abstract base class with an implementation for each platform.

I think this makes sense as a goal. The problem I ran into is that we have a bunch of existing tests that exercise the current concrete implementation. If we make the UpgradeOrchestrator class abstract, then these tests will need reaction work... Either a "Testable" UpgradeOrchestrator class to test the common logic (which is most of the class), moving the tests to follow the new concrete implementations, etc... I like the suggestion - so let me investigate it a bit further.

It would be nice to do some research into the Linux platform a bit here so we can figure out what can be combined into a POSIX platform class

Good idea! I think a lot (or at least some) of the logic that is in the Mac specific class can actually go in the POSIX layer instead (as you noted).


Change objectFit from cover to contain for product images and thumbnails

I used the nextjs starter and when I uploaded images that were not 1:1 aspect ratio, the preview and thumbnail looked bad because the middle part of the picture was zoomed in to fill in the image container. objectFit: "contain" fixes this issue by preserving the aspect ratio of the image if it is not sized as 1:1. Here is an example of how the result can look: https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit

@VariableVic Any thoughts?


Fix parser to allow for empty prefixes at the end of input

Codecov Report

Merging #116 (1914f3e) into master (b6b614f) will increase coverage by 0.14%.
The diff coverage is 100.00%.

@@             Coverage Diff              @@
##             master     #116      +/-   ##
============================================
+ Coverage     73.66%   73.81%   +0.14%
  Complexity      499      499
============================================
  Files            79       79
  Lines          1500     1497       -3
  Branches        179      176       -3
============================================
  Hits           1105     1105
  Misses          333      333
+ Partials         62       59       -3

Impacted Files
Coverage Δ

.../seedu/address/logic/parser/EditCommandParser.java
89.28% <ø> (+7.46%)
:arrow_up:

...c/main/java/seedu/address/logic/parser/Prefix.java
91.66% <ø> (ø)

.../seedu/address/logic/parser/AddressBookParser.java
88.23% <100.00%> (+0.73%)
:arrow_up:

Continue to review full report at Codecov.

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


Tokens generated stops working after client-id changed in example-app

I am currently trying to make a login service to my K8S cluster using the example-app
However after changing client-id using --client-id the tokens i get is invalid and i observe the following error in the apiserver.
E0920 13:29:37.066988       1 authentication.go:58] Unable to authenticate the request due to an error: [invalid bearer token, [invalid bearer token, [invalid bearer token, crypto/rsa: verification error, invalid bearer token, oidc: JWT claims invalid: invalid claims, 'aud' claim and 'client_id' do not match, aud=agi-login, client_id=example-app]]]

Even if i remove the old example-app entry from config, delete dex deployment & recreate it the error persists and it still mentions example-app.
If i add back example-app to the DEX config like the example below and run the example-app with client-id example-app it works again.
This leads me to think there might be some state in the cluster K8S database that is causing it.
as i don't know that much about the inner mechanics of DEX i'm kindly asking if someone knows what this might be due to?
Dex config
issuer: https://********/dex
storage:
  type: kubernetes
  config:
    inCluster: true
web:
  http: <IP_ADDRESS>:5556

connectors:
- type: ldap
  name: OpenLDAP
  id: ldap
  config:
    host: ********:10389

    # No TLS for this setup.
    insecureNoSSL: true

    userSearch:
      baseDN: ou=users,dc=********,dc=com
      filter: "(objectClass=inetOrgPerson)"
      username: mail
      # "DN" (case sensitive) is a special attribute name. It indicates that
      # this value should be taken from the entity's DN not an attribute on
      # the entity.
      idAttr: DN
      emailAttr: mail
      nameAttr: cn

    groupSearch:
      baseDN: ou=groups,dc=********,dc=com
      filter: "(&(objectClass=posixGroup)(cn=engineering))"

      # A user is a member of a group when their DN matches
      # the value of a "member" attribute on the group entity.
      userAttr: DN
      groupAttr: member

      # The group name should be the "cn" value.
      nameAttr: cn

staticClients:
- id: agi-login
  redirectURIs:
  - 'https://<IP_ADDRESS>:5556/callback'
  name: 'Cluster Login'
  secret: ********
- id: example-app
  redirectURIs:
  - 'https://<IP_ADDRESS>:5556/callback'
  name: 'example-app'
  secret: ********

Dex deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: dex
  name: dex
  namespace: kube-system
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: dex
    spec:
      serviceAccountName: dex
      containers:
      - image: quay.io/coreos/dex:v2.7.1
        name: dex
        command: ["/usr/local/bin/dex", "serve", "/etc/dex/cfg/config.yaml"]

        ports:
        - name: https
          containerPort: 5556

        volumeMounts:
        - name: config
          mountPath: /etc/dex/cfg
        env:
      volumes:
      - name: config
        configMap:
          name: dex
          items:
          - key: config.yaml
            path: config.yaml
---
apiVersion: v1
kind: Service
metadata:
  name: dex
  namespace: kube-system
spec:
  ports:
  - name: dex
    port: 5556
    protocol: TCP
    targetPort: 5556
  selector:
    app: dex
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: dex-ingress
  namespace: kube-system
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    ingress.kubernetes.io/ssl-redirect: 'true'
    ingress.kubernetes.io/use-port-in-redirects: 'true'
    kubernetes.io/ingress.class: haproxy
spec:
  tls:
  - hosts:
    - *********
    secretName: *********.tls
  rules:
  - host: *********
    http:
      paths:
      - path: /
        backend:
          serviceName: dex
          servicePort: 5556

However after changing client-id using --client-id the tokens i get is invalid and i observe the following error in the apiserver.

Your --client-id flag on the example app and --oidc-client-id flag on the Kubernetes API server must match identically. Can you confirm this is true?


Optimize CTA language

Refined the CTA language to improve user engagement and increase conversion rates. The goal is to better resonate with readers and encourage desired actions.

Hello @kattsky ,The changes Call To Action (CTA) language has been optimized for clarity and appeal. These changes aim to better communicate the value proposition and encourage action from the user.

Thank you @Sumit-tech-joshi for your feedback :-)


feat: use keyring to fetch signing key

Can you give some examples/instructions for using it to the README?

Closing and moving this work to a new PR.