*: Add initial support for upgrading an operator after installation

During reconciliation, the operator controller will attempt to generate a BundleDeployment under-the-hood that will manage the registry+v1 bundle that was selected for installation. In the case that this BundleDeployment already exists, the current implementation avoids updating that resource, or attempt to query the catalog(s) in the cluster to find whether a new registry+v1 bundle is available that meets the desired package name configuration.
That behavior was a short stop-gap to ensure the barebones framework was in place as continuously firing off gRPC registry requests per reconciliation attempt can be expensive over time. And this behavior is also amplified given the controller places a watch on the CatalogSource API, and that API is known to have some inconsistencies with it's state transitions. A notable limitation with this approach is that it opened the door for users to modify the underlying BundleDeployment given the reconciliation loop didn't have logic that compared the current and desired state of the generated resource.
These changes implement initial support for upgrading an operator after initial installation. The reconciliation loop has removed the safeguards in place that were in place to prevent unnecessary work, and now bundles are sourced every reconciliation. While the functionality is there, this approach has some clear drawbacks, and implementing a catalog cache should help smooth out the performance hit, while making the state transitions for the CatalogSource API more predictable.
With these changes, the controller now accurately compares the current and desired state of the generated BundleDeployment resource attached to the operator  resource being reconciled. When a user modifies this resource, the controller will revert those changes back to the desired state.
After an operator has been installed on the cluster and a new bundle version is available in the configured catalog, then the controller will attempt to get the highest semver bundle that meets the desired package name constraint. That highest semver bundle metadata will be propagated to the generated BundleDeployment, which will result in a pivot being performed by rukpak's core provisioners.

Note: there's some ambiguity and open questions in this domain around what's the desired behavior we're looking for long term.

While these changes add the ability to simply upgrade operators, there's some limitations in the current behavior:

The controller doesn't respect any upgrade graph semantics defined for the selected package.
There's no way to delineate between "this operator is failing at runtime" or an operator signaling "don't upgrade me right now, I'm in the middle of a migration" which influences our upgrade model.
Introduces the potential for implicitly downgrading/rolling back an operator version given there's no catalog cache, and a catalog could revert back to an older version of an operator.
Introduces the potential for non-deterministic behavior. In the case that an operator doesn't configure a spec.catalog configuration, then the current behavior is to source a bundle that meets the package name criteria from any catalogs available in the cluster. This opens the door for another catalog (i.e. the one that was selected during installation) to be updated with the highest semver bundle that matches the configured package name specified, and that package may defined different upgrade graph semantics than the originally chosen one.

A follow-up implementation may start to address the want/need for a catalog cache. This should help make the implementation a bit more robust, and help inform some of the open questions in this domain.

This is what the status looks like now when persisted on the cluster:
...
spec:
  package:
    name: prometheus-operator
status:
  activeBundleDeployment:
    name: prometheus-operator
  conditions:
  - lastTransitionTime: "2022-11-02T20:15:54Z"
    message: Successfully applied the prometheus-operator BundleDeployment resource
    reason: InstallSuccessful
    status: "True"
    type: Installed
  sourceInfo:
    name: magiccatalog
    namespace: default
    version: 0.2.0

This seems reasonable for a first pass, but something we should aim to re-evaluate over time.

Added a custom printer column for that sourceInfo integration:
$ k get operators.core.olm.io
NAME                  ACTIVE BUNDLEDEPLOYMENT   INSTALL STATE       INSTALLED VERSION   AGE
prometheus-operator   prometheus-operator       InstallSuccessful   0.2.0               47m

This was useful for local dev purposes, but I imagine it's would be useful for admins anyways.

I was also going to add an optional spec.profile field to the API surface that could be used to configure how the operator handles failure modes and non-deterministic situations. The only profiles here would be "BestEffort" and "Deterministic" and we'd be able to leverage this internally during the sourcing layer to handle situations where 1/3 catalogs are currently offline. Ended up moving those changes into it's own branch in the meantime.

List of open questions I had recorded locally too:
// Open Questions:
// 1. Once a catalog is initially selected, continue to use that catalog during upgrades?
// 2. Use a catalog cache that refreshes periodically with some eviction policy to
//    avoid firing gRPC registry requests every reconciliation loop. What does this cache
//    look like? How is it implemented?
// 3. How do failure modes work when sourcing catalog contents? Is it okay if a single
//    catalog fails to successfully list the bundles in the catalog when another catalog
//    could meet the desired configuration? Is this behavior something we'd need to surface
//    in the API?
// 4. Do we care about cross-channel upgrades right now? Do we care about catalog priority?
// 5. How do we best track the currently installed version, and the desired version?
// 6. When following upgrade graph semantics, do we need to give time for migrations to occur
//    or are we simply running through the path?
// 7. How do we effectively delineate between BundleDeployment runtime health/status checks, and an
//    operator being able to express "don't upgrade me right now"? How does this influence pivoting
//    behavior, and is there a way to implement this robustly without introducing new complexity?
// 8. What does a resolveset look like? Is it a single YAML stream of all the operators + dependencies
//    that need to exist on the cluster, or would it be a subset of [operator + it's dependencies] N
//    times? For the former, are there any scaling implications when using local storage like a ConfigMap?
//    Do we need to implement the storage layer in a more robust/scalable way?
// 9. We currently place a watch on the CatalogSource API, which is renown for having weird state transistions.
//    How does this influence a reconciliation model where we attempt to source a bundle to accommodate upgrade
//    situations given this is already a potentially expensive process, while ensuring we don't reconcile
//    transient catalog source events that could affect performance? Does the combination of a catalog cache
//    and a separate goroutine help smooth this issue out?
// 10. During upgrade paths where an operator resource doesn't specify a catalog configuration, what's the
//     desired behavior here? There's potential for multiple catalogs on the cluster to share the same desired
//     package name. After the initial installation, would the right behavior be ensuring that the same package
//     is being used to follow the defined upgrade graph semantics?
// 11. What happens when a catalog has been updated and reverted back to a previous catalog? In the case that
//     an operator has been installed at v0.3.0, and the new catalog only has a v0.1.0 bundle available in the
//     desired package name, the current implementation would roll back to that version. Is this behavior something
//     we have any desired of supporting? Note: this is where a catalog cache would be useful.


Loosen the dependency to psr/log from a specific version to sem ver

The version of "psr/log" requested was very specific (1.0.0) and does not allow to use newer patch-releases.
A new patch-release 1.0.1 was released that a few other packages depend on and phealng stops me from updating them.

Thx!

I'll tag a release once I'm at a real computer.

done


Linux headers are missing

apt search linux-headers-$(uname -r)
Sorting... Done
Full Text Search... Done
Without the headers, wireguard does not install properly:
ip link add wg0 type wireguard
RTNETLINK answers: Operation not supported

How are you installing wireguard? There are several methods listed on https://www.wireguard.com/install/.
If this is a issue with the system on AWS: the DEB packages don't work, you have to compile wireguard manually. I will actually provide an easy installer that will do that for you (very soon, in the next few days). If you are impatient, see https://www.wireguard.com/install/#compiling-from-source .
NOTE: If you run my system on AWS, you don't require the kernel source packages from repository, since you are on a custom kernel from kernel.org. To download the source and compile the latest kernel, you can:
kernel-update.sh

To just download the source for your current kernel, you can run as root:
cd /usr/src
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-$(uname -r).tar.xz
tar xJf linux-$(uname -r).tar.xz

Then you should be able to compile anything kernel-dependent.

Finally, wireguard is now included in versions 5.1.1 and above. To be able to compile other modules, kernel headers are also included.


expose the projection to make it reusable

maybe just as plot.scale("projection")? If the goal is to make it reusable, it doesn't matter if it's an opaque {stream}, and the code is ultra-simple. If we extend the scope and want to get the name back, it's much more difficult.

Exposing projection information would be very useful to Mosaic vgplot. We could then support brushing/filtering over explicitly projected data, at least initially for planar projections and those with separable lon -> x, lat -> y mappings (like unrotated mercator or equirectangular).
I have a working prototype of this locally, which extends Plot's projection.js like so:
return {
  width: dx,
  height: dy,
  offset: [marginLeft + insetLeft, marginTop + insetTop],
  translate: [tx, ty],
  scale: k,
  invert: projection.invert, // may be undefined
  stream: (s) => projection.stream(transform.stream(clip(s)))
};

One also needs to first define let k = 1 in the outer scope. I'm exporting dimension information (width, height, offset) to infer the equivalent of scale ranges and to aid setting the boundaries of the brushable region. I use the (translate, scale) data to create my own invert methods (including optimized 1D variants for planar projections). Alternatively, an end-to-end invert method that takes any affine transform into account would work fine.
The only other change is to modify plot.js to expose the projection:
figure.projection = () => context.projection;

I assume you would want to run this through an exposeProjection method that makes a defensive copy.
Not sure how well something like the above would fit in with your plans and sensibilities, but I can make a PR if it does.

Not to say that we should absolutely support every funky projection out there, but I'm weary of an approach that by design wouldn't allow to work, for example, with polar projections, or maps rotated to include the antimeridian?
Have you thought of going in the opposite direction? If mosaic had only access to the stream — or maybe a convenience method projection(lon, lat) => [x, y] returned by Plot, could it initialize its brushing component by computing all the screen positions (once); these derived dimensions would be added to the datacube, and brushing would work normally. This makes no assumption on what the projection returns.
The drawback of my approach —and I guess that's what you're trying to avoid?— is that you have to compute projected values [x,y] for the whole dataset. But since brushing does not require an extreme precision (that is, a precision of 1 pixel or 0.5 pixel is enough), there might be ways to optimize this even when you have a bazillion data points, by binning or sampling?
Happy to explore this with you in any case—the more maps we can make, the 👍

Yes, there are plenty of non-invertible projections that would be nice to support. As you note, we can compute the projection as a pre-processing step, then rely on the projected (x, y) values. We do this in-database for examples like the Gaia star map and NYC taxis. In the Mosaic context, we need these projected coordinates to reside in-database for scalable and interoperable filtering.
However, all that resides outside of Plot. So for cases where we want to use Plot projections (and their nice defaults, scaling, etc) we currently have a bit of a chicken-and-egg problem. So I've been exploring cases where we can create meaningful selections over lon/lat via projection inversion. If ultimately this proves to be a dead-end, so be it!
In any case it would be nice to be able to access the projection - even if just the stream!

+1 on this - currently struggling to figure out how to use the Imago projection from https://observablehq.com/d/51f92faafc3fb631 before realizing it is not supported: https://observablehq.com/@observablehq/plot-projections?collection=@observablehq/plot
(modifying this: https://github.com/jaanli/jaan.li/blob/dd7c3ef57bfb4dc607ec01f60ba0d5abf7ada5b9/docs/components/narrativeMap.js from the electricity example: https://github.com/observablehq/framework/blob/main/examples/eia/docs/components/map.js)

@jaanli I can show you how to use the Imago projection, but let's please open a separate discussion; this issue is about the reverse operation where you want to read the projection from a chart.

Will do! My bad @Fil I had thought that the current operations involve brushing over projected data at https://jaan.li -- sorry if I misunderstood - will open a separate discussion :)


Add CLI to display configuration information

It is currently difficult to understand which configuration file is being used for the CLI, and what values are configured.  Add the ability to display the location of the current config file as well as it's contents.

Added version and configuration information to the help content.  The location of the configuration file and the contents of the current configuration can be displayed by using the help option
odm --help


Crash scrolling the Create tab

This crash happens only on the Create tab AND when you have previously scrolled through one of the two other tabs.
EDIT: There seems to be a third dependency: Seems like the German language (app language) is a third prerequisite.
EDIT 2: In French language it also happened on the Tools tab.
[Bug] App Crash: IllegalArgumentException

Device: FP3 (Fairphone - FP3), SDK: 29 (10), App: 2.5.0 (104)

java.lang.IllegalArgumentException: Lookahead pass was never done for target content.
	at p.u.d(SourceFile:99)
	at a2.s.a(SourceFile:38)
	at p.b0.a(SourceFile:88)
	at p.b0.o(SourceFile:15)
	at y1.x.d(SourceFile:8)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at androidx.compose.ui.node.a.J(SourceFile:17)
	at androidx.compose.ui.node.a.K(SourceFile:18)
	at a2.o0.c(SourceFile:8)
	at a2.o0.k(SourceFile:134)
	at a2.o0.e(SourceFile:99)
	at a2.o0.e(SourceFile:111)
	at a2.o0.e(SourceFile:111)
	at a2.o0.d(SourceFile:36)
	at a2.g0.q0(SourceFile:59)
	at a2.g0.a(SourceFile:101)
	at v.v.d(SourceFile:83)
	at a2.s.a(SourceFile:38)
	at l1.q0.d(SourceFile:1)
	at a2.x.a(SourceFile:11)
	at l1.q0.d(SourceFile:1)
	at a2.x.a(SourceFile:11)
	at l1.q0.d(SourceFile:1)
	at a2.x.a(SourceFile:11)
	at v.g0.d(SourceFile:99)
	at a2.x.a(SourceFile:11)
	at v.n1.d(SourceFile:117)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at a2.g0.a(SourceFile:101)
	at y.k0.a(SourceFile:1)
	at z.r.a(SourceFile:82)
	at f8.j.T0(SourceFile:72)
	at z.t.p(SourceFile:516)
	at s.w0.f(SourceFile:59)
	at s.w0.p(SourceFile:350)
	at y1.d0.d(SourceFile:49)
	at a2.s.a(SourceFile:38)
	at l1.q0.d(SourceFile:1)
	at a2.x.a(SourceFile:11)
	at v.g0.d(SourceFile:99)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at a2.g0.a(SourceFile:101)
	at p.z.d(SourceFile:369)
	at a2.s.a(SourceFile:38)
	at p.b0.a(SourceFile:11)
	at p.b0.o(SourceFile:28)
	at y1.x.d(SourceFile:8)
	at a2.x.a(SourceFile:11)
	at p.y0.d(SourceFile:218)
	at a2.x.a(SourceFile:11)
	at l1.q0.d(SourceFile:1)
	at a2.x.a(SourceFile:11)
	at p.k.o(SourceFile:9)
	at y1.x.d(SourceFile:8)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at a2.g0.a(SourceFile:101)
	at p.u.d(SourceFile:84)
	at a2.s.a(SourceFile:38)
	at p.b0.a(SourceFile:88)
	at p.b0.o(SourceFile:15)
	at y1.x.d(SourceFile:8)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at a2.g0.a(SourceFile:101)
	at v.i1.a(SourceFile:111)
	at v.h1.d(SourceFile:32)
	at a2.s.a(SourceFile:38)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at a2.g0.a(SourceFile:101)
	at v.i1.a(SourceFile:389)
	at v.h1.d(SourceFile:32)
	at a2.s.a(SourceFile:38)
	at v.g0.d(SourceFile:99)
	at a2.x.a(SourceFile:11)
	at q.k0.b(SourceFile:35)
	at q.k0.d(SourceFile:17)
	at m2.r.W(SourceFile:59)
	at d1.z.b(SourceFile:48)
	at d1.a0.c(SourceFile:162)
	at a2.m1.a(SourceFile:1)
	at a2.g0.q0(SourceFile:114)
	at androidx.compose.ui.node.a.J(SourceFile:17)
	at androidx.compose.ui.node.a.K(SourceFile:18)
	at a2.o0.c(SourceFile:8)
	at a2.o0.k(SourceFile:134)
	at a2.o0.h(SourceFile:59)
	at androidx.compose.ui.platform.AndroidComposeView.v(SourceFile:32)
	at a2.h1.a(SourceFile:4)
	at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(SourceFile:14)
	at android.view.View.draw(View.java:21982)
	at android.view.View.updateDisplayListIfDirty(View.java:20856)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4416)
	at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4389)
	at android.view.View.updateDisplayListIfDirty(View.java:20816)
	at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:581)
	at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:587)
	at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:664)
	at android.view.ViewRootImpl.draw(ViewRootImpl.java:3765)
	at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3493)
	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2777)
	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1743)
	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7772)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1041)
	at android.view.Choreographer.doCallbacks(Choreographer.java:864)
	at android.view.Choreographer.doFrame(Choreographer.java:798)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1026)
	at android.os.Handler.handleCallback(Handler.java:883)
	at android.os.Handler.dispatchMessage(Handler.java:100)
	at android.os.Looper.loop(Looper.java:214)
	at android.app.ActivityThread.main(ActivityThread.java:7397)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:935)

Please, can you tell something about what we can do to avoid the crashes? Update what, downgrade the app to which version? Thank you!

No jetpack compose lib

I'm afraid I don't have the user privs to update that one as I can't even find it in the file system.

Because that's compiled Library, how can you change it?

It's not a gms, check jetpack compose

Thanks, Malik. I browsed portions of the page and am under the impression that I myself as a John Doe user can't really do anything but wait.
What's funny, though, is that I can scroll normally when I have set English as language from inside the app. Maybe you missed this second edit in the first post and it tells you something. I hope so.


Benchmarking RFC part 1: Rust

Superseding #1063 to some degree, this focus only in the rust part and should only involve proof-systems.

Should it not be in o1labs/rfcs?

Closing this as staled. And we are also not working on RFC anymore.


Do not create prefixed routes for non-blue-green apps

Purpose
For each route, the init_project playbook creates 3 prefixed routes (previous/current/next) even if only the "current" route will be used. This can be improved.
Proposal

[ ] Conditionally create prefixed routes if an app is blue-green compatible

This is already the case. For non blue-green compatible application only one route is created, not 3. The only thing missing is removing the prefix in the mailcatcher route which is by default next.

My bad, yes. This has already been implemented. I should sleep more. Sorry for the noise.


Add Floor aggregate class

Floors shall keep track of available rooms and enemies.

completed in other issue.


NEW FEATURE ADDED on NAV BAR, background image fixed

ISSUE No. : #140
I have added a new feature on the nav bar i.e underlining of items when hovered with a smooth transition . Also aligned the nav bar contents in a proper alignment. Fixed the background image problem .
Before:
https://github.com/user-attachments/assets/0407f415-56ba-4b1a-a06a-9a55e0209f25
After :
https://github.com/user-attachments/assets/d341fa5a-701a-402c-a63e-8395e61d4527
Please merge my contribution.

@swaraj-das please consider my merge request

@swaraj-das please consider my merge request

The issue has already been resolved by another contributor's PR. Please raise a new issue and continue contributing more.


Frank!Doc: Show full JavaDoc of each element

Please merge https://github.com/ibissource/iaf/pull/2136 first. If this has been done, I will merge the master to this pull request manually.


Packet rerouting, v/s forwarding, v/s switching, v/s redirecting

Hi Team,
I have a very basic question. As I've seen everywhere people are using different terms while using ebpf for packets journey.
Can someone please explain the difference b/w below terms when we write ebpf code :
Packet rerouting,
Packet forwarding,
Packet switching,
Packet redirecting

Hi @arayu05, I'm not sure how this question is relevant to this repository. Closing.


Allow for second "meeting pattern"

According to Raymond, approximately 8% of classes have 2 meeting patterns (time/day combos).  Workday is going to have two fields for this (meeting pattern 1 and meeting pattern 2).  We should probably have the option to do this in the app as well.  This will require

expanding the popover interface for course creation/update
adding some additional columns to the data
correctly identifying when there is just one meeting time vs two
placing session rectangles correctly in the various graphical views

Just a note that currently what the app calls a "Meeting" is what workday calls a meeting pattern.
export interface Meeting {
  // All days on which the given Meeting time and room is applicable
  days: Day[];
  // In minutes
  duration: number;
  isConflict?: boolean;
  isNonstandardTime?: boolean;  // feature to be added
  location: Location;
  // Like "8:00 AM" or "12:30 PM"
  startTime: string;
}

And a section already contains a list of meeting (pattern)s:
So this might be a fairly easy thing to implement:

add another set of days/start/duration input elements matching one to the meetings[0] and the other to meetings[1]

Additional note:  Currently the red conflict borders are tied to meeting patterns, not to individual meetings.  So if a MWRF class intersects with a TR class, all six days are outlined in red.  This isn't necessarily a bug, but we could consider whether it is the desired functionality.
For classes with multiple meeting patterns, I think the highlighting will be by meeting pattern since I'm seeing
forEach(section.meetings, (meeting) => { ... }

inside getEvents(), which is used to generate the schedule items grouped by room, faculty member, or department.
So in this case, it won't be the entire section that is highlighted, only the offending meeting pattern.

this isn't absolutely critical for the current round of scheduling, but it would be a really helpful feature to add so that people don't have to hack their way around it.

@rpruim Do you have any schedules to use for testing regarding the 8% of classes with the two meeting patterns?

I think we'll need to get help from student success for this since it looks like I only have access to my department's schedule using the report that I've been looking at.
I'll contact someone over there to get a file.

@kvlinden If you could provide one of the workday files here that would be great.

See the CS 262 schedule in this document. MW is different from F.
Course_Enrollment.xlsx


Adds updates to the EKS deployment guide

Adds information about same hostname configuration of the Legend applications, getting the new Callback URIs, and using the Amazon Load Balancer as a hostname.

/cc @pedroleaoc


Update Slack notifications for Travis CI

Coverage remained the same at 66.694% when pulling 0302c93e3ee420e0535ad1f9af41af89bb6b3d7d on codysoyland:slack-notifications into f3d0aec46d3fdf9d8d005de120a1c31ec67077d3 on pilosa:master.

Coverage increased (+0.01%) to 66.704% when pulling b7560f2010f20775bc758bf3ad3310d766084068 on codysoyland:slack-notifications into f3d0aec46d3fdf9d8d005de120a1c31ec67077d3 on pilosa:master.

Coverage remained the same at 66.694% when pulling d21604c8cc775c7bdd43eef8fc6a90e9678766ba on codysoyland:slack-notifications into f3d0aec46d3fdf9d8d005de120a1c31ec67077d3 on pilosa:master.

No, that is just because I accidentally pushed my branch to the pilosa fork (not my personal fork) and then deleted it.
I am still confused why slack notifications are still not working. I re-encrypted the credentials but no dice.

This fix doesn't seem to work. Moving this to internal issue tracker (ticket 26).


Feature request: Design System Header Bar

Is your feature request related to a problem?
Header Bar for Screens from https://xmtp-labs.slack.com/archives/C076F0L877T/p1729567356019179
Describe the solution to the problem
No response
Describe the uses cases for the feature
No response
Additional details
No response

The work is done for this done, but still need to transition everything to use this component


set of changes to sync openwhisk 0908

Hi @sefuhrer please review and merge.
Please note that in this drop I added a new document openwhisk_feeds.md

looks good


LeftLayoutRendererWrapper - Added truncate as ambient property

Ex. ${message:truncate=80}

Codecov Report

Merging #3328 into dev will increase coverage by <1%.
The diff coverage is 100%.

@@          Coverage Diff           @@
##             dev   #3328    +/-   ##
======================================
+ Coverage     80%     80%   +<1%
======================================
  Files        356     356
  Lines      28100   28101     +1
  Branches    3743    3743
======================================
+ Hits       22509   22528    +19
+ Misses      4509    4492    -17
+ Partials    1082    1081     -1

cool! Thanks!

Could you please edit the wiki? Thanks!

Updated wiki: https://github.com/NLog/NLog/wiki/Left-layout-renderer


Discoverability of other Postmarks Instances

I don't know how feasible this is, but I know long-term the plan is to make postmarks instances more interoperable with each other (https://github.com/ckolderup/postmarks/issues/8c). I've followed a few postmarks instances that have been shared in various Github issues, but it might be easier if there were a webpage/file/issue/interface to find other postmarks instances similar to how Mastodon has suggested users to follow.

This would be cool, kind of a joinmastodon.org directory but for Postmarks?
Thinking out loud, not requiring you to have the answers, but:

could that theoretically be set up today as a totally separate project with a Google Form + SPA that loads from its spreadsheet?
could we do something kinda grass-rootsy and ask people to post on Mastodon with a hashtag like #AlsoOnPostmarks and the URL to their instance, then write a script to slurp up posts with that hashtag?
would it be worthwhile to add an opt-in checkbox in the Admin interface that sends a ping to the directory?
how would directory entries be displayed / sorted? (sorting is a kind of ranking)
how would we prevent spam / abuse / "gaming the system" for any sorting?

This would be cool, kind of a joinmastodon.org directory but for Postmarks?

Yeah that's what I was thinking

could that theoretically be set up today as a totally separate project with a Google Form + SPA that loads from its spreadsheet?

Probably the easiest/fastest way. People might shy away from the fact that it's hosted w/ google but personally I wouldn't mind especially if it's only a temporary solution

could we do something kinda grass-rootsy and ask people to post on Mastodon with a hashtag like #AlsoOnPostmarks and the URL to their instance, then write a script to slurp up posts with that hashtag?

This is a really cool idea, I'm not sure how well that would work w/ everyone being on separate servers though. The script would have to be able to see all of the servers in order for it to see the hashtag I would think(?) Along the same lines though, maybe a bot that you could tag in a post, that way it's guaranteed that it gets seen?

would it be worthwhile to add an opt-in checkbox in the Admin interface that sends a ping to the directory?
This might be the most useful solution, I'm not sure how you would go about setting it up but then people would have  a built-in way to add their server to the list. Pretty sure mastodon does a similar opt-in thing for user discoverability, but that's on a per-server basis I believe, and this would be every server sending a notification to some sort of list

And I have no idea how to handle the last 2 suggestions

I like the idea of an opt-in directory from the Admin page. Owncast does this, too.
For an interim solution, yeah, a form of some kind. You could do similar on Netlify Forms + Eleventy and maybe not scare away folks.
I also thought about a retro type webring of bookmark sites, which we could include somewhere on each participating postmark site.
You know, FediDb is already capturing sites. I don't think we should use that for a public directory, but it's been handy for testing purposes and seeing what cool CSS things people are doing.
https://fedidb.org/software/postmarks

Does fedidb automatically populate somehow? Or is it taking submissions somewhere?

but it's been handy for testing purposes and seeing what cool CSS things people are doing.

Just clicking through a couple of the links, it's cool how unique everyone has made their sites look

RE: Fedidb. It’s automatic, tho I don’t know the magic sauce. The site says it doesn’t scrape public timelines of instances so it must be doing something else.
Yes, some imaginative takes on the bookmark list styling. CSS is amazing. Someone added YouTube embeds, tho that affects the template I’m sure.

On Oct 23, 2023, at 3:21 PM, Tom Casavant @.***> wrote:
Does fedidb automatically populate somehow? Or is it taking submissions somewhere?
but it's been handy for testing purposes and seeing what cool CSS things people are doing.
Just clicking through a couple of the links, it's cool how unique everyone has made their sites look
—
Reply to this email directly, view it on GitHub https://github.com/ckolderup/postmarks/issues/140#issuecomment-1775958378, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABSSB7Q6Z3C3VFKWPTCWD6TYA3GTRAVCNFSM6AAAAAA5WBNDFGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTONZVHE2TQMZXHA.
You are receiving this because you commented.

So... @ckolderup I was thinking. I got a free Google Domain for Devs I could use on this (and probably happy to personally fund as an ongoing thing). More of a landing page ( + optional directory) for Postmarks than the current test site + GH repo. Thoughts?

So I’m thinking something like postmarks.dev, usepostmarks, getpostmarks (variations) rather than e.g. joinpostmarks - a lot of other fedi software seems to use the join-* style but we are self-hosting / single user by design and default.
I might spin up a simple landing site along these lines as an example of what I have in mind. Opinions on a possible domain are welcome!

Something like this, very much WIP, location / domain fungible.

Hey! This is very well done, and I appreciate your (continued) generosity with this. The site is clean and simple and would be a good resource for people instead of relying on the Github repo/Glitch demo site being the landing pages.
For context, beyond my own general lack of activity, I have a number of concerns that have held me back from pursuing something like this so far. I'll just lay it all out here and you can maybe help me unpack if I'm being wholly irrational:

I think a rename on this project is probably inevitable, because I feel like every time I get a bump of interest someone inevitably comes along with discouraging words about the fact that the project name overlaps with something else, even if the space we're in is pretty different. To that end it'd feel bad to invest your hard-won domain name into something that would become outdated! The additional problem there is that in all my background-cycle thinking about this for the past... 3? 4 months? I haven't come up with anything better for the project, leaving me kinda stymied on actually making the move. Maybe I need to pursue some kind of more active brainstorming strategy instead of just thinking I'll stumble on the right name via serendipity.

I still have concerns (outlined in my earlier reply in this thread) about the abuse/gaming aspect of an opt-in directory of basically anything on the internet. This is probably carrying some of my own community management baggage from the past and I just need to get over it and wait until there's an actual problem that needs enforcing, but it is there in my brain.

I received a surprising amount of interest from people (great!) who also made it clear to me that even my Glitch installation instructions were too complicated for them (frustrating for both them and me!) and I was hoping to have gotten farther along in a couple different ways by this time (versioning the software and displaying that prominently in the footer/metadata of an instance for debugging purposes, rewriting the setup process to use an easier web-based flow as @johnholdun and I ultimately landed on with #135). This might be the most irrational thing I'll say, but: making the software more welcoming before we get there feels like it might draw in more people only to push them away before we're "ready" for them, which bums me out.

But-- that all said-- I haven't done the rename, or the setup rewrite, or much else, in small part for pretty good life reasons, but probably mostly because I've been lazy! I'm really trying to reboot my brain in the new year based on the real motivation I felt last fall, but a few family/personal things I've had to deal with at the tail end of last year have made it difficult to get back to it, and I'm sad about that.

Appreciate the transparency! OK - so in light of those responses, here's a little of my own current context 🙂
My current flurry of activity is totally because I needed an outlet to distract myself from something else much less interesting and more annoying... there is no specific pressure, although a sudden burst of PRs and comments makes it look that way. I'm enjoying learning the insides of ActivityPub and so forth. Also, the interop and IndieWeb compatibility parts have been fun to dig in on!
Let's go through your points in an effort to help unpack.

Name: I don't have a lot to say on a rename, other than that I like the current one, and/or that I'll go along with what happens. I haven't seen the same comments you have on naming, tbh. It's an adage that naming anything is hard, and that you can't please everyone! (relatedly, there's a very active discussion happening on another project I work on in this precise area right now)

On this specific GH Issue & the directory idea: the notion I have for the home site is that folks could choose to submit to a (small, curated) directory on there, likely via a PR flow - so that could help to tamp down the abuse side of things, both friction for people adding theirs to a list needing to use GH, and the review-add-push-to-live side. Also a community manager here, I feel you! ✋🏻

[hey, I was at Twitter, the gaming/abuse aspect of anything is HIGH on my list of proactive concerns]

Welcoming users before its ready: I hear you, and I'm probably not well-equipped to do that rewrite and migration work. So, I'm just tinkering away at the edges on other, often completely trivial things. The friendly landing page was prompted by getting the honorable mention/Glitch-donated domain, and wanting to tinker on something adjacent to the core project. I think the site I threw together is half-baked right now, but it was a chance to update my Bootstrap knowledge, and think about what that could look like.

I'm very understanding of life's tendency to throw curveballs, and of the personal impacts that can have. Happy to solve problems in my own fork for a bit, and see what happens here overall. If you want to chat via different channels, lmk.

Another thought on this, I know the indieweb uses blogrolls (https://blogroll.org/what-are-blogrolls/) as a form of discoverability between blogs, basically just a recommendation system of 'here is who I follow who I think you should follow'. Probably much simpler than a centralized solution and much easier to implement

Or maybe, extending on that, have the option for users to provide recommended profiles and the federate those alongside the user profile? Then postmarks could just have a page on the admin console with a list of all the recommended profiles from people you follow sorted by how many recommendations they received from people you follow?
That would probably take a lot more thinking through of how that works and a lot more difficult than just providing a blogroll

I really like this idea, though. Ability to have this as something the admin sets up would be really nice.

I looked a bit more into it, Mastodon has 'featured-profiles' and they open issue for federating those profiles (https://github.com/mastodon/mastodon/issues/19655) though I don't think the featured profiles show up anywhere in the UI so I doubt that's a pressing issue for them. My assumption it would work very similar to that.

Hi postmarklets! The mastodon featured profiles are not federated, they are local only. I looked into this way too much awhile back and even built a tool  to manage them because why not. You are correct it's not a pressing issue.


Add an intrinsic for String#start_with?

Motivation

Improving performance.
Test plan

See included automated tests.

We have a policy of testing changes to Sorbet against Stripe's codebase before
merging them. I've kicked off a test run for the current PR.  When the build
finishes, I'll share with you whether or how it failed. Thanks!
Stripe employees can see the build results here:
→ https://go/builds/bui_KcuAC7JRkCJBC7
→ https://go/builds/bui_KcuBw1pUWufmmA


feat: validation package

This PR adds the validation package with the approach of validating form fields coming from an HTTP request.
How does it work?
The validation process starts in the validation.New variadic function which receives as first parameter the HTTP request form and the second parameter, a variable number Rule arguments.
verrs := validation.New(form, ruleSet...)

Each Rule element holds the form Field key and a set of validations that will be applied to all form field values.
Rule{
    Field: "form_field",
    Validations []Validation{...},
}

These validations are functions will receives the form string values and returns an error if any of the elements fail to meet the validation condition.
type Validation func(...string) error

Simple implementtion
form := url.Values{
    "username": []string{""},
    "email"<EMAIL_ADDRESS>    "pasword": []string{"1234567"},
}

verrs := New(form,
    Rule{
        Field: "username",
        Validations: []Validation{
            Required(),
        },
    },
    Rule{
        Field: "email",
        Validations: []Validation{
            Required(),
        },
    },
    Rule{
        Field: "password",
        Validations: []Validation{
            MinLength(8, "Password must contain at least 8 characters"),
            func(values ...string) error {
                if strings.Contains(values[0], form.Get("username")) {
                    return errors.New("password must not contain your name.")
                }

                return nil
            },
        },
    },
)

if len(verrs) > 0 {
	fmt.Println("form has error")
}

This is good @tatang26! Thanks for sharing it. Regarding the API I want to suggest a few things:
Why don't we make Validation the set of rules for determining whether a field is correct or acceptable?
In that sense we would have:
userChecker := Validations{
    Validation{
        Field: "username",
        Rules: RuleSet{
            Required(),
        },
    },
    Validation{
        Field: "email",
        Rules: RuleSet{
            Required(),
        },
    },
    Validation{
        Field: "password",
        Rules: RuleSet{
            MinLength(8, "Password must contain at least 8 characters"),
            func(values ...string) error {
                if strings.Contains(values[0], form.Get("username")) {
                    return errors.New("password must not contain your name.")
                }

                return nil
            },
        },
    },
}

form := url.Values{
    "username": []string{""},
    "email"<EMAIL_ADDRESS>    "pasword": []string{"1234567"},
}

// returning error will be needed because some validations will cause error conditions such as database check
verrs, err := userValidations.Validate(form)
if err != nil {
    return err
}

if len(verrs) > 0 {
	fmt.Println("form has error")
}

This is good @tatang26! Thanks for sharing it. Regarding the API I want to suggest a few things:
Why don't we make Validation the set of rules for determining whether a field is correct or acceptable?
In that sense we would have:
userChecker := Validations{
    Validation{
        Field: "username",
        Rules: RuleSet{
            Required(),
        },
    },
    Validation{
        Field: "email",
        Rules: RuleSet{
            Required(),
        },
    },
    Validation{
        Field: "password",
        Rules: RuleSet{
            MinLength(8, "Password must contain at least 8 characters"),
            func(values ...string) error {
                if strings.Contains(values[0], form.Get("username")) {
                    return errors.New("password must not contain your name.")
                }

                return nil
            },
        },
    },
}

form := url.Values{
    "username": []string{""},
    "email"<EMAIL_ADDRESS>    "pasword": []string{"1234567"},
}

// Returning error is needed because some validations may
// cause error conditions such as database check
verrs, err := userChecker.Validate(form)
if err != nil {
    return err
}

if len(verrs) > 0 {
	fmt.Println("form has error")
}

@paganotoni Thank you for this suggestion, It looks good, I think we can follow this way.


Yes, ForceRebalance, but only from the leader due to how Kafka works:
func (cl *Client) ForceRebalance()
    ForceRebalance quits a group member's heartbeat loop so that the member
    rejoins with a JoinGroupRequest.

    This function is only useful if you either (a) know that the group member
    is a leader, and want to force a rebalance for any particular reason,
    or (b) are using a custom group balancer, and have changed the metadata that
    will be returned from its JoinGroupMetadata method. This function has no
    other use; see KIP-568 for more details around this function's motivation.

    If neither of the cases above are true (this member is not a leader, and the
    join group metadata has not changed), then Kafka will not actually trigger a
    rebalance and will instead reply to the member with its current assignment.


Update storage-account.bicep to default to HTTPS only

storage-account.bicep now defaults to HTTPS only
https://github.com/Azure/azure-dev/blob/main/templates/common/infra/bicep/core/storage/storage-account.bicep#L21
Update this project to match that.

Closing since work complete in #234


Extract string automatically

On vscode extension localizely.flutter-intl there is a very useful feature called Extract to ARB files. With that you could select a string on code and, opening code actions menu, you could select this option to automatically move this string to translations files and replace the string selected to its reference.
It's very useful and gives a nice development experience.
Furthermore, a feature that I miss on this extension is to be able choice where the new translation message will be added on translations file. We could add a dropdown menu listing triple-hash comments.

Done: https://github.com/macabeus/vscode-fluent/pull/5


What's the difference with this other repo?

https://github.com/trogers-twilio/plugin-dialpad.
This one fixed some issues on the UI during the call but now is older than this one. Which one should I use instead?

@erperejildo The Dialpad plugin on Lehel's profile is still the one to use. I forked it simply to test UI enhancements for the conference participants. I eventually plan to merge those changes back to this repo on Lehel's profile. I've just been waiting for some Flex UI changes that will alter the approach I took for fixing the conference participant actions.

Thanks for clarifying @trogers-twilio. Please, let me know over here as son as you have these changes merged

@trogers-twilio you commented some UI changes but this API is not on this repo: https://github.com/lehel-twilio/plugin-dialpad/tree/master/src/functions


add android configs

Before sending a pull request, please review Contribution Guidelines:
https://github.com/google/syzkaller/blob/master/docs/contributing.md

Codecov Report

Merging #1566 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #1566   +/-   ##
=======================================
  Coverage   56.48%   56.48%
=======================================
  Files         143      143
  Lines       26830    26830
=======================================
  Hits        15155    15155
  Misses      10944    10944
  Partials      731      731

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 4de4e9f...773c57f. Read the comment docs.

@metti please take a look
This is the android configs.
There are several commits that first add the config template, then result on olddefconfig on it, then s/=m/=y/ and finally the actual changes for syzbot.

@metti please take a look
This is the android configs.
There are several commits that first add the config template, then result on olddefconfig on it, then s/=m/=y/ and finally the actual changes for syzbot.

I am going to merge this now, but please still post-review. I expect we will need to do several iterations anyway. And the most interesting things will be uncovered once we start actual testing, so I want to unblock that asap.


Documentation/operators

There are two things to note here:

I took the liberty of removing documentation of a pointer operand for integral_constant because I think it no longer exists. It is in a separate commit just in case.

For the data-types that I added a documentation definition to, for some reason the "Public Members" documentation is not full width, and I could not find any reason just by looking at the style rules. I could possibly add a style rule unless I am missing something obvious with this.

I just broke all of these free functions out into a separate file and then realized that maybe you meant that I simply add the friend keyword there. Which is preferred?

I perhaps went too far with breaking out the free operators, but I pushed it for review to see if this is a better solution. If not, I can reset back to what I had before and work from there. lmk

I really just meant that you should stick friend in front of the functions :p.

I reset back to earlier and simply added friend to all free operators. I also added type's unary+ and everything for integral_constant.

That looks perfect. I will merge as soon as the CI is finished. Thanks a lot!

btw #213

No sweat! :sweat_smile:

Closed by bae4dc1d8dec14a17e6c8c82c436e723dc7a4514.


JupyterLab on GKE does not work with GPU

Describe the bug
JupyterLab on GKE does not work with GPU because LD_LIBRARY_PATH is missing. It needs to be set to /usr/local/nvidia/lib:/usr/local/nvidia/lib64.
Note Setting this env var in Workspace Template directly did not work, suggesting that something could be writing over it when the JupyterLab server runs.
opctl version
$ opctl version

CLI version: v0.16.0-rc.2
Manifest version: v0.16.0-rc.2
API version: v0.16.0-rc.2
Web UI version: v0.16.0-rc.2

opctl init command
opctl init --provider gke --artifact-repository-provider s3 --gpu-device-plugins nvidia
Kubernetes information

Cloud provider: GKE
Kubernetes version: 1.17.13-gke.2001

Machine information

OS: macOS 10.14.6
Browser: Chrome

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context around this: If you directly exec into the container in K8s, the environment variable is there, so I suspect that something with our JupyterLab launch process overwrites or clears the environment variable. The VSCode template uses the same image layers and doesn't have this issue.

@rushtehrani
Solution:
Change Command in workspace template to (note the inclusion of LD_LIBRARY_PATH):
command: ["/bin/bash", "-c", "pip install onepanel-sdk && start.sh LD_LIBARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64  jupyter lab --LabApp.token='' --LabApp.allow_remote_access=True --LabApp.allow_origin=\"*\" --LabApp.disable_check_xsrf=True --LabApp.trust_xheaders=True --LabApp.base_url=/ --LabApp.tornado_settings='{\"headers\":{\"Content-Security-Policy\":\"frame-ancestors * \'self\'\"}}' --notebook-dir='/data' --allow-root  --GatewayClient.env_whitelist='LD_LIBARY_PATH'"]

Explanation
The command calls the start.sh script. This script ends up calling the subsequent command with  sudo -E.
The -E flag doesn't pass on certain variables like those that start with LD. In order to preserve those variables, we can set them after the start.sh invokation.
Additional Info
https://serverfault.com/questions/371630/how-to-configure-sudoers-to-always-keep-ld-library-path-envrionment-variable/371646#371646


ValueError: No address given to connect to

I am doing something wrong?
test@host:~/ph4-walkingpad $  ph4-walkingpad-ctl --stats 750 --json-file ~/walking.json -p profile.json
Traceback (most recent call last):
  File "/home/issa/.local/lib/python3.7/site-packages/ph4_walkingpad/main.py", line 374, in main
    await self.work()
  File "/home/issa/.local/lib/python3.7/site-packages/ph4_walkingpad/main.py", line 94, in work
    await self.connect(address)
  File "/home/issa/.local/lib/python3.7/site-packages/ph4_walkingpad/main.py", line 74, in connect
    await self.ctler.run()
  File "/home/issa/.local/lib/python3.7/site-packages/ph4_walkingpad/pad.py", line 359, in run
    await self.connect(address)
  File "/home/issa/.local/lib/python3.7/site-packages/ph4_walkingpad/pad.py", line 274, in connect
    raise ValueError('No address given to connect to')
ValueError: No address given to connect to

test@host:~/ph4-walkingpad $ cat profile.json
{
  "id": "xjfrac2lhj",
  "male": true,
  "age": 25,
  "weight": 70,
  "height": 1.80,
  "token": "tyJ5eXAiOoJKH1RiLCJh"
  "did": "57:4C:4D:4D:1B:1B",
  "email"<EMAIL_ADDRESS>  "password": "superpassword",
}

Token, did, email and pass are fake.

@VitharMe are you running it on OSX? If it is the case, please try the following https://github.com/ph4r05/ph4-walkingpad#osx-troubleshooting

Also, pls try running it with --debug parameter to get more logs

Closing for inactivity, pls reopen when the problem persists.


net: wifi: Fix the Wi-Fi state check

Once Wi-Fi is associated few parameters like listen interval and power-save mode cannot be changed. The state for association is "ASSOCIATED" and not completed. Even after state transitions to COMPLETE, it can still go back to other states, e.g., PTK/GTK renewal.
Fix the state check.

I am just wondering could we have for example some additional build time assert that could be used to verify that. This way if someone changes / reorders the state values, we could catch that.

Well, it's seldom changed, but yes we can add an assert, is this what you had in mind?

assert(WIFI_STATE_DISCONNECTED < WIFI_STATE_INTERFACE_DISABLED &&
WIFI_STATE_INTERFACE_DISABLED < WIFI_STATE_INACTIVE &&
WIFI_STATE_INACTIVE < WIFI_STATE_SCANNING &&
WIFI_STATE_SCANNING < WIFI_STATE_AUTHENTICATING &&
WIFI_STATE_AUTHENTICATING < WIFI_STATE_ASSOCIATING &&
WIFI_STATE_ASSOCIATING < WIFI_STATE_ASSOCIATED &&
WIFI_STATE_ASSOCIATED < WIFI_STATE_4WAY_HANDSHAKE &&
WIFI_STATE_4WAY_HANDSHAKE < WIFI_STATE_GROUP_HANDSHAKE &&
WIFI_STATE_GROUP_HANDSHAKE < WIFI_STATE_COMPLETED);


Document how to create a new matrix

At present there is no documentation that indicates how one can create a matrix. The example here is not clear.
This request is for documentation and examples for how to make an extendr matrix. At present, matrices seem to be the most challenging extendr object to work with.
https://github.com/extendr/extendr/blob/bae73e70ffa75f29c5e87719a66614134414a8cd/extendr-api/src/wrapper/matrix.rs#L7

Can you elaborate on the way in which you think it's unclear? Is it just the lack of documentation for new_matrix that explains the f function?

I think that is definitely the biggest hurdle. The use of the closures also feels odd and somewhat confusing—e.g. how do i really know if I'm getting the data input column or row order?
When using the creation function for the first time I had hoped for something similar to ndarray::zeros that was there could be an "empty" matrix that can be filled iteratively.
There also was no From implementation for a Doubles  or Vec<Vec<f64>> which I thought to be a natural thing to have.

Hi!
I am not following... You want to know if the input data is of column or row order... What type is it you are trying to convert from? Because in R matrices are column order while in ndarray the default is row order afaik. You would have to know the memory layout of the element you are working with since I think new_matrix flattens the input.
I don't think it's possible to create a From implementation for Doubles because it would not be possible to pass the number of rows or columns as arguments.
Vec<Vec<T>>> is not an efficient structure to work with. I think extendr should not support it but instead encourage the use of the ndarray interface so you can use ndarray::zeros and convert directly to an RMatrix.
The new_matrix implementation is actually simple, but I agree it really lacks documentation, specially examples.

how do i really know if I'm getting the data input column or row order?

new_matrix currently creates the input data one column at a time (ie, (0, 0) followed by (0, 1) followed by (1, 0). I'm surprised that this matters but I'll include it in the documentation anyway.

When using the creation function for the first time I had hoped for something similar to ndarray::zeros that was there could be an "empty" matrix that can be filled iteratively.

I am firstly hesitant to rewrite functionality that already exists in ndarray. Also I think probably the best thing extendr can do here is encourage users to create matricies in the more idiomatic Rust way, which is by collecting iterables. I think it's rare that you truly need to start with an empty matrix. Which brings me to...

There also was no From implementation for a Doubles  or Vec<Vec> which I thought to be a natural thing to have.

As mentioned, this doesn't make much sense to use as From, but I'm envisating that we could have fn collect_rmatrix(&self, by_row: bool, n_row: usize). So you can then [1, 2, 3, 4].collect_rmatrix(true, 2). This would be both idiomatic Rust and more user friendly than it is now.

I don't want to know the order. My meaning is that it is not as straightforward to determine if something is column major or row major using the closure interface. It does not matter that new_matrix() creates data one column at a time. But it important to know, as a user, if your data is being input row or column order.
Collecting from an interable would be a nice thing to have. Here is an example of creating a euclidean distance matrix from mismatched sized Doubles.
#[extendr]
fn dbls_to_mat(x: Doubles, y: Doubles) -> RMatrix<f64> {
    let nr = x.len();
    let nc = y.len();

    let res_vec: Vec<Vec<f64>> = x.into_iter()
        .map(|x| y.into_iter()
            .map(|y|  (x - *y).0.powi(2).sqrt())
            .collect::<Vec<f64>>())
         .collect();

    RMatrix::new_matrix(
        nr, nc,
        | r, c | res_vec[r][c]
    )
}

Approaches like this are quite common for nested calculations I'd think.
Using @multimeric's suggested collect_rmatrix() could be nice for Vec<f64> (RMatrix doesn't work from my experience).

I think this works below.. but you get the idea

#[extendr]
fn dbls_to_mat(x: Doubles, y: Doubles) -> RMatrix<f64> {
    let nr = x.len();
    let nc = y.len();

    let res: RMatrix<f64> = x.into_iter()
        .flat_map(|x| y.into_iter()
            .map(|y|  (x - *y).0.powi(2).sqrt())
            .collect::<Vec<f64>>())
         .collect_rmatrix(by_row: true, n_row: nr, n_col: nc);
    res
}

I think I would do something like this (I don't even know if it works, can't run rust where I am...):
#[extendr]
fn dbls_to_mat(x: Doubles, y: Doubles) -> RMatrix<f64> {
    let nr = x.len();
    let nc = y.len();

    RMatrix::new_matrix(
        nr, nc,
        | r, c | ((x[r] - y[c]).0).powi(2).sqrt()
    )
}

I think you just need to adjust r and c to make the matrix you want.
In this case the columns of the matrix would vary the y index. For example the first column of the matrix would have all the y distances compared to x[0].

I don't want to know the order. My meaning is that it is not as straightforward to determine if something is column major or row major using the closure interface. It does not matter that new_matrix() creates data one column at a time. But it important to know, as a user, if your data is being input row or column order.

I'm afraid I don't understand this distinction you're making. R's matrices are always stored in column major order. And the insertion order is column by column. What else are you after? Can you give an example?

The insertion order is not always in column order. Here are som examples.
x <- 1:9

# simple example
matrix(x, ncol = 3)
#>      [,1] [,2] [,3]
#> [1,]    1    4    7
#> [2,]    2    5    8
#> [3,]    3    6    9
matrix(x, ncol = 3, byrow = TRUE)
#>      [,1] [,2] [,3]
#> [1,]    1    2    3
#> [2,]    4    5    6
#> [3,]    7    8    9

# another example where using a for loop
m <- matrix(ncol = 3, nrow = 3)
for (i in 1:3) {
  m[i,] <- 1:3 * i
}

# see interior of listw2mat for a real world example
spdep::listw2mat
#> function (listw)
#> {
#>     n <- length(listw$neighbours)
#>     if (n < 1)
#>         stop("non-positive number of entities")
#>     cardnb <- card(listw$neighbours)
#>     if (any(is.na(unlist(listw$weights))))
#>         stop("NAs in general weights list")
#>     res <- matrix(0, nrow = n, ncol = n)
#>     for (i in 1:n) if (cardnb[i] > 0)
#>         res[i, listw$neighbours[[i]]] <- listw$weights[[i]]
#>     if (!is.null(attr(listw, "region.id")))
#>         row.names(res) <- attr(listw, "region.id")
#>     res
#> }
#> <bytecode: 0x10d961d60>
#> <environment: namespace:spdep>

Created on 2023-01-28 by the reprex package (v2.0.1)

To be clear, I meant:

R's matrices are always stored in column major order. And the insertion order via new_matrix in Rust is column by column.

I understand that R has a byrow parameter. I still don't understand what you want here.

This request is for documentation and examples for how to make an extendr matrix.

This issue is for better documentation on creating and filling an RMatrix. All other discussion is ancillary.
The additional point is that using a closure to fill the matrix feels weird.

The column order refer to the memory layout. Even though you insert in row order using byrow = TRUE. The matrix will be column major because the elements will be arranged contiguously in column order.
Also be aware that the ways you wrote dlbs_to_mat you are doing some unecessary allocations when you collect to a vec.


Populating drawn_images for VCR dataset

First of all, a great repository for multimodal continual learning. Kudos!
I have a doubt regarding how to populate drawn_images in VCR dataset:
The drawn_images folder for the VCR task can be generated from the original vcr1images, using the scripts available [here](https://github.com/rowanz/merlot/tree/main/downstream/vcr/data).
In the link you have mentioned, there are three scripts namely prepare_data, draw_segms and draw_bbox. I understand these scripts generate segmentation and bbox for the images in vc1images.
Could you please clarify how I populate drawn_images? What is the folder structure, contents etc.
Thanks in advance,

Hello, sorry for the late response.
You should be able to modify this script.  The drawn_images folder contains two folders: bbox and bbox_logs. bbox contains two folders, train and val, each of which contain a qa and qar folder containing the drawn images.


No hardware acceleration could be configured, running in CPU mode

why i get the newest docker image: beveradb/audio-separator:gpu-0.12.3, when i run in the docker，GPU can not be used。
2024-01-23 07:37:54.481 - INFO - separator - Separator version 0.13.0 instantiating with output_dir: /workdir/separated, output_format: WAV
2024-01-23 07:37:54.481 - INFO - separator - Checking hardware specifics to configure acceleration
2024-01-23 07:37:54.481 - INFO - separator - Operating System: Linux #101-Ubuntu SMP Tue Nov 14 13:30:08 UTC 2023
2024-01-23 07:37:54.481 - INFO - separator - System: Linux Node: 2268b32cf6d1 Release: 5.15.0-91-generic Machine: x86_64 Proc: x86_64
2024-01-23 07:37:54.481 - INFO - separator - Python Version: 3.10.12
2024-01-23 07:37:54.481 - INFO - separator - ONNX Runtime GPU package installed with version: 1.16.3
2024-01-23 07:37:54.490 - INFO - separator - Torch package installed with version: 2.1.2
2024-01-23 07:37:54.490 - INFO - separator - Torchvision package installed with version: 0.16.2
2024-01-23 07:37:54.490 - INFO - separator - Torchaudio package installed with version: 2.1.2
2024-01-23 07:37:54.513 - INFO - separator - No hardware acceleration could be configured, running in CPU mode

2024-01-23 08:00:34.497 - INFO - separator - Torchaudio package installed with version: 2.1.2
/opt/conda/lib/python3.10/site-packages/torch/cuda/init.py:138: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW (Triggered internally at /opt/conda/conda-bld/pytorch_1702400410390/work/c10/cuda/CUDAFunctions.cpp:108.)
return torch._C._cuda_getDeviceCount() > 0
2024-01-23 08:00:34.499 - DEBUG - separator - CUDA not available in Torch installation. If you expect GPU/CUDA support to work, please see README

Hmm, that's strange, I've tested that specific docker image on runpod (I don't have a GPU of my own unfortunately)
I wonder if you need to pass in the GPU device to the docker container when running it, perhaps?
Does e.g. docker run --gpus all nvidia/cuda:11.0-base nvidia-smi work?

it  worked, but I find that the cuda version is 12.2.2 on my host machine,  which in container is 12.2.3. This may cause this problem, thanks.

Huh, I'd actually be surprised if that was an issue 🤔
Have you tried the CUDA 11 docker image? docker pull beveradb/audio-separator:gpu
Dockerfile: https://github.com/karaokenerds/python-audio-separator/blob/main/Dockerfile.gpu
The reason I ask is just that CUDA 12 is still not officially supported by the ONNX Runtime (though that should change in the next few days, v 1.17 finally has release candidates: https://github.com/microsoft/onnxruntime/issues/19236#issue-2095311013 )
If you figure out how to get it working, or if you have any suggestions for how to improve the Dockerfiles or README instructions in this repo, please share! 🙇

FYI @quanpy , this should now be resolved with the latest versions of audio-separator (version 0.14.4 or newer), as it's now using the newly-released ONNX runtime version 1.17 which supports CUDA 12!
Please give it a try and if you're still having issues with the latest version, share your full log output from audio-separator in a new issue 🙇


Villagers are not re-stocking 1.21.1

Hi, I use the same configuration as on 1.20.4 but, now all the villagers have problem with re-stocking. Even if I stay next to them, even if I give them nametag, they almost always didnt re-stock.
My profiles:
https://paste.gg/p/anonymous/006edf7d8e9f433395c205e7d3df2412
My config:
https://paste.gg/p/anonymous/b72648fb6adb4a9aa80b30aed18eb0f9
On 1.20.4 there wasnt this issue, please what to do?
Thank you!

@froobynooby

I have one more question, how restocking works, when the Villager has disabled AI? Is it possible to lobotomize them without breaking re-stocking mechanism?

Thank you!


Vanilla js alternative

Hi there,
I love using this library, but for a project I'm only allowed to use vanilla js.... Do you have any way to use this awesome library then? Or something like a alternative with vanilla js?
Regards,
Jens

hey @jens1o, just came across this issue from a while back.  It's not a complete solution, but in case you were interested in taking a stab, you could check out Day 6 in the Javascript30 wes bos series, it's also a typeahead input field, though there may be less event handling than with the entire typeahead.js dependency

Thanks for that, that's helpful!

Sorry @jens1o This definitely requires jQuery. There is a pending PR that removes the jQuery dependency of the Bloodhoud component, so you might how a look at that. The core typeahead component will probably always require jQuery, though.


Added colors and fixed few spelling mistake

Why?
This pull request enhances the dualboot.sh script and updates documentation files (tutorial.md and README.md) to improve clarity, fix spelling issues, and introduce color-coded outputs for better user experience. Additionally, it renames a file for consistency.
How?
Enhancements to dualboot.sh:

Added functionality to utilize colors for different types of outputs (red for errors, blue for user output) using functions printb(), printr(), and printg().

Replaced all instances of echo with corresponding color functions (printb, printr) to ensure consistency and improve readability.

Renamed .myipswhere to .PutIpswHere for better clarity and consistency.

Updates to tutorial.md:

Updated the description of the .iPSW file to cover iOS versions 13 to 15, and highlighted that it won't work on iOS 16 devices for clarity.

Updates to README.md:

Enclosed code snippets within backticks (`) for differentiation between normal text and code.
Corrected several spelling issues for better readability.

Screenshots:

Just fixed those issues thanks

this looks super cool, thank you so much buddy


Can't run Tunny optimisation

I have had issues with running tunny in a large code. Created a very simple Grashopper-script to try. The image shows the error message.

Hi @karimosling
Can you please run the following version with the logging level set to verbose so I can confirm what is happening in your environment?
https://drive.google.com/file/d/18cdQpZjaYaLHZY9hEDtK4onphDmUtpm4/view?usp=sharing

The log file will be output to the following path, so please send that as well.
C:\Users\[USER NAME]\.tunny_env\logs

Hi @hrntsm,
I have now tried to run Tunny again, the same error occurs, the log tile is attached:
log_20240207.txt

Hi @karimosling
It seems that you have set the file where the optimization results are saved to the folder that is linked to onedrive, but that can cause errors, so could you please try the normal folder?

@karimosling
Thanks for the confirmation.
I will look into it as I can't immediately think of the cause.

I checked and it looks like maybe Tunny is failing to start the Python it is using.
I'll see what I can do.

Fix this problem to change python initialize method.
This change include v1.0.


Add memorial=ghost_bike

https://wiki.openstreetmap.org/wiki/Tag:memorial=ghost_bike

I'm note sure if those are implemented via id-tagging-schema repository, or  via Taginfo popularity, or combination of both (I think it is combination of both).
So I've made a PR at https://github.com/openstreetmap/id-tagging-schema/pull/1302, feel free to review/like there.

Yup, will appear in 5.2.


added missing translation in it/base.php

Added missing translation in it/base.php, based on en/base.php.

A new inspection was created.

The inspection completed: No new issues

A new inspection was created.

Thank you @sniperwolf ! I just merged https://github.com/Laravel-Backpack/CRUD/pull/3049 too, so the result might be a mix between the two. Let me know if some of them don't mix well together.
This will be available later today when a new patch version is released.
Thanks again. Cheers!

The inspection completed: No new issues


Make agent label have consistent capital naming (opensearch-build)

Signed-off-by: Peter Zhu<EMAIL_ADDRESS>Description
Make agent label have consistent capital naming (opensearch-build)
Corresponding opensearch-ci PR: https://github.com/opensearch-project/opensearch-ci/pull/160
Issues Resolved
https://github.com/opensearch-project/opensearch-ci/issues/132
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #2353 (43dd6ab) into main (21fe974) will increase coverage by 5.05%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main     #2353      +/-   ##
===========================================
+ Coverage   94.94%   100.00%   +5.05%
===========================================
  Files         157         6     -151
  Lines        4133       105    -4028
  Branches       19        19
===========================================
- Hits         3924       105    -3819
+ Misses        209         0     -209

Impacted Files
Coverage Δ

..._workflow/input_manifests_opensearch_dashboards.py

src/build_workflow/build_args.py

src/ci_workflow/ci_check.py

src/test_workflow/test_recorder/log_recorder.py

src/test_workflow/perf_test/perf_test_cluster.py

src/test_workflow/test_result/test_result.py

..._workflow/opensearch/build_artifact_check_maven.py

...bwc_test_start_properties_opensearch_dashboards.py

src/ci_workflow/ci_target.py

src/system/thread_safe_counter.py

... and 141 more


Invalid error position for redeclared symbol

Description:
For the following code
[int ,float, string] [a, b, c] = [1, 2.5, "Dulmina"];
float b = 6;

The compiler incorrectly identifies b in the tuple variable as the redeclared one
error: .::module_tuple_var_decl_negetive.bal:1:26: redeclared symbol 'b'
Where the actual redeclared one is in the second line
Steps to reproduce:
Module tuple binding pattern support added by #26599
Suggested Labels:

Team/Compiler FE
Type/Bug

Fixed in #26599 itself.

Closing the issue as per the above comment.

Closing the issue as per the above comment.


brave remove only works with containers deployed to a local remote

would make sense to be able to remove a container running on a remote: e.g. brave remove $REMOTE:$UNIT

Fixed in https://github.com/bravetools/bravetools/pull/160 (which also added remote support for stop/start).


Issue425 Example runs should run

Example runs should run
Fixes #425
Change Description
Fixes the example runs launched from run_simple_example.sh and run_topaz128x128.sh so that they run and do not crash, at least not until the end of the run.

Test Description
The runs now execute mostly successfully.

That ran for me with test_simple_example.sh and did not fail.
What do you mean with "runs mostly successful", though? The failing checks?

There was also a failing unit test, now fixed. But the other example topaz128x128 will complete its calculations and then crash with a segfault on exit as the netCDF files are not properly closed. The code to fix this is in PR #383, which is one of the higher priority of the waiting PRs. It is tied into the rest of the code in that PR in such a way that I'd rather not do the work to disentangle just the section that would prevent this crash.


Provide a fill_template script

Hi.
I think this template project is a wonderful idea to play around with egui for ealuationa nd eventually starting something real with it.
But I found it kind of cumbersome to fill in the template consistently over all the files, so I wrote this little script I would like to share, in case it is deemed useful.

Thanks it is useful was about to go write one myself cuz doing the initial setup is a bit repetitive (But yours is still better than what I was going to do). Thanks.

I actually still ended up doing one as I wanted to customize yours a bit. Not crazy about the first iteration. I discovered cargo-generate and think I want to explore that option more, it seems promising and looks like it would simplify setup. (Mostly an FYI for others who also end up here)

my pleasure :)
I almost forgot I did this so long ago haha


Namespace

Set default namespace & subsystem (fastly and rt respectively)
Some README.md enhancements

I think we should remove the namespace and subsystem options entirely, but I figure I'll start here ;)

Tthe defaults provided in the binary itself (blank) should be the defaults in the Docker image, too.

Thanks for the link. I’m convinced. fastly_rt_ works, or maybe fastly_realtime_?


AnimatedSprite: onComplete never fires

I have a three-frame animation stored in frames. I'd expect that this code would fire whenever the third frame is reached:
const jack = new PIXI.extras.AnimatedSprite(frames);
jack.onComplete = () => {
	console.log("complete");
};
jack.play();

However, it doesn't look like it's ever fired. onFrameChange, on the other hand, seems to work as expected, so I'm sure that I'm using onComplete the right way.
Is this a bug or am I doing something wrong?

Looking at the source code, it seems like onComplete isn't fired for loops. This might be unexpected behavior for some. A current workaround is to check if the current frame is the last frame in onFrameChange.

It makes sense for onComplete not to fire if the animation is looped. A new onLoop callback would be a welcome PR imo. You can't rely on onFrameChange for a specific frame index in case the frame rate is low and you never actually hit that specific frame index

I agree with @themoonrat, adding a new event that represents looping is the backwards compatible way to do this change.

Anyone fancy putting together a PR to add onLoop to AnimatedSprite?

I can do that tomorrow

PR merged to dev. The next release will have an onLoop callback.

Thank you! 🎉


fix: Trim trailing non-word characters for hostname labels

Fixes an issue where hostname labels end in non-word characters which prevents certain browsers (e.g. Firefox) from loading the URL

@macko911 is there a way to test this change in real life?

is there a way to test this change in real life?

@mrseanbaines It is possible but it's not trivial. I wanted to write a guide on how to do so, if you don't mind waiting until early next week I would take time today to finish it, then use you as a guinea pig to see if the guide works, wdyt? 😄 https://www.notion.so/pleo/Guide-to-test-terraform-changes-before-merging-e639098417574a97ae180e9c9b7e644f

Ha, yep that works for me 👍

is there a way to test this change in real life?

@mrseanbaines It is possible but it's not trivial. I wanted to write a guide on how to do so, if you don't mind waiting until early next week I would take time today to finish it, then use you as a guinea pig to see if the guide works, wdyt? 😄 https://www.notion.so/pleo/Guide-to-test-terraform-changes-before-merging-e639098417574a97ae180e9c9b7e644f

Ha, yep that works for me 👍

The guide should be ready, feel free to add comments when something is unclear, it's pretty late so I'm not really sure it makes sense 😄


Remove a validation check of circuits for Sampler (follow-up of #8678)

Summary
#8678 introduced some validation check of circuits for BaseSampler.
But, @nonhermitian suggested relaxing a check to support mid-circuit measurements in the future.
See the thread for details. https://github.com/Qiskit/qiskit-terra/pull/8678#discussion_r965797741
Follow-up #8678
Details and comments
The check of measurements is moved from BaseSampler to Sampler (the reference impl) because Sampler requires it. This is the revert of a change of #8678.

For the record, I do not think there is a completely automated way to determine what measurements an end-user considers as part of the final output distributions.  Dynamic circuits make this impossible in general.

hmm? Does Sampler need to support mid-circuit measurements in the first place? I thought mid-circuit measurement could not be supported the various error-mitigation methods. But I am not aware of any discussions around this, and I don't know the range of circuits Sampler can take (i.e. should Sampler support dynamic circuits?).

I would say absolutely, otherwise how is it a "primitive"?  One can correct some mid-circuit measurements provided the results of those measurements are aggregated.  Several of us would like this, and I am re-tooling M3 to allow for it).  However, the single-shot results cannot be; it would have to be corrected in HW.

I still think this has issues (see my one comment). I think the only check that one can make at this stage is to raise only if there is no classical bits at all. That way at least you know that there is nothing to measure into, guaranteeing a empty dict output

This PR moves the check of classical bits and final measurement mapping from BaseSampler and Sampler (revert of #8668). So, this PR does the check only whether there is no classical bits at all.

I resolved conflicts to merge main.

I fixed the conflict.

This PR conflicts with #8760. So, I fixed a test with a note.


serviceWorker.ts typescript compilation fail with @types/node": "^13.13.0

Describe the bug
serviceWorker.ts created bye CRA using typescript template generate a compilation compilation error if you upgrade nodejs typedefs with @types/node": "^13.13.0
The problem can be resolved using @types/node": "^12.12.36 but I think it is more correct to define the behavior in case URL is null for the future.
Did you try recovering your dependencies?
Yes
npm --version
6.14.4

Which terms did you search for in User Guide?
"create-react-app" serviceWorker typescript compilation fail
Environment
npx create-react-app --info
npx: installed 99 in 4.647s

Environment Info:

  current version of create-react-app: 3.4.1
  running from /home/ev/.npm/_npx/21142/lib/node_modules/create-react-app

  System:
    OS: Linux 5.3 Ubuntu 18.04.4 LTS (Bionic Beaver)
    CPU: (8) x64 Intel(R) Core(TM) i7-3840QM CPU @ 2.80GHz
  Binaries:
    Node: 12.16.1 - ~/.nvm/versions/node/v12.16.1/bin/node
    Yarn: Not Found
    npm: 6.14.4 - ~/.nvm/versions/node/v12.16.1/bin/npm
  Browsers:
    Chrome: 81.0.4044.113
    Firefox: 75.0
  npmPackages:
    react: Not Found
    react-dom: Not Found
    react-scripts: Not Found
  npmGlobalPackages:
    create-react-app: Not Found

Steps to reproduce
npx create-react-app test01 --template typescript
cd test01
npm i<EMAIL_ADDRESS>npm run build

Expected behavior
In your code if you type new URL(param) param must be a valid string but if you set param as process.env.PUBLIC_URL this could be undefined.
Actual behavior
TypeScript error in .../src/serviceWorker.ts(32,7):
Argument of type 'string | undefined' is not assignable to parameter of type 'string'.
  Type 'undefined' is not assignable to type 'string'.  TS2345

    30 |     // The URL constructor is available in all browsers that support SW.
    31 |     const publicUrl = new URL(
  > 32 |       process.env.PUBLIC_URL,
       |       ^
    33 |       window.location.href
    34 |     );
    35 |     if (publicUrl.origin !== window.location.origin) {

Reproducible demo
Follow the instructions given in point [Steps to reproduce]

You can use temporary workaround – add ! to process.env.PUBLIC_URL. It works for me

If you don't want to use ! or your linters doesn't let you use !. You can do it simply this way:
// serviceWorker.ts

...
if (process.env.NODE_ENV === "production" && "serviceWorker" in navigator && process.env.PUBLIC_URL) {
    // The URL constructor is available in all browsers that support SW.
    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
    ...
}
...

Thank you! I was not looking for a workaround to avoid the compilation problem but the right way to proceed in case of process.env.PUBLIC_URL has been null.
My personal solution to solve the problem was using process.env.PUBLIC_URL || "" but I think the one suggested by @bartlomiejzuber is better.

I'm having the same issue but in a NextJS project.
It seems @types/node now merges my env.d.ts but says it can be either what I'd defined or undefined:

@raulfdm I don't know NextJS but I don't think it uses CRA as I described above.
The instructions I see are completely different.
Can you please specify the steps you took to get the same problem?

@raulfdm I don't know NextJS but I don't think it uses CRA as I described above.
The instructions I see are completely different.
Can you please specify the steps you took to get the same problem?

Unfortutanely it's a private project but basically I have defined a .env.d.ts like:
declare global {
  namespace NodeJS {
    interface ProcessEnv {
      NODE_ENV: string;
      APP_ENV: string;
      STATIC_HOST: string;
      // ... etc
    }
  }
}

export {};

Which in my current<EMAIL_ADDRESS>allow me to use everywhere node environment variables without problems (e.g.):
    const domain = process.env.WEB_CLIENT_HOST.includes(':')
        ? process.env.WEB_CLIENT_HOST.split(':')[0]
        : `.${process.env.WEB_CLIENT_HOST}`;

But with<EMAIL_ADDRESS>now Typescript complains about all those custom variables might be undefined, which forces me to use such solution as @JB1905 mentioned (!).

@erosval just to be clear, my comment was about having the exactly same issue in a different kind of project, which probably means the problem isn't from CRA but from<EMAIL_ADDRESS>

@raulfdm @erosval I see that root cause of this issue is already tracked here https://github.com/DefinitelyTyped/DefinitelyTyped/pull/44003, therefore if they decide to revert, there will be no longer any fix required.

thank you @bartlomiejzuber, this solve the question!


Tensorflow Windows Visual Studio Help

Hi all,
I'm VietNamese, my English is not good.
I'm programming mobile robot with Aria ,C++ ,OpenCv and Tensorflow
I'm using Windows and Visual Studio 2012. I can't setup Tensorflow C++.
how to setup Tensorflow C++ and connect to VS2012
I hope everyone will train and help me.
Thank you.

TensorFlow on windows needs at least Visual Studio 2015, due to required C++11 support.
You will need to upgrade visual studio otherwise you wont be able to compile TF on your system.
You can find some more information here:
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/cmake/README.md


Add Windows Terminal escape sequences

Windows Terminal supports escape sequences that reflect the progress in the tab title and taskbar.
An implementation (winget) is available here: microsoft/winget-cli/src/AppInstallerCLICore/VTSupport.cpp

As I am not a Windows user, I'm unlikely to write code for this. I'd be happy to review a PR, though. I think this could already be used by calling ProgressStyle::progress_chars(), though.


nvm ls-remote only shows io.js

nvm ls-remote only shows io.js versions. nvm ls-remote stable outputs N/A. do we only able to install io.js via nvm ?

This is an SSL issue - your machine doesn't have up to date SSL CAs, and so you can't curl to nodejs.org.
Duplicate of #673, #667, #638, #653; related to #669.


Cli: print info about number of uploaded bytes

Unlikely to raise any dissent. Merging, let me know if there's a problem

What happens if you run the test twice?


how to use OCO in Futures api ?

how to use OCO in Futures api ?

Currently, futures do not support OCO  orders. For guidance on using OCO, please refer to our documentation: https://www.kucoin.com/blog/everything-you-need-to-know-about-oco-orders-kucoin-tutorial


utterly-nord-plasma: switch to kdePackages to support flexible Qt/KF version (especially Qt6)

Description of changes

switch to kdePackages to support flexible Qt/KF version (resolve #315246)
update to version 3.2

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

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

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

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

1 package built:

utterly-nord-plasma

The packages works on my machine. (plasma6, wayland, nvidia)


WorldGuard Region priority not respected !

Good plugin. But... When you are in two regions at a time
==========  .. spawn_miniwarzone == Spawn
=   .... =
=   .... =
==========

example : Spawn (no pvp; priority 100) and spawn_miniwarzone (In the spawn region; pvp allowed; priority 200)
If someone pvp'ed in spawn_miniwarzone, they are knockbaced by the plugin :/ That's bad !
Anyway good job !

Dang, this will require lots of work to the backend of the plugin.

That will make your plugin a lot more helpful

Any update 'bout that ?

https://bukkit.org/threads/worldguard-api-pvp-flags.376662/ maybe?

Sounds cool

The issue is calculating the edges of a region (at least for forcefeilding).
I assume all regions are squares, and calculate the edges like that.
For forcefielding, I could switch to the algorithm used by CombatTagPlus, which is just brute-force calculating what is the edges (which would work on all regions).
The general issue though, is that when you configure a region (for example spawn), to be blocked it assumes the entire region should be blocked.
What I could do is make it possible for regions to be 'unblocked', so the plugin doesn't knock people back (as if they were in the region).
This issue also arises with forcefielding, so I have to fix it before I switch forcefielding algorithms.


e2e tests for thin provisioning feature

This commit adds e2e tests for the thin provisioning feature.
Signed-off-by: N Balachandran<EMAIL_ADDRESS>

I am unable to run the daemonset-lvmd tests successfully. It fails with :
STEP: creating pod with TopoLVM PVC

• Failure [5.789 seconds]
TopoLVM
/workspace/nithya/topolvm/e2e/suite_test.go:136
  hook
  /workspace/nithya/topolvm/e2e/suite_test.go:137
    should test hooks [It]
    /workspace/nithya/topolvm/e2e/hook_test.go:46

    stdout=pod/testhttpd created (server dry run)
    , stderr=Error from server (InternalError): error when creating "STDIN": Internal error occurred: failed calling webhook "pvc-hook.topolvm.cybozu.com": failed to call webhook: Post "https://topolvm-controller.topolvm-system.svc:443/pvc/mutate?timeout=10s": dial tcp <IP_ADDRESS>:443: connect: connection refused
    Error from server (InternalError): error when creating "STDIN": Internal error occurred: failed calling webhook "pvc-hook.topolvm.cybozu.com": failed to call webhook: Post "https://topolvm-controller.topolvm-system.svc:443/pvc/mutate?timeout=10s": dial tcp <IP_ADDRESS>:443: connect: connection refused

Would you please re-enable the snapshot sanity test in this PR? Or other PR?

I am unable to run the daemonset-lvmd tests successfully on my local VM. It fails with :

I can't reproduce it. Do you use kind? Would you check the topolvm-controller pods and cert-manager pods?

Would you please re-enable the snapshot sanity test in this PR? Or other PR?

The snapshot sanity test will fail until snapshots are implemented for  thick volumes as well. I was planning to look into PR https://github.com/topolvm/topolvm/pull/385 to see if we can get that as well.
What do you think?

I guess the sanity test will succeed when there is only a storage class that is using a thin pool. Could you please try it?
And would you please add a matrix to e2e-k8s-workflow.yaml to run it when succeeds?

I am unable to run the daemonset-lvmd tests successfully on my local VM. It fails with :

I can't reproduce it. Do you use kind? Would you check the topolvm-controller pods and cert-manager pods?

This is the same failure as in https://github.com/topolvm/topolvm/runs/7468191108?check_suite_focus=true. I'm not sure how to debug this. Please let me know if you know how.

I guess the sanity test will succeed when there is only a storage class that is using a thin pool. Could you please try it? And would you please add a matrix to e2e-k8s-workflow.yaml to run it when succeeds?

Would it be ok if I take this up in a separate PR? I am looking into the config parameters for the csi sanity test to see if we can do anything there.

I guess the sanity test will succeed when there is only a storage class that is using a thin pool. Could you please try it? And would you please add a matrix to e2e-k8s-workflow.yaml to run it when succeeds?

Would it be ok if I take this up in a separate PR? I am looking into the config parameters for the csi sanity test to see if we can do anything there.

We can run the csi-sanity tests against the "thin" device class with the following change:

+       // csi.storage.k8s.io/fstype=xfs,topolvm.cybozu.com/device-class=sbvglvm
+       volParams := make(map[string]string)
+       volParams["csi.storage.k8s.io/fstype"] = "xfs"
+       volParams["topolvm.cybozu.com/device-class"] = "thin"
+
        tc := sanity.NewTestConfig()
        tc.Address = path.Join(baseDir, "/node/csi-topolvm.sock")
        tc.ControllerAddress = path.Join(baseDir, "/controller/csi-topolvm.sock")
        tc.TargetPath = path.Join(baseDir, "/node/mountdir")
        tc.StagingPath = path.Join(baseDir, "/node/stagingdir")
        tc.TestVolumeSize =<PHONE_NUMBER>
+       tc.TestVolumeParameters = volParams

However, this would mean that the csi-sanity would not be run against the thick device class. @llamerada-jp  Is that acceptable?

This is the same failure as in https://github.com/topolvm/topolvm/runs/7468191108?check_suite_focus=true. I'm not sure how to debug this. Please let me know if you know how.

It seems to have been reproduced. I'm making PR to fix it.

However, this would mean that the csi-sanity would not be run against the thick device class. @llamerada-jp Is that acceptable?

We should run tests using both thin and thick volumes. But it is not possible currently to test those cases at the same time as you know.
How about adding a matrix for e2e-k8s-workflow.yaml to test as follows?
thick: existing pattern

using thick storage class
skip tests for snapshot

thin: a new pattern

using thin storage class
run tests for snapshot

Would it be ok if I take this up in a separate PR?

Either is OK. You can choose the way that you feel fits. Would you tell us which one is chosen after deciding?

It seems to have been reproduced In my local env. I'm making PR to fix it.

We had merged the PR(https://github.com/topolvm/topolvm/pull/542) to fix that issue. Would you please rebase?

Would you please add a test pattern for deleting thin PVC?

Done.


Replace all remaining (breaking) references to Packet

All non-breaking changes have been made. Remaining breaking changes still need to be done.

Repo name terraform-packet-distributed-minio can be changed to terraform-distributed-minio
git clone https://github.com/packet-labs/terraform-packet-distributed-minio.git
About section

About
packet-distributed-minio is a Terraform template that will deploy Minio distributed on Equinix Metal baremetal.

This is basically done, except that we need to actually rename the repo. I think you have the rights to it @DailyAlice ? I am not an admin on this repo. It needs to become terraform-distributed-minio.


Non integer framerates

Do you have any plans to support generation of non integer framerates such as
NTSC (30/1.001) or the 23.976/23.98 Film'ish ones ?

Looking at the command line arguments, it looks like you can already specify a non integer tick rate for a timeline. (see lines 92 and 93 of src/testsetupcmdline.py).
Have you found any part of the project where it is not possible to specify the require frame rate?

Sorry I did not make my self clear, the generation of test material, is what I was after.
https://github.com/bbc/dvbcss-synctiming/blob/master/test_sequence_gen/src/generate.py#L175 see test_sequence_gen/src/generate.py line 175
which relies on https://github.com/bbc/dvbcss-synctiming/blob/master/test_sequence_gen/src/generate.py#L67 line 67

Ah, I understand.
To avoid a massive rewrite in can probably be hacked in relatively easily by adding a "x1.001" command line option:

To select a suitable "pattern", then picking the numerically closest from that existing list is probably acceptable.
The image drawing code could then simply pretend, for the purposes of generating video frames, that it is running at the integer rate. Might need to suppress generating a "hh:mm:ss:ff" graphic to avoid being misleading.
The audio rendering code would need to pretend it is running at a slightly faster sampling rate (x1.001) when calculating where to begin and end each beep.
The timings and fps saved into the metadata file would need scaling by x1.001

I don't personally plan to make the changes, but contributions are very welcome.