Can't view HandRigging plugin mesh on Android mobile

I'm trying to connect a second device using the Leapjs-network plugin. I've got the data being piped over WebRTC and I can see the Hand mesh moving if I view in two separate connected desktop browsers but I can't see the Hand mesh appearing on a mobile browser.
I was wondering if you'd successfully managed to connect a mobile device and see the Hand mesh moving. It would be good to clarify if you think this should be possible and if you could tell me what device and browsers you managed to connect successfully. Its hard to tell if I have a hardware or software limitation.
I have a Three.Js texture error in Chrome for Android, which may be a separate issue. The texture error varies depending on which version of Three.js I'm using (Either S3TC or OES) but Firefox for Android looks like its working OK and throws no rendering errors.
I'm using ADB remote debugging for Firefox on Android and I get the following error messages
Error: WebGL: Exceeded 2 live WebGL contexts for this principal, losing the least recently used one. (From Three.js)
TypeError: this is undefined
    this.remoteFrameLoop = function() {

        var frame, frameData;
        if (this.controller.streaming()) {// <--here
          return;
        }

(From the LeapJs-network plugin) inside the remoteFrameLoop, but I think thats probably just caused by the first frame where my hand is not present so no data is available
and a couple of deprecation warnings from Peer.Js about adding the IceCandidate which I think probably aren't important
Would really appreciate any advice you might have. I think I've hit a dead end here

Hi @mairead and thanks for using leapjs-network! I haven't tried the mobile issue your talking about, but maybe the plugins you're using is adding WebGL contexts than you need? Are you loading the rigged-hand plugin, for instance? A bit of code would help tracking down the TypeError a bit better.

Hey Raimo, So I have two application servers. One is running an application that the Leap is plugged into
window.controller = new Leap.Controller({
  background: true,
  checkVersion: false
});
controller.use('networking', {
  peer: new Peer({key: 'vg930sy60kck57b9'}),
  plotter: new LeapDataPlotter()
})
controller.use('riggedHand', {
});
controller.connect();
var peer = controller.plugins.networking.peer;
document.getElementById("bigred").onclick = function(){
    var remoteId = document.getElementById("connectionId").value;
    controller.plugins.networking.connect(remoteId);
    peer.on('connection', function(conn){
        console.log("new connection", conn)
    });
}
controller.on('frame', function(frame) {
    var remoteId = document.getElementById("connectionId").value;
});

The second is pulling in the incoming data and trying to animate the rigged hand on a mobile browser. I can see the frame data getting passed over. I just can't see the rigged Hand mesh appearing on the screen.
window.controller = new Leap.Controller({
      background: true,
      checkVersion: false
});
controller.use('networking', {
    peer: new Peer({key: 'vg930sy60kck57b9'})
});
controller.use('riggedHand', {

});
var RemoteApp = new Peer('remoteApp', {key: 'vg930sy60kck57b9'});
var peer = controller.plugins.networking.peer;
peer.on('connection', function(conn){
    conn.on('data', function(data){
	    //console.log(data)
	    //outputDebugging.showLeapData(data.frameData);
    });
});

I'm using the following Leap plugins: protocol-events, plugins, networking, riggedHand and Leap data plotter and the Peer Js lib and Three.js v70, although I've swapped in a few of the latest versions of Three and that doesn't seem to resolve the issue.
Ultimately what I'd like to do is pass the frame data over into a separate Three.js VR application which is taking the accelerometer data from the mobile device and so I can use accelerometer data and leap frame data in the same WebGL context to render the Three.js screen.
The only way to get the Leap data onto the browser on the mobile device is to use websockets or webRTC which is how I came across the Leapjs-networking lib. I did have an earlier prototype using plain websockets to pipe the frame data from the websockets straight into the browser but I think the streamed data had a slightly different footprint and I was wondering if that is the function of the frameSplicer and frame Packer in this plugin. To repackage data sent over a socket and then reconstruct in a way the riggedHand can utilise
At the moment it would appear that the mobile device isn't receiving the frame data to make the Hand appear.

If it helps I can stick up a demo app somewhere or put the repos on github?

So I've been looking at this a bit more this afternoon. It would appear as if the issue in Firefox is caused by the return window.requestAnimationFrame(frameSplicer.remoteFrameLoop); not setting up a repeating loop, so I'm guessing the HandRigging never has a chance to kick in because the frame rendering isn't taking place.
https://github.com/leapmotion/leapjs-network/blob/master/build/leap.networking-0.1.0.js#L116
In Chrome you can see the requestAnimationFrame getting called repeatedly, but in Firefox it stops after it reaches this is undefined.
Am I right in thinking remoteFrameLoop function is initially called in the setTimeout after a connection is opened?
What I see is the FrameSplicer.remoteFrameLoop is called once and the value of this is the FrameSplicer and then its called a second time and this is undefined.
In Chrome I either get the FrameSplicer object as the value of this inside the loop, or what looks like the window object. I've attached a couple of screenshots of my console windows.

You're probably right there.
However, something that I would try to look into is controller.use('riggedHand', { }) and passing it the Three.js canvas/context, because it builds its own AFAIK if you don't connect your existing canvas to it:
https://github.com/leapmotion/leapjs-rigged-hand/blob/master/src/leap.rigged-hand.coffee#L249

Hi, I just wanted to let you know I finally got something working. I came across a note in the rigged hand docs, saying if you set the scene you also have to set the renderer, so its possible I might not have been passing in both. Also I switched out a reference in the network plugin to this for the actual frameSplicer object reference to get rid of the Firefox issue.
 this.remoteFrameLoop = function() {
        //console.log("this when called by requestAnimationFrame", this)
        //console.log("framespliver called by requestAnimationFrame", this)
        var frame, frameData;
        // replace this with object
        if (frameSplicer.controller.streaming()) {
        // if (this.controller.streaming()) {
          return;
        }
        frameData = {
          hands: [],
          pointables: []
        };
        frameSplicer.addRemoteFrameData(frameData);
        frame = new Leap.Frame(frameData);
        frameSplicer.supplementFinishedFrame(frame, frameData);
        // replace this with object
        frameSplicer.controller.processFrame(frame);
        //this.controller.processFrame(frame);
        //console.log('value of frameSplicer ',frameSplicer)
        return window.requestAnimationFrame(frameSplicer.remoteFrameLoop);
      };

I've come across another issue which is intermittent but I thought I'd mention it in case anyone else is having the same issue. My mobile device occassionally has trouble connecting. I've isolated it down to this line in FrameSplicer.prototype.addRemoteFrameData
if ((new Date).getTime() > (remoteFrame.sentAt + this.options.frozenHandTimeout)

It seems as if the remoteFrame.sentAt timestamp is sometimes really far behind the current timestamp which means the device won't display the frameDate being passed across.
I guess it could be network latency. I've definitely noticed that the motion on a mobile device suffers latency issues over time, whereas connecting another browser on my desktop seems to not to.
I've put a really gross hack in to bump up the timeout value for now to force the rigging to appear but I'd be keen to know if other people have the same issue and whether they've manage to resolve it

Thank you for the note! Excited to hear how your mobile project goes.

Just curious @mairead : did you need to actually run a node server on your android device to do this?  I'm trying to do get leapmotion to work with my iphone in google cardboard and was hoping i didn't actually have to run a node emulator to do this but be able to just point either the mobile ios v8 safari or chrome browsers to regular separate web server.  Thanks!

Hi Julia,
I can't work out where to reply to you on github so I hope you get this
message.
The node servers aren't running on the mobile device. I have a server
running on my local desktop machine and then I'm pointing a web browser to
the node server running the client side hand plugin.
For some reason the leap data recorded from the USB and piped into the leap
websocket isn't available to the mobile device browser. I don't know why
this is. their documentation suggests you should be able to point it to any
IP but my application would only work if the data was coming into the
localhost and then I'm using a bit of a hack with the web RTC to pipe the
data to another server.
Ideally this step shouldn't be required but I spent a lot of time trying to
force my mobile device to connect to the Leap socket before eventually
going down the RTC route. This might be my mistake though I'm not
suggesting this is the only/best solution.
On Sat, Aug 8, 2015 at 11:00 PM, Julia Jacobs<EMAIL_ADDRESS>wrote:

Just curious @mairead https://github.com/mairead : did you need to
actually run a node server on your android device to do this? I'm trying to
do get leapmotion to work with my iphone in google cardboard and was hoping
i didn't actually have to run a node emulator to do this but be able to
just point either the mobile ios v8 safari or chrome browsers to regular
separate web server. Thanks!
—
Reply to this email directly or view it on GitHub
https://github.com/leapmotion/leapjs-network/issues/2#issuecomment-129054871
.

cc’ing leap motion developers to see if they can help.
Sorry I removed my comment because I figured you didn’t do this.
I appreciate the response.  I’m having the same issue.  I was not able to get the leapmotion data from my laptop by pointing to my laptop IP either.
I jailbroke my iPhone and am able to install a jailbreak nodeJS hack and ssh into the filesystem.
I’m going to see if I can first:
Move https://gist.github.com/jewelsjacobs/114f579c9e72dad57ec5#file-leapmotion-network-html https://gist.github.com/jewelsjacobs/114f579c9e72dad57ec5#file-leapmotion-network-html to the iPhone and open it in the safari mobile browser using a jailbreak hack that lets you open files in mobile safari while also running it on the laptop.
If that doesn’t work, actually try running "grunt serve" off of the iPhone directly.
If you have any code I can poach that you feel might help or any additional information it would be very much appreciated!
Thanks!
@jewelsjacobs

On Aug 9, 2015, at 4:35 AM, mairead<EMAIL_ADDRESS>wrote:
Hi Julia,
I can't work out where to reply to you on github so I hope you get this
message.
The node servers aren't running on the mobile device. I have a server
running on my local desktop machine and then I'm pointing a web browser to
the node server running the client side hand plugin.
For some reason the leap data recorded from the USB and piped into the leap
websocket isn't available to the mobile device browser. I don't know why
this is. their documentation suggests you should be able to point it to any
IP but my application would only work if the data was coming into the
localhost and then I'm using a bit of a hack with the web RTC to pipe the
data to another server.
Ideally this step shouldn't be required but I spent a lot of time trying to
force my mobile device to connect to the Leap socket before eventually
going down the RTC route. This might be my mistake though I'm not
suggesting this is the only/best solution.
On Sat, Aug 8, 2015 at 11:00 PM, Julia Jacobs<EMAIL_ADDRESS>wrote:

Just curious @mairead https://github.com/mairead : did you need to
actually run a node server on your android device to do this? I'm trying to
do get leapmotion to work with my iphone in google cardboard and was hoping
i didn't actually have to run a node emulator to do this but be able to
just point either the mobile ios v8 safari or chrome browsers to regular
separate web server. Thanks!
—
Reply to this email directly or view it on GitHub
https://github.com/leapmotion/leapjs-network/issues/2#issuecomment-129054871
.

—
Reply to this email directly or view it on GitHub https://github.com/leapmotion/leapjs-network/issues/2#issuecomment-129145064.

@mairead has already gotten the rigged hand rendering in Chrome for Android, so my suggestions here may not be essential. Nonetheless, here are a few general hints for anyone attempting to use the leapjs rigged hand on Android/iOS.

If using the Leap Motion Android SDK to connect the device via the OTG port, see the README in the Google Drive folder. For https + secure WebSocket, I now include instructions for installing a localhost certificate starting with the openssl x509 -inform PEM -text -in cert.crt ... command, as well as caveats when testing insecure WebSocket.
If reading the WebSocket output directly from a desktop server's IP address, be sure to run leapd/LeapSvc with --websockets_allow_remote. However, if you are proxying the data such that it would appear to come from localhost on the mobile device, this flag is probably not necessary.
We have not tested on iOS with Safari, but since there does not exist a native iOS Leap Motion SDK that runs on the phone/tablet, the above bullet regarding --websockets_allow_remote on the server likely applies.

Hi, sorry if I'm slow to reply. I am reading the comments but i have a 10 day old baby at home so, even when I can to the computer i can only type one handed.
Setting the remote flag didnt work for me but again that might be user error on my part.
@jewelsjacobs You can take a look at my repos here. They don't actually need to be in two separate Node servers but I was messing around and its ended up that way. Essentially my app is one client side app connecting to another over web rtc so they could both be served from the same Node backend.
https://github.com/mairead/leapserver
https://github.com/mairead/three-d-hand
Point the mobile browser to the port that three-d-hand is running on. You can run these both on the desktop too to check its actually working,
I've got some slides here which might give you a bit of background too, although I know slides without notes can be a bit pointless. There is video showing you what the app is supposed to look like though
http://www.emdeebeebee.com/webrebels


Add saveMinecraft into the server status

You should display a small icon next to servers that support this. So show that no chat report is used on the server, should be easy to add the icon with what ive done

Also,  I think this integration can be made more compatible by using a mixin to add that boolean field and implement some special interface specifying getter/setter methods for it on vanilla's ServerData, instead of replacing the object with a custom extension.

Closed in favor of more clean and up-to-date implementation in #169.


Paths implementation

This implements a simple paths implementation for easier integration into other workflows.
We could also implement a full resolve hook option here as well, but this seemed somewhat simpler for now.

Codecov Report

Merging #90 into master will increase coverage by 0.1%.
The diff coverage is 100%.

@@           Coverage Diff            @@
##           master     #90     +/-   ##
========================================
+ Coverage    90.8%   90.9%   +0.1%
========================================
  Files          12      12
  Lines        1044    1056     +12
========================================
+ Hits          948     960     +12
  Misses         96      96

Impacted Files
Coverage Δ

src/node-file-trace.js
93.1% <100%> (+0.29%)
:arrow_up:

src/resolve-dependency.js
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Just working on adjustment to this to ensure compatibility with node_modules resolution.

Directly supporting tsconfig.json baseUrl configuration could be an alternative but I must admit I'm not a fan of this resolution mechanism as no runtimes really support this sort of resolution apart from just the old AMD loaders.
Paths as written here more closely follows the import maps style of declaration, as opposed to the older AMD approach. I've also moved the paths application to happen after node_modules resolution so it behaves as a fallback for compatibility.
An alternative could be to make this configuration exactly like the ts baseUrl configuration, and then later as a follow up that could enable automatically inferring this.
I'm open to either approach though.

There is a longstanding feature request (even back from ncc) to support TS paths (#85).
Even if it's non-standard, we should provide a way for @now/node to convert TS paths to NFT paths.
The alternative is waiting another year or more to TS to support import maps (I'm not even sure if Node.js supports import maps yet).

@styfle it's no problem if we want to change it to align with ts paths. The main priority was to get the simplest approach working for the API usage (and avoid forking there), but I'm certainly not tied to this API.

@guybedford I like the idea of aligning NFT with Node, but I'm not sure how to convert TS paths to this format considering TS supports an array on the right hand side.
{
  "compilerOptions": {
     // This must be specified if "paths" is
    "baseUrl": ".",
    "paths": {
       // This mapping is relative to "baseUrl" and can have fallbacks
      "jquery": ["node_modules/jquery/slim", "node_modules/jquery/all"]
    }
  }
}

How would you write that with NFT?

@styfle supporting array paths here sounds like a worthy feature to me.


request to add parameter 'desired_max_num_nodes'

For functions 'to_dense_adj' and 'to_dense_batch' in utils package, sometimes it requires to extend the dimension of feature matrix or adjacency matrix to 'desired max number of nodes' but not equal to the max number of nodes in a batch.

Thanks :)


[connectivity_plus] Upgrade dbus dependency

dbus dependency in connectivity linux is outdated

Yet better, port to ready-made nm now that it exists.

@jpnurmi there is a new version for https://pub.dev/packages/nm,

Upgrading the dbus package as requested should be straightforward and less risky. Porting to nm would be the right thing to do, but it means basically rewriting the package. nm.dart just didn't exist when connectivity_plus_linex was implemented, so I had to access the D-BUS API directly.


Using AwesomeSpawn to set time and timezone rather than miqnet.sh

Call the command to set time and timezone directly rather than using miqnet.sh through the Env class.

Is set-timezone the parameter key or is it a command?

Is it safe to leave those values unquoted if they might have spaces in them?

Yes, awesome_spawn completely handles proper escaping of strings.

Ah nice, I'm a bit unclear about how AwesomeSpawn deals with some of the command line parameters

I should update the documentation to remove that case, because although it works, it's not recommeneded anymore.  We've since added clearer param notation with straight Arrays and allowing bare keys for params that don't require values...
So, this would be how I'd expect it to be passed:
new_date, new_time = "2015-09-24", "11:27:52" # I just faked it since I don't know what it looks like
AwesomeSpawn.build_command_line("timedatectl", ["set-time", "#{new_date} #{new_time}", :adjust_system_clock])
# => "timedatectl set-time 2015-09-24\\ 11:27:52 --adjust-system-clock"

Allows us to remove time operations from miqnet.sh here https://github.com/ManageIQ/manageiq-appliance/pull/29

@Fryguy Ah I see. I was using:
AwesomeSpawn.run!("timedatectl", :params => ["set-time", "#{new_date} #{new_time}", :adjust_system_clock])

The params symbol isn't needed with straight array notation.  I'll make the change.

Sorry, I used build_command_line which has a different interface.  You need the :params for run.

Requires https://github.com/ManageIQ/linux_admin/pull/122

@gtanzillo @Fryguy please review

Requires https://github.com/ManageIQ/manageiq/pull/4558 for gemfile change.

@jrafanie @gtanzillo Can we merge this?

:+1: I'm ready to merge this one. @jrafanie can you just give is a once over before first?

LGTM


MathJax not loading in Chromium for Android

We have an HTML page with the following script in header:
    <script type="text/javascript" async
            src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=AM_CHTML/">
    </script>

When we deploy it to windows phone, it works fine, when we deploy it to android we get the following error:

"Uncaught ReferenceError: MathJax is not defined"

You do not give enough of the details of your page to diagnose the issue for you.  The error message is likely coming from javascript running elsewhere on the page, not the script tag that you include.
Note that you have used the async parameter on the script tag, which means that the page will continue being processed (and other javascript will run) while MathJax.js is loading, so if your code elsewhere on the page tries to use the MathJax variable before this script has loaded, you will get the type of error that you are seeing.
Also, ...config=AM_CHTML/" should be ...config=AM_CHTML" (without the final slash, though I doubt that is the source of the problem).

@dpvc  my apologies. I was able to fix the issue and it has nothing todo with matjjax, although I would recoomend mathjax to update its documentation for android.
this was the fix for my issue:
http://stackoverflow.com/questions/14065279/include-mathjax-in-android-app


6.0 Feedback:  Run Log Issues

Overview
When viewing past runs there are some issues with data displayed.

Sometimes start and end times for steps are not shown in the run log.

Sometimes some steps do not have start and end times shown in the run log.

Cancelled runs show step-failed on the step where you cancelled.

Run duration in the protocol runs list does not match run time on the run log view.

The attached video has audio commentary.
https://user-images.githubusercontent.com/502770/177839457-b65e0ad3-4039-47d0-a2b6-7a9f14aabcde.mp4
Reproduce
smoke.zip
The above example is with the smoke test python protocol.
Take any short protocol you may run to completion and stack up a few runs and view the records.

closing for specific issue #11109


Error after last Update

If i run the configuration check I got this error:
Integration error: continuously_casting_dashboards - Requirements for continuously_casting_dashboards not found: ['PyYAML==6.0'].

Hi, please reboot your home assistant instance after updating. HA is unable to verify the configuration as it requires to be updated before doing so. Forcing a reboot is the only way to get this working (as long as you have updated both CCD and HA)👍

Closing this issue. If you still have issues after a reboot, please re-open the ticket.


Update icons for tab navigation

Please update the icons for the tab navigation according to the new design. Export icons as SVG from Figma

Please also rename the payment tab to Transfer as shown above in the screenshot. Thanks


proposal: runtime/metrics: define a recommended set of metrics

Introduction
With each Go release the set of metrics exported by the runtime/metrics grows in size. Not all metrics are applicable to all cases, and it can become difficult to identify which metrics are actually useful. This is especially true for projects like OpenTelemetry and Prometheus which want to export some broadly-applicable Go runtime metrics by default, but the full set is overwhelming and not particularly user-friendly.
Another problem with collecting all metrics is cost. The cardinality of the default metric set is closely watched by projects like Prometheus, because downstream users are often paying for the storage costs of these metrics when making use of hosted solutions.
This issue proposes defining a conservative subset of runtime metrics that are broadly applicable, and a simple mechanism for discovering them programmatically.
Proposal
There are two parts to this proposal. The categorization of some metrics as "recommended" by the Go toolchain, and the actual mechanism for that categorization.
To start with, I would like to propose documenting such a set of metrics as "recommended" at the top of the runtime/metrics documentation. Each metric is required to have a full rationale explaining its utility and use-cases. The "recommended" set is intended to hold a lot of weight. We need to make sure the reason why we promote a particular metric is well-documented. The "recommended" set of metrics generally follows the compatibility guarantees of the runtime/metrics package. That being said, a metric is unlikely to be promoted to "recommended" if it's not likely to just exist indefinitely. Still, we reserve the right to remove them.
Next, we'll add a Tags []string field to metric.Description so that these metrics can be found programmatically. We could get by with a simple boolean field, but that's inflexible. In particular, what I'd like to avoid is having dedicated fields for future categorizations such that they end up non-orthogonal and confusing.
The tag indicating the default set will be the string "recommended".
Proposed initial metrics
Below is an initial proposed set of metrics. This list is intended to be a conservative and uncontroversial set of metrics that have clear real-world use-cases.

/gc/gogc:percent - GOGC.

Rationale: This metric describes the GOGC parameter to the runtime, which sets the CPU/memory trade-off of the GC.

/gc/gomemlimit:bytes - GOMEMLIMIT.

Rationale: This metric descibes the GOMEMLIMIT parameter to the runtime, which sets a soft memory limit for the runtime.

/gc/heap/allocs:bytes - Total bytes allocated.

Rationale: This metric may be used to derive an allocation rate in bytes/second, which is useful in understanding GC resource cost impact. In particular, it's useful for diagnosing regressions in production.

/gc/heap/allocs:objects - Total individual allocations made.

Rationale: This metric may be used to derive an allocation rate in objects/second, which is useful in understanding memory allocation resource cost impact. In particular, it's useful for diagnosing regressions in production.

/gc/heap/goal:bytes - GC heap goal.

Rationale: This metric is useful for understanding GC behavior, especially when tuning GOGC and GOMEMLIMIT, and a close approximation for heap memory footprint.

/memory/classes/heap/released:bytes - Current count of heap bytes that are released back to the OS but which remain mapped.

Rationale: This metric is necessary for tuning GOMEMLIMIT. It is also necessary to understand what the runtime believes its own physical memory footprint is, as a subtraction from the total.

/memory/classes/heap/stacks:bytes - Current count of bytes allocated to goroutine stacks.

Rationale: This metric is necessary for understanding application memory footprints, specifically those that users have some control over and may seek to optimize.

/memory/classes/total:bytes - Total Go runtime memory footprint.

Rationale: This metric is necessary for tuning GOMEMLIMIT. It's also useful for identifying "other" memory, and together with /memory/classes/heap/released:bytes, what the runtime believes the physical memory footprint of the application is.

/sched/gomaxprocs:threads - GOMAXPROCS.

Rationale: This metric is a core runtime parameter representing the available parallelism to the application.

/sched/goroutines:goroutines - Current count of live goroutines (blocked, running, etc.).

Rationale: This metric is useful as a proxy for active work units in many circumstances, though it also includes leaks. Supplement with a goroutine profile for more detail, or app-specific concurrency counters (for example, to track the number of active http.Handlers).

/sched/latencies:seconds - Distribution of time goroutines spend runnable (that is, not blocked), but not running.

Rationale: This metric is a measure of scheduling latency that is useful as a fine-grained proxy for overall system load. For example, diffing the distribution over short time windows can provide visibility into the latency impact of uneven load. This metric is battle-tested and has been found to be useful in a variety of scenarios.

This results in 10 uint64 metrics and 1 Float64Histogram metric in the default set, a significant reduction from the 81 metrics currently exported by the package.
Here are a few other metrics that were not included.

/memory/classes/heap/objects:bytes - Current count of bytes allocated.

Rationale: It is already possible to derive this from total allocations and frees.

/memory/classes/metadata/other:bytes - Runtime metadata, mostly GC metadata.

Rationale: We expect to break this category out as specific things that are useful to measure come up. This does not indicate good longevity.

/gc/heap/frees:bytes - Total bytes freed.

Rationale: This metric may be used to compute the total amount of live+unswept heap memory, with /gc/heap/allocs:bytes. Not that useful on its own, and live+unswept heap memory isn't a terribly useful metric since it tends to be noisy and misleading, subject to sweep scheduling nuances. The heap goal is a much more reliable measure of total heap footprint.

/gc/heap/frees:objects - Total individual allocations freed.

Rationale: This metric may be used to compute the total number of live objects, with /gc/heap/allocs:objects. Not that useful on its own, and the number of live objects on its own also isn't that useful. Together with /gc/heap/frees:objects, /gc/heap/allocs:bytes, and /gc/heap/frees:bytes it can be used to calculate average object size, but that's also not very useful on its own. The distribution of object sizes is more useful, but the metric is  currently incomplete, as it currently buckets all objects >32 KiB in size together.

/godebug/non-default/* - Count of instances of a behavior change due to a GODEBUG setting.

Rationale: While counting instances of non-default behavior is important, the usage of these particular metrics is intended to be used more on a case-by-case basis. Consider a team upgrading their go.mod version. The default behavior of their programs may change due to the upgrade, but because they're using the new defaults, these metrics won't actually be updated. If something goes wrong due to the new defaults, these metrics aren't that helpful in identifying that it's due to the new default behavior. Instead, these metrics are helpful for eliminating remaining sources of non-default behavior once opted-in.

Alternatives
Only documenting the recommended set
One alternative is to only document the set of recommended metrics. This is fine, but it also runs counter to runtime/metrics' original goal of being able to discover metrics programmatically. Some mechanism here seems necessary to keep the package useful to both humans and computers.
A toolchain-versioned default metrics set
Originally, we had considered an API (for example, metrics.Recommended(...)) that accepted a Go toolchain version and would return the set of default metrics (specifically, a []metrics.Description) for that version. All the metrics within would always be valid to pass to metrics.Read.
You could also imagine this set being controlled via the language version set in the go.mod indirectly via GODEBUG flags. (That is, every time we would change this set, we'd add a valid value to GODEBUG. Specifically something like GODEBUG=runtimemetricsgo121=1.)
Unfortunately, there are already a lot of questions here about stability and versioning. Least of which is the fact that toolchain versions, at least those reported by the runtime/debug package, aren't very structured.
Furthermore, this is a type of categorization that doesn't really compose well. If we ever wanted new categories, we'd need to define a new API, or possibly dummy toolchain strings. It's also a much more complicated change.

@dashpole Out of curiosity, would OpenTelemetry use the Tags []string field at all, or is there a desire to tightly control the metrics exported by default? Same question for @bwplotka for Prometheus. The purpose of this field is to stay in line with the spirit of this package, which is to make as much information programmatically available as possible.

Out of curiosity, would OpenTelemetry use the Tags []string field at all, or is there a desire to tightly control the metrics exported by default?

We would likely use it as part of the tests for the package as a way to verify that we are exposing all of the recommended metrics to users.  We would probably not use it for programmatic generation of new metrics.

As @rsc said in 2021 (https://github.com/golang/go/issues/43555), Expvar is a bit left behind at this point. JSON is a very popular format for developers. Can any decision about runtime.Metrics take Expvar and runtime.Memstats into consideration?

@MikeMitchellWebDev It's true that expvar is missing runtime/metrics data, but it's unclear which metrics should be added and how. Please reply on https://github.com/golang/go/issues/43555; this proposal is not the right place to discuss changing expvar. See also #61638 which isn't directly related, but maybe should be considered as well in any rethink of expvar.
Lastly, note that runtime.MemStats is effectively deprecated over runtime/metrics, and the latter should be preferred in general (for a number of reasons, including additional metrics as well as better performance). The only reason it is not officially deprecated is because it provides stronger guarantees than runtime/metrics. I admit I haven't been very good about updating the MemStats documentation to make this clear. I'll try to find some time this week to fix that.

Hello hello, I'm Arthur from prometheus/client_golang team 👋
We have a different set of default metrics and I believe we can't just change the default exposed metrics without a major version bump. One approach we could use is to have a configuration option in client_golang "ExposeRecommendedMetrics", but I predict we'll have questions like "why the recommended metrics aren't the default?".
With that said, I like the idea of the Go team providing instructions about what metrics are worth paying the price to collect and store. I also like the idea of those instructions being programmatically available, we just need to evaluate if there's a need for a major version bump in client_golang and if it's worth the effort

@ArthurSens for some historical perspective see https://github.com/prometheus/client_golang/pull/955 and https://github.com/prometheus/client_golang/pull/1033
My suggestion was that client_golang would offer three main options for what is exported: "exactly what it did in the previous version", "the Go recommended metrics" and "everything that Go exposes". I imagine we can cope with the questions.

While I agree with the idea, 16 metrics is not really a minimal set. I would cut it down further to just 7 of the most essential ones. Or, recommendation could be an integer level in stead of a boolean, perhaps?

@ArthurSens for some historical perspective see prometheus/client_golang#955 and prometheus/client_golang#1033
My suggestion was that client_golang would offer three main options for what is exported: "exactly what it did in the previous version", "the Go recommended metrics" and "everything that Go exposes". I imagine we can cope with the questions.

Thanks for the extra context! Yeah, I agree we can offer the recommended metrics in some way :)

@mknyszek for "Recommended" histogram metrics (currently just /sched/latencies:seconds), are the bucket boundaries on histograms guaranteed to remain stable (i.e. no buckets removed)?

I'm asking about general stability (e.g. across go versions).

@dashpole No, they're not guaranteed to remain stable and have changed across Go versions. We've definitely removed buckets before.

Thanks for this, great work!
What's the end goal?

This is especially true for projects like https://github.com/open-telemetry/semantic-conventions/issues/535 and Prometheus which want to export some broadly-applicable Go runtime metrics by default, but the full set is overwhelming and not particularly user-friendly.

I wonder what is the exact intention and the end-goal behind this proposal. Is it to:
A. Convince the common instrumentation SDKs to give the Go team control over the default published metrics for the Go runtime? So the largest amount of Go applications possible have those common metrics OOTB, and adopt potential metrics changes as soon as they are rebuilt with a new Go version?
or...
B. To support a certain amount of users who wants to stay with the Go runtime "default" metrics that might change on Go version to version basis and there are fine with that.
C. Suggest what SDKs should add manually to the default set of metrics.
Picking a healthy, limited "recommended/default" set from the Go team is definitely helping for all of those. I love the recommendation mechanism too, easy to use to me. As co-maintainer of the Prometheus client_golang I fully support @ArthurSens words around adding a programmatic option e.g. WithGoCollectorRecommendedMetrics() that uses this. However, that will get you to the B only.
I wonder if A is realistic. Then if A is not possible at the moment, because e.g. OpenTelemetry and/or Prometheus client_golang (potentially popular metric SDKs) want to keep the influence on what's default (the current status quo), than is this proposal still viable?
I think to motivate SDKs to pursue A with Go team, we need to learn more about pros & cons here. What user will get out of it vs SDK adding manually some Go runtime metrics to default based on user feedback and the recent changes to recommended set? Some cons would be potentially different stability guarantees across Go team vs Otel vs Prometheus.
To sum up, is it A? Can we unpack pros & cons here for SDKs to assess those?
Recommended Metrics
TL;DR: Those make sense. /sched/latencies:seconds feels the most controversial for Prometheus, (usefulness vs cardinality) but only until we can put it in the new type (native histogram), then it should be fine.
Just to evaluate your proposed metrics and contribute to pros & cons of using Go recommended metrics as default, I diffed what client_golang has now vs recommended.
NOTE: All _memstats_ metrics come actually from the new Go runtime metrics, we just kept the name for stability (it's hard to rename metric from the user perspective).

client_golang
Go runtime

go_gc_duration_seconds

go_goroutines
/sched/goroutines:goroutines

go_info

go_memstats_last_gc_time_seconds

go_threads

go_memstats_alloc_bytes

go_memstats_alloc_bytes_total
/gc/heap/allocs:bytes

go_memstats_sys_bytes
/memory/classes/total:bytes

go_memstats_lookups_total

go_memstats_mallocs_total
kind of /gc/heap/allocs:objects but with tiny allocs

go_memstats_frees_total

go_memstats_heap_alloc_bytes

go_memstats_heap_sys_bytes

go_memstats_heap_idle_bytes

go_memstats_heap_inuse_bytes

go_memstats_heap_released_bytes
/memory/classes/heap/released:bytes

go_memstats_heap_objects

go_memstats_stack_inuse_bytes
/memory/classes/heap/stacks:bytes

go_memstats_stack_sys_bytes

go_memstats_mspan_inuse_bytes

go_memstats_mspan_sys_bytes

go_memstats_mcache_inuse_bytes

go_memstats_mcache_sys_bytes

go_memstats_buck_hash_sys_bytes

go_memstats_gc_sys_bytes

go_memstats_other_sys_bytes

go_memstats_next_gc_bytes
/gc/heap/goal:bytes

/gc/gogc:percent

/gc/gomemlimit:bytes

/sched/gomaxprocs:threads

/sched/latencies:seconds

To sum up, I think I Prometheus is really close to recommended ones, plus I would propose adding /gc/gogc:percent,   /gc/gomemlimit:bytes and  /sched/gomaxprocs:threads to Prometheus go collector runtime default as those are important runtime variables to consider.
With that.. it's only /sched/latencies:seconds left, so having a current default PLUS (deduplicated) recommended set as our default might be a potential option to consider depending on:

the pros & cons discussion I proposed above
stability guarantees
other team members sentiments

I wonder what is the exact intention and the end-goal behind this proposal. Is it to:
A. Convince the common instrumentation SDKs to give the Go team control over the default published metrics for the Go runtime? So the largest amount of Go applications possible have those common metrics OOTB, and adopt potential metrics changes as soon as they are rebuilt with a new Go version?
or...
B. To support a certain amount of users who wants to stay with the Go runtime "default" metrics that might change on Go version to version basis and there are fine with that.
C. Suggest what SDKs should add manually to the default set of metrics.

It's really C, in practice. B is nice for those that want it, but I don't think A is practical. Everyone is always going to be free to choose what metrics they collect and/or expose at any layer.
Really I think we're just trying to set a better foundation here than the existing, somewhat haphazard, "collect MemStats and a few other metrics from some of the other runtime and runtime/debug functions" that is fairly widespread at this point. It's a starting point for what I hope will be a slow-but-virtuous cycle of the ecosystem informing the recommended set, and the recommended set informing the ecosystem, so we get a high signal-to-noise ratio for observability.

[...] Those [recommended metrics] make sense. /sched/latencies:seconds feels the most controversial for Prometheus, (usefulness vs cardinality) but only until we can put it in the new type (native histogram), then it should be fine.

FWIW, my thought was that SDKs can just choose to skip inherently high cardinality types programmatically, like Float64Histogram.

To sum up, I think I Prometheus is really close to recommended ones, plus I would propose adding /gc/gogc:percent,  /gc/gomemlimit:bytes and  /sched/gomaxprocs:threads to Prometheus go collector runtime default as those are important runtime variables to consider.

That's a good sign IMO. I'm supportive of adding those. While they're likely to be exactly the same over time, the fact is that you can mutate automatically at runtime. As above, re: /sched/latencies:seconds, I think it's fine if SDKs want to leave out certain metrics because they pose problems for collection.

Epic. Thanks. Especially with this intention, LGTM.  💪🏽
Good effort allowing everyone to learn and adopt to new practices once they appear. We will be using recommended metrics in Prometheus SDK to stay close those as much as possible.


Automated cherry pick of #2877: fix glance save form url save md5

Cherry pick of #2877 on release/2.12.
#2877: fix glance save form url save md5

Codecov Report

:exclamation: No coverage uploaded for pull request base (release/2.12@1ca92f3). Click here to learn what that means.
The diff coverage is n/a.

@@              Coverage Diff               @@
##             release/2.12   #2880   +/-   ##
==============================================
  Coverage                ?   7.17%
==============================================
  Files                   ?     474
  Lines                   ?   75070
  Branches                ?       0
==============================================
  Hits                    ?    5386
  Misses                  ?   69231
  Partials                ?     453

Flag
Coverage Δ

#aFlag
7.17% <ø> (?)

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 1ca92f3...0618e8f. Read the comment docs.

/approve
/lgtm


[icu] Build error

Copy issue body from D:/rep/vcpkg/installed/vcpkg/issue_body.md

Please provide detailed error information, otherwise we will close this issue in a week.

We don't have enough information to solve this issue, unfortunately; if you have any more information to help us solve this, please reopen!


LINK-623 | Add Sentry to the project

Description
Report errors to Sentry
Closes
LINK-623

This feature was implemented in #7 so close this PR


Develop workflow for analyzing raw data files to identify primary keys or combined compound keys

Once we develop this workflow, we will be able to add an attribute to each model that lists what, if anything, makes each row unique. After we get all that in, the keys can be used by dat to diff the daily dumps as they arrive.

Once we work this out, we could potentially generate an issue for each model and then use them as small tasks in the next California Code Rush.

Pick a file
Point some csvkit or other CLI that runs through it and spits out an analysis of the fields. maybe the names of fields that are unique
Eyeball analysis of that spits out
Stick the keys on the corresponding Django model with some standard new attribute or something


INT B-19939 Diversion Reason in API

B-19939
Summary
This ticket adds a field for a diversion request's reason to the API. The field can be edited by the request diversion endpoint and viewed in any endpoint returning a full MTO Shipment. Generally followed how rejection reason was added to the reject shipment endpoint.
Upstream Dependency: B-19938
Verification Steps for the Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Have the Agility acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

[ ] Has the branch been pulled in and checked out?
[ ] Have the BL acceptance criteria been met for this change?
[ ] Was the CircleCI build successful?
[ ] Has the code been reviewed from a standards and best practices point of view?

Setup to Run the Code

Instructions for starting storybook
Instructions for starting the MilMove application
Instructions for running tests

How to test
I'd recommend testing in both the app, to ensure the existing request diversion button still works, and postman or swagger, to ensure the endpoint works fully as intended.
In the App

Create or Identify an approved HHG to request diversions on (PENDNG & BILWEI should work if they are fresh).
Access the office app.
Login as a TOO.
Select one of the moves identified above from your queue.
Navigate to the move task order page and locate the request diversion button.
Open the developer tools' network tab to capture the request we're about to send.
Click the request diversion button, the UI should show the request was made successfully.
Find the request named "request-diversion"
The request's payload should have a body containing a blank "diversionReason"
The response should be a 200 and includestatus: "DIVERSION_REQUESTED" and diversionReason: "". The diversion reason is blank so that the front-end can still send the request since a body is now required. The field will be made to require a non-blank string in a later ticket when the user is able to submit a reason.

In Postman

Create or Identify an approved HHG to request diversions on (PENDNG & BILWEI should work if they are fresh).
For authentication to use in Postman, access the office app and login as a TOO.
Obtain the ID and eTag of the shipment you intend to request as well as your the x-Csrf-Token
Submit a POST request to the following URL with the following body
URL:http://officelocal:3000/ghc/v1/shipments/{shipmentID}/request-diversion
Body {"diversionReason": "Your diversion reason"}
The response should include status: "DIVERSION_REQUESTED" and diversionReason: "Your diversion reason"
Optionally verify the reason you submitted is in the database in the mto_shipments.diversion_reason column.

Frontend

[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, Edge).
[ ] There are no new console errors in the browser devtools.
[ ] There are no new console errors in the test output.
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.
[ ] This change meets the standards for Section 508 compliance.

Backend

[ ] Code follows the guidelines for Logging.
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Database
Any new migrations/schema changes:

[ ] Follows our guidelines for Zero-Downtime Deploys.
[ ] Have been communicated to #g-database.
[ ] Secure migrations have been tested following the instructions in our docs.

Screenshots

I believe we have to update API spreadsheet with these changes. UI and postman/swagger tests all passed per instructions.

Spoke with Matthew about that. Sounds like that only applies to changes to the Prime API.

I believe we have to update API spreadsheet with these changes. UI and postman/swagger tests all passed per instructions.

Spoke with Matthew about that. Sounds like it only applies to changes to the Prime API. He'll confirm on Monday.

I believe that is correct, its just for Prime API. Its a way for them to track changes we have made to the Prime API.


[HOLD for payment 2023-07-26] dev: There is no consistency between the input field to enter task title and edit task title

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Open a chat
Click + in composer => assign task
Input title, Observe that it is not possible to enter multiple lines here
Next => Confirm
Click on task title
Edit title, Observe that multiple lines can be entered here

Expected Result:
There must be consistency between the creation and editing of the input task title box
Actual Result:
no consistency between the input field to enter task title and edit task title
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

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

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

Version Number: dev only
Reproducible in staging?: n/a
Reproducible in production?: n/a
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/9608b703-0433-441b-a025-c5950caf7754
Expensify/Expensify Issue URL:
Issue reported by: @namhihi237
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1688814642406699
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0118c6f4fd728fc15b
Upwork Job ID:<PHONE_NUMBER>333312000
Last Price Increase: 2023-07-11

Proposal
Please re-state the problem that we are trying to solve in this issue.
There must be consistency between the creation and editing of the input task title box
What is the root cause of that problem?
Here we have the difference between input title at create task and edit title:
Create:
https://github.com/Expensify/App/blob/60f48175c9e3342ef192d878218820e5ed5a76cd/src/pages/tasks/NewTaskDetailsPage.js#L93-L100
Edit:
https://github.com/Expensify/App/blob/60f48175c9e3342ef192d878218820e5ed5a76cd/src/pages/tasks/TaskTitlePage.js#L77-L86
Easy to see the difference here is the screen TaskTitlePage we allow autoGrowHeight.
What changes do you think we should make in order to solve the problem?
We should remove autoGrow Height from autoGrowHeight
                    <TextInput
                        inputID="title"
                        name="title"
                        textAlignVertical="top"
                        label={props.translate('task.title')}
                        defaultValue={(props.report && props.report.reportName) || ''}
                        ref={(el) => (inputRef.current = el)}
                    />

What alternative solutions did you explore? (Optional)

Proposal
Please re-state the problem that we are trying to solve in this issue.
title filed is multiline filed while editing title
What is the root cause of that problem?
Tilte filed is multiline filed
What changes do you think we should make in order to solve the problem?
remove the autoGrowHeight prop from TaskTitlePage.js also remove unnecessary prop textAlignVertical="top”
https://github.com/Expensify/App/blob/60f48175c9e3342ef192d878218820e5ed5a76cd/src/pages/tasks/TaskTitlePage.js#L77-L86

Proposal
Please re-state the problem that we are trying to solve in this issue.
There are two 2 issues in the video above.

the edited input is autoGrowHeight and there is no submitOnEnter.
(optional) the edited input autofocus make the cursor at the beginning.

What is the root cause of that problem?

the edited input has prop autoGrowHeight and no prop submitOnEnter while is the only input on the screen.
(optional) the autofoucs make the cursor at the beginning, it is a known issue in react-native, and similar issue in fixed in task description input.

What changes do you think we should make in order to solve the problem?

remove prop autoGrowHeight and prop submitOnEnter here.
https://github.com/Expensify/App/blob/60f48175c9e3342ef192d878218820e5ed5a76cd/src/pages/tasks/TaskTitlePage.js#L77

(optional) fix cursor issue in the video

onEntryTransitionEnd={() => {
    if(inputRef.current){
        inputRef.current.focus();
        if (inputRef.current.value && inputRef.current.setSelectionRange) {
            const length = inputRef.current.value.length;
            inputRef.current.setSelectionRange(length, length);
        }
    }
}}

What alternative solutions did you explore? (Optional)

Happy to investigate/fix this. Thanks for the ping

Tackling this internally

@laurenreidexpensify applied, thanks!

PR was deployed to staging 👏

@0xmiroslav can you please complete the BZ checklist? Once completed I can go on and issue payment.

Thanks @namhihi237, I sent you the offer on Upwork!
@0xmiroslav bump to complete the BZ checklist

Summarizing payment on this issue:

Issue reporter: @namhihi237 $250, paid via Upwork
Contributor: N/A
Contributor+: @0xmiroslav $1000, to be paid via Upwork  - Held on completing BZ checklist

Upwork job is here, no bonus as this was an internal PR

@stephanieelliott We can skip the checklist here and close this issue after paying reporting bonus.
cc: @jasperhuangg

Thanks guys! Ok, updated the payment summary, reporting bonus was paid out already so this one is all set


fix(#179): Program#defects() does not declare IOException

In this pull I've removed declaration of IOException from Program#defects() in order to simplify the interaction with Program.java class.
ref #179
History:

fix(#179): IOException declaration off
fix(#179): camel

@volodya-lombrozo please check

@volodya-lombrozo updated. Take a look, please

@h1alexbel thanks!


Change test for new version of tf-job-operator

I changed test for v1beta1 version of tf-job-operator and removed kubebench from workflow in testing.

This change is

/lgtm
/approve


feat: major refactor

This code includes the large refactor that was done on the battleships source repository, but removes any unnecessary data that the students don't need, like:

deprecated/ directory
protected player source code
test players
Makefile targets that build protected players

One thing that this refactor removes is 05_mean_player. The main branch of this repository includes it, but sadly the GitLab repo doesn't have that source code, so I wasn't able to compile one with the new Player.cpp class. The difference the new class brings is it handles the new protocol. If you plan on having this one in the group of protected test players, please add the source code to the GitLab repo so we can build it and move it over.
@kawfee I recommend pulling either the GitLab main, or this branch on Matt and trying it out, because I tried to zero out any code, but I don't have access to Matt where any bugs like that may occur.

When working on this refactor, I remember taking #1 spelling errors into consideration, so that PR may not fix anything if you merge this in.

@kawfee, ready to merge?
I could always go over some changes with you on a call during your office hours if you want


Users with same role are not able to view the same option menu (Admin-Configuration).

Milestone removed

Assignee removed

(Requirement from TEI)
RISCOSS does not allows to differenciate rights among users with the same role.


Wrong validation with optional=true and min/max

Hi, I just found that sometime the validation error was wrong when optional is true:
Here is my schema code example:
mobile_no: {type: String, label: 'Mobile Number', min: 8, max: 11},
office_no: {type: String, label: 'Office Number', optional: true, min: 8, max: 11},
home_no: {type: String, label: 'Home Number', optional: true, min: 8, max: 11},

My mobile_no is required,  office_no and home_no are both optional.
However, I often get error message max/min if I left them blank:
(These fields are all blank, the text inside was placeholder not input value)

it shouldn't be the same because optional field should be able to left empty otherwise it is not optional anymore.
Also I believe the required rule should be take priority to max/min validation rule:
For instance, when I left mobile_no blank, I should get error msg "Mobile No. is required" instead of "Mobile No. must be at least 8 characters", only after I entered sth and it is less than 8 characters that I should get "Mobile No. must be at least 8 characters".
In sum, What I want is that:

if the field is required and has max/min rules,  if field is "" or null or undefined, validation should return error msg "xxx  is required"
if the field is required and has max/min rules, and the field is a string with sth (eg. "de"), return error msg for max/min rules
if the field is optional,  first should check if field is "" or null or undefined,  if it is, do not validate max/min rules, otherwise it is not optional

I was not sure about what went wrong because sometimes I get "xxx is required" and sometimes I get "xxx must be at least 8 characters". Anyone has any suggestion on this?

@aldeed Good day! I am searching here and there and still don't know how to solve this issue, do you have any suggestion on this?

@ZhuQinglei Sorry for the delay in answering this. An empty string is considered a value, so it will then do the length validation. If you don't want that, you can change empty strings to null before validating the object.

You can also call obj = yourSchema.clean(obj, { trimStrings: true, removeEmptyStrings: true }) before you validate.

@aldeed Thank you! I will try with that


Setup celery

Setup celery and a task that monitors blocks every 15 seconds.
Make a decision whether to do this in rust or python.

Currently done in rust
For tasks that trigger in time intervals look into celery::beat!
We should stick to using a redis broker

Done


Feature Request: multiple destinations for bulk download

Hi Daniel, I am using your awesome scripts in my current project, an electron app that must download and recreate a file/folder structure from a server.
I am currently struggling with the intricacies of downloading a bunch of files respecting their original position in an existing folder structure: do you plan to add the possibility to set a different download path for each item in the bulkDownload function?
Thanks

hello, thank you! not really, I've never heard of that use case, how would you propose to implement this? How do you expect the API to be like?

Thanks for you answer
well you well implemented the bulk download function. It would be cool to
add each single download ad an object with the origin path and the
destination path instead of having a single destination path for all the
files to be downloaded.
So far I implemented a rough solution by just using single items download
yet this is going to be complex on the feedback of general progress of the
donwnload operation.
keep up the good work!
Il giorno sab 2 mar 2019 alle ore 07:33 Daniel Nieto <
<EMAIL_ADDRESS>ha scritto:

hello, thank you! not really, I've never heard of that use case, how would
you propose to implement this? How do you expect the API to be like?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/danielnieto/electron-download-manager/issues/32#issuecomment-468891387,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AJG_LuupvooVlbLuSkvlkA3AO2Fm2koGks5vShs1gaJpZM4bWfJD
.

+1

+1


Feature/issue 1/install configure podman

added buildah and skopeo installation, added linting and skip rules, added license and modified Readme

examples for buildah are too generic - more details needed like example (working) Dockerfile and Containerfile with a build command for it
https://github.com/containers/buildah/blob/main/docs/buildah-build.1.md


Install script

Create an install script that installs LibreBadge and all of its dependencies, (if any), and generates a secret key. Also prompts user for settings like timezone

Django's secret key generator
   def get_random_secret_key():
    """
    Return a 50 character random string usable as a SECRET_KEY setting value.
    """
    chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
    return get_random_string(50, chars)

A possible solution to generate a secret key
https://stackoverflow.com/questions/4664724/distributing-django-projects-with-unique-secret-keys
from django.core.management.utils import get_random_secret_key

def generate_secret_key (filepath):
    secret_file = open(filepath, "w")
    secret = "SECRET_KEY= " + "\""+ get_random_secret_key() + "\"" + "\n"
    secret_file.write(secret)
    secret_file.close()

try:
    from .secret_key import SECRET_KEY
except ModuleNotFoundError:

    SETTINGS_DIR = os.path.abspath(os.path.dirname(__file__))
    generate_secret_key(os.path.join(SETTINGS_DIR, 'secret_key.py'))
    from .secret_key import SECRET_KEY

Hi, Is this is feature available for grab. Would like to contribute.

Yes! Thank you! Welcome to LibreBadge! I am very excited to have another contributor!


Create Testversion with testdata

Create a development/test configuration and a production configuration
Ideally make two distinctive gradle build tasks

Add dummy data and a dummy account


[AutoPR workloads] java, mgmt, workloadssapvirtualinstance, tspconfig

Create to sync https://github.com/Azure/azure-rest-api-specs/pull/31148
This pull request has been automatically generated for preview purposes.

MUHAMMAD IHSAN ALI


added icon to exe for windows

Description

Created an ico with ImageMagick that fits all required sizes (directly from the logo.png download, I reverted the trimmed image it was too big imo).
This is supposed to only be for the exe file, but it seems to do the task bar and consolehost window if it exists, going to figure out why before merge.
Works for examples and game-template:

Leaving a 8x8 logo I made here incase you want a pixel perfect logo or avoid resolution problems (if any appear), it can't be upscaled automatically by the OS because that leaves it blurry, needs to be nearest neighbour.

Side notes:

How do you get desktop icons on Linux? Title bar and task bar should be working there as well with winit but haven't checked myself.

What's the difference between importing glutin::window::Icon and winit::window::Icon? rust analyzer only shows glutin but I just did winit since you already used winit imports.

I'm not sure what this means but I haven't noticed any problems:
https://github.com/nabijaczleweli/rust-embed-resource/tree/v1.8.0#errata

Unrelated to this PR but why did you decide using --bin over --example? Is it to avoid them being compiled in tests? Just curious, that's the only difference I see.
https://doc.rust-lang.org/cargo/reference/cargo-targets.html#binaries

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

I just used the bevy book for this, it consists of 2 parts:

embed-resource for windows exe icon + task bar (and console host for some reason idk)
winit for title bar and task bar, this causes some overlap between the 2 methods but I noticed the task bar icon from winit only works on windows on release builds not debug. Does the icon show up on task bar in a linux debug build?

There's just 1 problem with this now, winit doesn't load the image when used as a dependency like in the template. So the image has to be loaded in another way, need some help here @jjant.

Ok this is ready for merge if it looks fine on Linux, there's 1 small problem on windows where the icon in command prompt is low resolution. I tried various things to fix but didn't work, made an issue for it here: https://github.com/nabijaczleweli/rust-embed-resource/issues/56

Ok now I'm really done @jjant.


Violation of db constraints crashes the server

The server crashes if transaction to db is rejected.  The server should verify data from arg_scanner before sending them to db.

Fixed by: https://github.com/JetBrains/ruby-type-inference/commit/6e3adae5c8ad19bbfb12a08ee7370e94782dac26


Treat canonical and nicknames differently

Following
https://github.com/carltonnorthern/nickname-and-diminutive-names-lookup/pull/37

@carltonnorthern I saw you gave me push permission. Do you want me to just do whatever I want, or should I still run things by you and just use the permission to merge once I get your +1 ?

Lol, you've done more work on this project in the last few days than I have in the last few years.  I'd say feel free to push what you like but if you'd like a peer review I'm happy to keep doing that as well.


Change guideline for API versioning

Fixes #310.

:+1:

:+1:

@tkrop Can you resolve the conflict?

👍

:+1:


Training narrations for downloading

Dear Authors,
Thank you for the great work.
Would it be possible to provide the augmented narrations you used in Ego4D training for downloading?
Thanks

Sorry, found it in ego4d_train.pkl.


Swagger-UI: Show only GET operations

The PostgREST interface will be a read-only interface, other operations such as PUT, PATCH; DELETE are not supported and should be removed from the generated docs.

Pending https://github.com/PostgREST/postgrest/issues/1870
Another option is to rewrite the existing json struct returned on the root path.


updated doc

Changes Unknown when pulling fab0570d168bc4c511381f0feefa11b84335d779 on feature/append-logger-client into ** on develop**.

Changes Unknown when pulling fab0570d168bc4c511381f0feefa11b84335d779 on feature/append-logger-client into ** on develop**.


xLabelAngle

Hi, i am trying to apply xLabelAngle on my bar chart which doesnt seem to work
bar-xLabelAngle=10
any help would be apprieciated.

After #50 is merged and you update, you'll be able to use this with bar-x-label-angle="'90'".

thanks this worked :)

bar-chart
bar-data="debtOverview"
bar-x="DueDate"
bar-x-label-angle="'50'"
bar-y='["TyDecimal"]'
bar-labels='["TY"]'
bar-colors='["#1a96b4"]'
bar-resize="true"
bar-hide-hover="'auto'">

Hi @dAnK3L
it would be more easier to help if you try to reproduce your issue in tools like jsfidle.net and then share here
you can start by forking this sample and modifying it for your use case

Hi, i have updated the fiddle wth what i have with static data and the label doesn change angle..
https://jsfiddle.net/tqLgernc/

It won't work until the pull request I tagged is merged because it isn't currently supported by this plugin. It looks like I made a mistake in my request though and I'm sick today so I can't go in to fix it. I should have time next Tuesday.

do you think this will be done soon? its really urgent for me

I'll be back at work tomorrow. If you're using a js file, you could always temporarily use the version from #50.

this feature is already implemented on master
https://github.com/stewones/angular-morris-chart/search?utf8=✓&q=xLabelAngle

@dAnK3L
checkout this sample https://jsfiddle.net/stewones/8apkc98c/
I'll close but feel free to reopen or ask anything

This is a bar chart, it is implemented on line and area, but not bar.

@loren138 :+1:

fixed by #50
thx @loren138


[RayJob] Inject RAY_SUBMISSION_ID env variable for user provided submitter template

Why are these changes needed?
Inject RAY_SUBMISSION_ID env variable for the user provided submitter template to avoid double submission. With the submission ID, the second submission will be rejected by Ray, and users will get the following exception:
ValueError: Job with submission_id rayjob-sample-fjnb8 already exists. Please use a different submission_id.

Related issue number

Checks

[ ] I've made sure the tests are passing.
Testing Strategy

[x] Unit tests
[x] Manual tests
[ ] This PR is not tested :(

cc @andrewsykim

Can you add more details about the double submission issue in the PR description (or link to the issue) and explain how this fixes it?

Done


MWPW-134799: add scheduled MEP preview capability

Add 'preview on' and 'preview off' columns to the MEP manifest.
This will enhance the MEP manifest with the ability to preview scheduled changes.
The scheduled on/off time can be set using the later expression, always in the UTC timezone.
An automation tool, that will be developed later, can use on/off time in manifests to create the crontab.xlsx schedule.
Resolves: MWPW-134799
Discussion: MEP to show scheduled manifest
Sample Page doc
Sample manifest
Test URLs:

Before: https://main--milo--adobecom.hlx.page/drafts/mariia/testpage?martech=off
After: https://mwpw-134799-mep-preview--milo--adobecom.hlx.page/drafts/mariia/testpage?martech=off

@3ch023 I want to review this feature with you more closely. Might be easier to meet.

sure, let's sync offline

closed, since we decided on a different solution - will create a discussion for that.


FIX: multiple requests when opening modal windows

Fix issue: https://github.com/flask-admin/flask-admin/issues/2406

@irtimir @hasansezertasan Do we have information when this will be merged?

@irtimir @hasansezertasan Do we have information when this will be merged?

Hey, I forgot about this issue, I just made changes after the review and hope this fix will be added as soon as possible.

@hasansezertasan let's merge this if everything looks good?

@hasansezertasan let's merge this if everything looks good?

Let me check this once more 👍.


Change markdown exercise to be a refactoring exercise

The implementation we had for markdown wasn't entirely in line with what was
set out in x-common, so I've changed it here. Basically I took the original
implemntation that we had in the example.exs file and made it a whole lot
worse! One of my favorite ways to make something really bad is to use single
letter variable names instead of descriptive variables, so I've done that. I
also removed a bunch of pipe operators, used inconsistent string interplation
versus string concatenation, and added in some gnarly if statements for fun.
The tests all still pass, though!
Let's hope we never see code like this in our "real" lives, but I have to say
it was kind of fun to do! Let me know if this is too cruel and if I should make it a
little easier to handle, cause right now it might be too tough to refactor!
Closes #252

evil 😬  😰

Great! 🎉 ...I mean horrible! 😈


Checkout specific ref for llamacpp when building native libs

Thanks

When I run this in my branch, it ends up always using master. I'm debugging it now.

Oops, I guess I was a bit too quick on the merge there 😆

@jasoncouture it looks like it should be github.event.inputs. instead of github.input.events. according to docs


Replaced deprecated "FILE" with "#file" for Swift3 support.

Sorry. Read the comment on #4 too late.


[Languages] How to Build an IP Address Tracker with Mapbox API and Vue.

Writing sample(s):

https://egghead.io/blog/how-to-use-the-animate-on-scroll-aos-library-in-vue
https://www.freecodecamp.org/news/build-accessible-vue-applications/

Proposal Submission
Proposed title of the article
How to Build an IP Address Tracker with Mapbox API and Vue.
Proposed article introduction
An IP address is dynamic and can be used for different purposes in an application. With given access to a user's IP address, it's easy to find the location, time zone, and ISP of the user.
In this guide, we’ll build an  IP Address Tracker Application from scratch, using the vue.js framework and the Mapbox API. We’ll cover the process from building the front-end scaffolding up to implementing the API to handle the user's IP address, then go further to visualize the location on the map using the Mapbox API. At the end of this tutorial, readers would also be able to build and deploy the application on Netlify.
Key takeaways

Understanding of an IP Address.
The Features of the IP Address Tracker.
Scaffolding The Front End With Vue.js.
Integrating the APIs in the Vue App.
Creating Interactive Map Display with Mapbox API.

Article quality

In-depth guide particularly with Vue.js.
Step-by-step guidelines for beginners.

References
N/A

Sounds like a helpful topic - let's please be sure it adds value beyond what is in any official docs and/or what is covered in other blog sites. (the articles should go beyond a basic explanation - and it is always best to reference any EngEd article and build upon it).
Please be attentive to grammar/readability and make sure that you put your article through a thorough editing review prior to submitting it for final approval. (There are some great free tools that we reference in EngEd resources.)
ANY ARTICLE SUBMITTED WITH GLARING ERRORS WILL BE IMMEDIATELY CLOSED.
Please be sure to double-check that it does not overlap with any existing EngEd articles, articles on other blog sites, or any incoming EngEd topic suggestions (if you haven't already) to avoid any potential article closure, please reference any relevant EngEd articles in yours. - Approved @Abiola-Farounbi


view-fits: invalid argument

With go 1.6.2 on Windows and tip of x/exp/shiny the call at https://github.com/astrogo/fitsio/blob/master/cmd/view-fits/main.go#L93 returns "invalid argument".
If I change it with, for example, "b, err := s.NewBuffer(image.Point{500,500})" everything works.

thanks for the report and the fix.

actually, let me know if 2438fc6 really fixed it for you :)


TinyViT：Could u pls provide the model for detection to reproduce the performance in paper?

Thanks for your attention to our work!
We need some time to clean the code.


Apply Cert Secret Labels

Is your feature request related to a problem? Please describe.
I would like to be able to define labels that are attached to the secret when defining a certificate so that I can select all the secrets that belong to an app based on those labels.
Describe the solution you'd like
Either a new array attribute in the certificate CRD or propagate the labels from the certificate resource to the secret and csr.
Describe alternatives you've considered
Since the secret is created from the operator there is no way to accomplish this.
Environment details (if applicable):

Kubernetes version (e.g. v1.10.2):
Cloud-provider/provisioner (e.g. GKE, kops AWS, etc): on-prem
cert-manager version (e.g. v0.4.0):
Install method (e.g. helm or static manifests): manifests

/kind feature

With annotations we currently copy them over to all objects cert-manager creates, would doing the same with labels solve your issue?

hi @meyskens
i have the same requirements.  we want to add labels in the certificate, then  generated secret also has these labels.

Yes it would

/area api
/priority important-longterm

Hi! In https://github.com/jetstack/cert-manager/pull/3828 (see associated documentation) that will get released as part of 1.5, we added a field on the Certificate resource that lets you add both labels and annotations to the Secrets generated by cert-manager. An example of Certificate:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: example-com
spec:
  secretName: example-com-tls
  # Secret template is optional. If set, these annotations
  # and labels will be copied to the secret named example-com-tls.
  secretTemplate:
    annotations:
      my-secret-annotation-1: "foo"
      my-secret-annotation-2: "bar"
    labels:
      my-secret-environment: example-label

Would that fit your needs?


Invalid XML

When compiling Magento 2.2.5:
  Invalid XML in file /vendor/sy/multiple-layered-navigation/etc/events.xml:
  Element 'event', attribute 'name': [facet 'pattern'] The value 'sy.copyright' is not accepted by the pattern '[a-zA-Z0-9_]+'.
  Line: 10

  Element 'event', attribute 'name': 'sy.copyright' is not a valid value of the atomic type 'eventName'.
  Line: 10

  Element 'event', attribute 'name': Warning: No precomputed value available, the value was either invalid or something strange happend.
  Line: 10

Just like https://github.com/SlavaYurthev/Slider-M2/issues/9, with same fix

@cornips  Indeed. I'm getting the same issue after I upgraded this extension to V 0.3.0.
What I did is change the file:
sy/multiple-layered-navigation/etc/events.xml
Edit line:
<event name="sy.copyright">
to
<event name="sy_copyright">
Another option is to delete:
sy/multiple-layered-navigation/etc/events.xml
all together.
and this seems to stop triggering the error. I think the developer is trying to add a copyright notice somewhere and the name sy.copyright is not a valid syntax.

fixed


Update README.md

Thanks for the Typo correction

You're welcome! I love the library, love seeing the data laid bare.


Update optimum intel extra

just noticed that we still don't have the ipex extras, is it time we add them ?


Renaming bots can break them.

I recently renamed one of my bots from "Steve's Trivia Bot" to "Steve's Giphy Bot", and the bot program stopped working (it was running giphy, I just hadn't bothered to rename it till later).  Once I re-started the program, it worked again.
I suspect this is a problem that affects many bots, and I just happened to see it with giphy.
I didn't investigate, but I think there's something going on on the bot side where the bot library is still trying to strip off the old name of the bot in the mentions or is looking for the mention.  If so, we need to either a) use a regex to strip off mentions (and assume the mention is for us) or b) register for name change events so we can update our data structures.  The (b) option seems like slight overkill, but name changes are rare, so it's maybe the proper solution and probably not that hard.
As I said, I haven't investigated this, so a lot of the effort here will be just running a bot, renaming the bot user, and getting to the bottom of what's going on.  If you have multiple ways to solve it, you can discuss on the integrations stream.

diff --git a/zulip_bots/zulip_bots/lib.py b/zulip_bots/zulip_bots/lib.py
index 2281d66..4ca9bae 100644
--- a/zulip_bots/zulip_bots/lib.py
+++ b/zulip_bots/zulip_bots/lib.py
@@ -1,6 +1,7 @@
 import configparser
 import json
 import logging
+import re
 import os
 import signal
 import sys
@@ -229,7 +230,8 @@ def extract_query_without_mention(message: Dict[str, Any], client: ExternalBotHa
     If the bot is the first @mention in the message, then this function returns
     the stripped message with the bot's @mention removed.  Otherwise, it returns None.
     """
-    mention = '@**' + client.full_name + '**'
+    find_mentions = r'(?<![^\s\'\"\(,:<])@(\*\*[^\*]+\*\*)'
+    mention = re.search(find_mentions, message['content']).group()
     if not message['content'].startswith(mention):
         return None
     return message['content'][len(mention):].lstrip()

@showell I've tried the option a) and it's working properly, is there any possible case where the first mention don't belong to the bot.
Here is the image of this working:

It's plausible that somebody could mention two different users in a message to the bot, but I don't think it's actually going to happen in practice.
I'm not sure the regex needs to be quite as complicated here.
I'm starting to lean toward the idea that the server should parse this for us.

Slightly off context: Changes to a bot's email probably break it as well, only more dramatically?

I'm not sure what happens with email changes.  Most of the server-side code is smart about email changes, and I'm not sure we do anything bot-side with the email.


Is it possible to run directly in javascript?

I'm new to webassembly and I have a question about using the lib.
I read your journey of learning webassembly, but I have a question about the possibility of calling the lib after compiled in javascript
inside index.ts:
import { basics0, basics1, basics2, basics3 } from './basics';
import Big from 'as-big/Big';

export {
    basics0, basics1, basics2, basics3,
    Big
};

inside index.js
const fs = require("fs");
const loader = require("@assemblyscript/loader");
const wasm = loader.instantiateSync(fs.readFileSync(__dirname + "/build/optimized.wasm"), {});
module.exports = wasm.exports;

const { __getString } = wasm.exports;

console.log('ONE #0:', wasm.exports.Big.ONE);

Every function calling as-big must be inside assembly folder and compiled?
Thanks a lot

Yes, it is possible with little AS-loader magic:
const fs = require("fs");
const loader = require("@assemblyscript/loader");
const wasm = loader.instantiateSync(fs.readFileSync(__dirname + "/build/optimized.wasm"), {});
module.exports = wasm.exports;

const { __getString, __pin, __unpin, Big } = wasm.exports;

const pt = __pin(Big.TWO);
const big = Big.wrap(pt);
const val = big.toNumber();
const str = __getString(big.toString());
__unpin(pt);

console.log('Big.TWO #1:', val);
console.log('Big.TWO #2:', str);

To get the "pin" functions, you have to compile the Wasm module with the --exportRuntime flag:
npm  run asbuild:optimized -- --exportRuntime

Hope this helps.


feat(app): added issuer metadata support for demo app web

Signed-off-by: Anton Biriukov<EMAIL_ADDRESS>

Codecov Report
Patch and project coverage have no change.

Comparison is base (dbd1a6d) 89.95% compared to head (07827a7) 89.95%.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #585   +/-   ##
=======================================
  Coverage   89.95%   89.95%
=======================================
  Files          98       98
  Lines        3882     3882
=======================================
  Hits         3492     3492
  Misses        258      258
  Partials      132      132

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


Installing steem

After trying to install steem with
sudo pip3.6 install steem
I get this result:
Collecting steem
Using cached steem-0.18.103.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "", line 1, in
File "/tmp/pip-build-dcixdwct/steem/setup.py", line 8, in
import package_meta # this is a simple tool for loading metadata from Pipfile and other places
File "/tmp/pip-build-dcixdwct/steem/package_meta.py", line 10, in
from setuptools.config import read_configuration
ModuleNotFoundError: No module named 'setuptools.config'
----------------------------------------

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-dcixdwct/steem/

I just installed steem on a fresh ubuntu install and this issue is caused by not having setuptools installed. pip3 install setuptools should fix this.

I tried but the answer was:
sudo pip3 install setuptools Requirement already satisfied: setuptools in /root/.local/lib/python3.5/site-packages

@tomole444 easiest thing to do right now is pull from master here on github and install locally. We've had significant updates to the library in the past two weeks that haven't made it up to PyPi yet. Refer to the Readme on the steps to clone and install the library.

When I try "sudo python install setup.py" I get this error:
python install setup.py python: can't open file 'install': [Errno 2] No such file or directory

OK I think I solved it


fix: clean acquireToken caching so it doesn't accrue through states

Fix for #527
The cache entries for the Acquire Token process aren't properly removed, resulting in a build-up of entries (with different state values) over time.
Update to Storage.removeAcquireTokenEntries so it removes all entries that are not In Progress, rather than only specified entries.
Update to Storage.resetCacheItems so it removes all the cache entries for the Acquire Token process.
Create private function in UserAgentApplication.updateAcquireTokenCache to set the Acquire Token cache values from the user and the authenticationRequest objects.  Update to Acquire Token processes to use that function, eliminating duplicate code.
Minor cleanup to UserAgentApplication.saveTokenFromHash.
Update tests to reflect cache-clearing responsibility getting moved to Storage.

Any updates on this?

@JulioPablo The main team started on some significant redesigns after this pull request was created.  While they're doing that, it looks like they aren't accepting any pull requests on the current version.  I'm not sure what the targeted release date of the new preview version is.
They recently added this page to their wiki about the redesign - https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/MSAL.js-1.0.0-preview-changes

@zamzowd Thanks for the update. @JulioPablo  this is one of the PRs we want to integrate soon after our redesign changes are in. I have labeled it accordingly to track it.

Closing this as #675 and other related PRs do the same cleanup.