TextFormField value unexpectedly changed upon onPressed event?

Hi everyone,
I noticed this behaviour.
Example, I have 1 screen with 1 TextFormField (_programName with TextEditingController).
Initial value: MissionImpossible (load from REST API)
Change value: MissionXXImpossible (I manually change this on mobile app input screen)
OnPressed event: it will change to MissionImpossible, then show MissionXXImpossible (not wanted behaviour)
I did a debug (tested with ConsumerWidget or Stateless/StatefulWidget + Consumer, having same behaviour)
programState.when(
    data: (program) {
        _programName.text = program.name; // Step 2: It will load back the original value (why can't it maintain MissionXXImpossible - the one I change in the TextFormField?)
        ...

        return Column(
            child: [
                TextFormField(controller: _programName,
                ...
                ),
                FlatButton(
                    onPressed: () {
                        FocusScope.of(context).unfocus(); // close keyboard
                        if (_formKey.currentState.validate()) {
                            _formKey.currentState.save();

                            context.read(programProvider).updateProgram(_programName.text);  // Step 1: When button is tapped
                        }
                    }
                ),
            ]
        );
...
)

Any idea how to make it work? Thanks.

I did some study and found this
https://pub.dev/packages/provider#faq (though not Riverpod, but should be similar)
Refer to I have an exception when obtaining Providers inside initState. What can I do?
I was hacking ways to make initState worked. Apparently it didn't worked as expected.
However in the FAQ, it provided an idea how to do it.
I refactored my code to something like below.
// outside build
Program program;

// inside build
programState.when(
    data: (program) {
        if (program != this.program) { // NOTE BELOW
           _programName.text = program.name;
        }
        ...

Now it works. Thanks.


spark connection dialog improvement

after you click "start" and the spinner appears, you should not be able to click start again or edit the values in the form, unless it errors out, and then the spinner goes away and the form becomes active again.

dup of part of https://github.com/twosigma/beakerx/issues/7521


Usage of 'format' property in source/sink

The documentation mentions that you can use a 'format' property in the source/sink within a copy activity. If I understand correctly this should apply a format on DateTime interim types, however this does not appear to actually work in ADF. Is this still correct information?
Format string to be used when type is Datetime or Datetimeoffset. Refer to Custom Date and Time Format Strings on how to format datetime. In general, you don't need to specify or change this property. Learn more about data type mapping.

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

ID: 75402f01-c53e-25e0-6f1c-bc94d797dda1
Version Independent ID: a3dfb190-a12d-37cf-2dfe-034becd60e39
Content: Schema and data type mapping in copy activity - Azure Data Factory & Azure Synapse
Content Source: articles/data-factory/copy-activity-schema-and-type-mapping.md
Service: data-factory
Sub-service: data-movement
GitHub Login: @jianleishen
Microsoft Alias: jianleishen

@BigSlimeGuy
Thanks for your feedback! We will investigate and update as appropriate.


MQTT Event Stream populating UI with remote devices until refresh

Home Assistant release (hass --version):
.45.1
Python release (python3 --version):
3.5.2
Component/platform:
MQTT Event Steam
Description of problem:
Remote UI updates to include remote components which then disappears when refreshed.
Expected:
I would love if all instances of hass eventually synced up over MQTT so that if I have a device defined in the slave hass instances, I could write an automation about that specific device on the master instance. Ideally, unless specifically configured otherwise, I would love if all hass instances connected (master and slave) all look like one large hass instances, where all the slave devices are replicated to all hass instances.
Problem-relevant configuration.yaml entries and steps to reproduce:
https://home-assistant.io/components/mqtt_eventstream/

Configure two hass instances with the MQTT setup above
Open slave ui and wait
See master devices in slave UI until refresh.

Additional info:
I have instance A and B setup, with the master/slave config setup from the MQTT event stream docs. What I'm noticing is while I'm looking at the gui of the slave instance (which only has 1 configured device) eventually all of the devices from my master instance is reflected in the slave gui. However when I refresh the slave GUI, all the devices disappear again but if I leave the gui open long enough, they all show back up.
This confusion, i think, is making my master/slave setup not hugely useful. for instance, I can manually go into the dev tools of the master instance and turn on a light that is defined in the slave instance, but a scene cannot find that light.

Same here.  Would be great if they would re-sync from time to time.

I am seeing the same behavior using the mqtt_eventstream. I have a Master instance that controls all of the devices in the house and the slave instance is controlling the devices in my shop.
Currently I am using the Rest API to get the values of the slave instance as a work around, but that runs every 30 seconds so it is not realtime like we see with the mqtt_eventstream.
I did play with the mosquitto configuration as far as persistence goes based on some HASS forum recommendations, but I did not have any luck with any settings changes.
I also noticed that if I restart the slave instance the master instance also restarts as well which seems like that should not happen.

I was also expecting this behaviour initially but found that HA was not yet up for the task unfortunately; my situation is reverse from the OP (using the master interface to control the slave), but there too remote devices from the slave disappear after refresh, and also misbehave in other ways (e.g. #8678).
In my search for solutions (none found yet though) I collected some relevant posts on the forum:

https://community.home-assistant.io/t/mqtt-eventstream-multiple-instances/12236
https://community.home-assistant.io/t/hass-slave-instances-why/8457
https://community.home-assistant.io/t/multiple-instances-why-so-difficult/13094

This also relates to #6744, which was judged more a feature request. I do consider this more general problem a bug, as it goes contrary to user expectation.

I am running 0.57.3 and this issue is still present in the configuration. I was looking for a way for fix it and I came in this bug.
The behaviour that was noted on 0.45.1 is still present so I would keep this bug open.

This one is making me crazy. May I ask if the missing thing is that the messages to the MQTT should be done using a retain flag?
mqtt_eventstream vs e.g. mqtt_switch
mqtt.async_publish(hass, pub_topic, msg, )
mqtt.async_publish(             self.hass, self._command_topic, self._payload_on, self._qos,             self._retain)

Just came across this behavior too. The master gets the states OK, but upon refresh all the UI objects disapppear and don't come back. This is definitely a bug.

Yes, i have this issue too. When i reload master wich take all datas from slaves, first time is OK but after reload is complete empty (only one or two sensor are showing up)

shajek,
I ran into this issue and ended up just moving over to the mqtt state stream since I was trying to use the eventstream with another HA instance. This has been working pretty well for me and should work for you if you are trying to get object states from another HA instance.
https://www.home-assistant.io/components/mqtt_statestream/

Dear,
same problem with 0.74.2 on both master and slave.
On the master the refresh of the GUI make the button of slave disappear!!
How to solve??
With mqtt statesment I get the status of the component on the slave, but I cannot connect control it form the master right?
Ivan

I'm closing this as this is working as intended. Using a default ui, any entities just show up in it, and sine entities are pushed to both master and slave, then it makes sense for the ui to populate with those entities.

Dear,
no, sorry if I insist, but there is the doc regarding this?
I refresh the home assistant of the master page in browser and the button of the slave appear and disappear without logic!!!
"I have instance A and B setup, with the master/slave config setup from the MQTT event stream docs. What I'm noticing is while I'm looking at the gui of the slave instance (which only has 1 configured device) eventually all of the devices from my master instance is reflected in the slave gui. However when I refresh the slave GUI, all the devices disappear again but if I leave the gui open long enough, they all show back up.
This confusion, i think, is making my master/slave setup not hugely useful. for instance, I can manually go into the dev tools of the master instance and turn on a light that is defined in the slave instance, but a scene cannot find that light."


perlPackages: undefine LD per default in builder

Since CC Wrapper defines LD as 'ld', it interferes with MakeMaker
which wants to set LD to $CC, but cannot.  This PR ensures that the Value
which is defined by the perl package itself takes precedence.
Motivation for this change
Several perl packages only build when setting LD to $CC or unsetting LD to let the perl build mechanism take care of figuring out the linker.
Things done
I tested a couple of perl packages locally, which wouldn't build before.  It is unclear to me, however, how to test this completely, since it seems that perl packages are not very stable and regularly built by Hydra.  It takes a long time to build all of them, and some fail due to other reasons as far as I can tell.

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option build-use-sandbox in nix.conf on non-NixOS)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] Linux

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

@Ericson2314 Does setting it to $CC ensure that it resolves to $CXX if the compilation is done for XSpp?

@timor It won't. Does that matter?

I suppose I am comming around to this a bit, seeing that there isn't really a notion of cross-build a perl module.

In a recent example (slic3r, was not a perlPackage package though) there was the same symptom, and the fix was making sure that LD was eventually resolved to g++.  As far as I can tell, The perl build process takes care that the correct linker command is chosen.  Thus I think that unsetting LD may be more general.

@timor In general, build systems shouldn't allowed to do their environment checks to decide these things---while not necessarily non-deterministic, it is overly dynamic and complex. Especially with cross compilation, they don't always do a very good job of choosing the right too either.
cc vs ld is a matter of completely different syntax, namely -Wl,arg vs plain arg. But cc vs c++ is a more subtle matter of default linker inputs. an -xc or -xc++ flag should be enough to have cc act as c++ or vise-versa.
Anyways, so if cross-built perl derivations will never make sense, then I relent and unset LD is fine, but if not, it sounds like no one knows what LD=$CC will cause here?

Yeah, no idea which one is the correct one. Feel free to pick one, I'll change the pull request accordingly.


Client support for receiving 1xx informational responses

This is to discuss adding support for accessing 1xx informational responses on the client side (see #2426 for server side). Currently, hyper parses all 1xx responses and ignores them, as RFC 7230 says it must at least be able to receive and ignore them.
The Client (and client::conn) interfaces return an impl Future<Output = Result<Response>>, which only allows awaiting it for a single response. We can't really add new methods to allow also awaiting for informational responses, unless we stuck to always return a specialized type that is both a Future and has extra methods. However, using those together wouldn't be that clear to a user. You can't be sure if or how many informational responses would be received before the full response, so you would want to await "both" types.
Instead, we can use a callback format. We could define a type (hyper::client::ext::Informational? On1xx? names...), and the user would store that in the request extensions. We'd then check for that in the h1 proto code and if it exists, call the callback with the 1xx headers.

I much prefer the idea of adding methods on ResponseFuture, hooks make bookkeeping harder for the caller, and I don't think it is more confusing to have both those methods and the Future impl than say, using poll_data and poll_trailers on HttpBody.

In the curl project, there's right now 105 test cases disabled when built with hyper. 46 of them use 100-continue in one way or another and we really need to know when we get 1xx responses (or not) to make curl+hyper behave like the built-in HTTP code does. It could allow us to make significant progress in my task to make curl+hyper match the built-in HTTP code.

Right-o, I got distracted with other work. I'll do some thinking and work on this in the next few days.

I've spent some time researching options (prior art of APIs), and considering the existing code, and I think I've settled on staged approach. I agree with you, @nox, we can add a method to ResponseFuture on the Rust side, and make it work right. However, it'd be less easy to access in the exposed C API, and will take more time to get right. So:

First, add support for a callback extension, which will be exposed in the C API. This is the least complicated to do on hyper's side, so we can do it quickly. Importantly, though, most of it can be reused or only slightly altered to support the next steps.
Because of the current client design, which separates the ResponseFuture from the separate client dispatcher task running in the background, we'd need some to add some sort of channel where the receiver is inside ResponseFuture, and the sender is in a request extension. Instead of storing the sender directly, we can reuse the callback to simply store a closure sending on the sender side of the channel.
Finally, the higher level ResponseFuture (returned by hyper::Client, not hyper::client::conn) would need to separate some of its stages into an internal enum, so that polling ResponseFuture::poll_informational() could advance the stages far enough that the task wouldn't be stuck since the dns/connect/write stage hadn't gotten far enough.

The first step is my next work priority.

Step 1 PR is available at #2594.

@bagder the piece you'd need is merged to master now. hyper's C API doesn't use timers at the moment, so you'd need to use a timer in the normal curl way, and check in the body poll callback whether a 100 Continue has been received (in your informational callback, you could set a flag and trigger the body waker to start polling again) or the timer has expired.

I would've liked the callback to take a return code so that we can return error easier.
If my code in the callback runs into a fatal error, such as out of memory, I need to return error and abort everything. Instead of returning error, now I need to pass that info back to the parent caller by storing a magic value in a struct field instead. Not your typical erroring out style code.

What's perhaps worse, is that it doesn't seem to work? At least not the way I thought it is supposed to work. Shouldn't the following callback code be able to extract the 100 response and its associated response headers?
When I run this in curl test 158, the header callback doesn't get invoked even once. I suppose I've done something wrong?
https://github.com/curl/curl/blob/931a3e33e11c75feca367b90532d95d6f17985f7/lib/c-hyper.c#L726-L750

I would've liked the callback to take a return code so that we can return error easier.

We could probably adjust it to be more like the foreach functions, returning a HYPERE_ABORTED_BY_CALLBACK if you return a non-zero.

Shouldn't the following callback code be able to extract the 100 response and its associated response headers?

It should... I added it's usage to the upload.c example, and checked it worked there. I'll dig a little into how you're using it.

I noticed a difference in your test case, which is that it seems it's only sending the 100 Continue, and not sending a 200 OK afterwards, right? When I make a local server doing the same thing, I still see the capi/examples/upload.c callback trigger, but don't see it print about the final response, which makes sense.

Yes, the test only responds with a 100 and then closes the connection. But there's something else going on here.
Here's what I do:
response
I now made the HTTP server respond this exact byte stream.  It loads test case based on the file name part in the URL. I put 158 there to make it load contents from test 158, which I have edited as above.
upload example
I then run the hyper capi "upload" test program against this test server URL.
I fire away the upload example to get to see the response codes and the headers:
$ ./upload upload.c localhost 8999 /here/158
connecting to port 8999 on localhost...
connected to localhost, now upload to /here/158
http handshake ...
preparing http request ...
sending ...

Response Status: 200
Server: moo
Content-Length: 0

There's no Informational (1xx): output there...

Something very strange indeed... For instance, when I have a local server doing the same thing, I get this output:
$ ./upload ../README.md <IP_ADDRESS> 3000 /up
connecting to port 3000 on <IP_ADDRESS>...
connected to <IP_ADDRESS>, now upload to /up
http handshake (hyper v0.14.11) ...
preparing http request ...
    with expect-continue ...
sending ...

Informational (1xx): 100
HTTP/1.1 100 Continue swsclose
Silly-Header: yeeesss

Response Status: 200
Content-Length: 5

hello
 -- Done! --

It could something weird inside hyper, but a possible idea popped into my head: has the rust library been re-compiled after pulling from git? Just for my sanity, I went ahead and added the hyper_version() output to the examples in #2623.

Spot on. A simple make in the examples dir didn't rebuild upload...

I can reproduce my problem with this patch to upload.c:
index fa7134f3..acf9bfbb 100644
--- a/capi/examples/upload.c
+++ b/capi/examples/upload.c
@@ -151,12 +151,12 @@ static int print_each_header(void *userdata,
 static void print_informational(void *userdata, const hyper_response *resp) {
     uint16_t http_status = hyper_response_status(resp);

     printf("\nInformational (1xx): %d\n", http_status);

-    const hyper_buf* headers = hyper_response_headers_raw(resp);
-    write(1, hyper_buf_bytes(headers), hyper_buf_len(headers));
+    hyper_headers* headers = hyper_response_headers((hyper_response *)resp);
+    hyper_headers_foreach(headers, print_each_header, NULL);
 }

 typedef enum {
     EXAMPLE_NOT_SET = 0, // tasks we don't know about won't have a userdata set
     EXAMPLE_HANDSHAKE,

Ah, with that change, I still see the callback called, I see Informational (1xx): 100\n, but then no headers are printed. (I also notice the C compiler yelling at me about const pointers...) Let me see what's going on internally...

Found the issue with the missing headers. I also took the opportunity to fix up that const warning.

then no headers are printed

Right, that's exactly the problem I saw.

Now also confirmed with curl test 158 working fine in my end. :tada:


GPU: Add interactive to generic governors.

Signed-off-by: spezi77<EMAIL_ADDRESS>

Just fyi: interactive is the custom GPU governor written by franciscofranco.


Who is farming ?

i join spare 10 hours before with 1400 plots ) but i only farmed 1 block and got 4 spare.
wallet always not synced. but block are farming. who is farming )?

I am not farming... synced... no synced.... synced.... no synced...
but i got evry 5 secounds proofs of my plots. The networksize is also wrong there are just my tibis listening.

Wallet is synced for me (I opened TCP port 9444) and everything is fine except for this annoying problem...

i can't open 9444 cause its a guest network but nevermind i got around 20 connections so thats not the problem

i getting proofs found, but no rewards????? sync issue all the time, wallet not synced as well

Same for me, proofs found, but no rewards, I think they have some more glitches to solve... difficulty = 1 is very strange, too!


Add letsencrypt option for TLS cert generation.

For now no support for cerbot/lestencrypt.
let's add this.

I maybe can provide you a pull request to support it, but would push ansible requirement to 2.2/2.3 because I use the ansible internal version and nit certbot

One option is also to provide LetsEncrypt certs via a dependency role. For example this one.
Basically the ansible-letsencrypt role just needs to be executed before the nextcloud role and nextcloud role needs to specify the installed cert locations which are known for letsencrypt, ie:
SSLCertificateFile /etc/letsencrypt/live/{{ domain }}/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/{{ domain }}/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/{{ domain }}/chain.pem

Just an idea if you want to keep this role less complex - CertBot itself has a lot of ways to configure it for different usages and it's not trivial to cover all the cases.

Hi,
@MartinVerges : Can you tell me more about ansible internal version ?
@jaywink : I have thought about this for quite some time.
Using an external role  for let's encrypt certificates is already possible as you describe it by using
nextcloud_tls_cert_method: "installed"

as in readme's case 2.
So, it whould be just removing this planned feature.
However it doesn't satisfy me. I initialy wanted the role to perform a simple certificate request in order  to allow a quick installation for a public nextcloud instance.

CertBot itself has a lot of ways to configure it for different usages and it's not trivial to cover all the cases.

Yes and that's why I'm still not  working on this one. :(
This, and lot less free time available.
Regards.

@aalaesar you can find it on https://docs.ansible.com/ansible/letsencrypt_module.html. It is working and I implemented it on the role https://github.com/First-Colo-GmbH/ansible-haproxy (not yet finished). It's only available from ansible 2.2 on but some modules for openssl are coming with 2.3 so it's upcoming feature of ansible without the need for certbot

This is very insteresting.
As it is an ansible 2.2 dependency, I think it is better to postpone this feature for 1.1 in order to stay dependent to Ansible 2.0
Thank you @MartinVerges.

Soooooooooooooooo...
it has been 3years and yet it didntt event feels as a important feature for me or anyone helping on the role.
Let's keep it simple.
using nextcloud_tls_cert_method: installed is effective and don't make the role bloated.
letsencrypt certs can be generated and installed by any means this way.
So closing


More documentation how the default mode works

Is your feature request related to a problem? Please describe.
I am trying to understand how azure signalr service works (default mode ) when having multiple hub servers.
Is it using a backplane?  is it comparable to having signalr service with redis backplane?
Are clients connected to my servers?
Describe the solution you'd like
Good documentation on how azure signalr service (default mode) works

You don't need a backplane if you are using Azure SignalR, and clients are connected to your servers through "server connections": here contains the detail: https://learn.microsoft.com/en-us/azure/azure-signalr/signalr-concept-internals


BeamInteraction does not initialise seeds for products

The xtrack BeamInteraction xtrack/beam_elements/beam_interaction.py does not initialise the seeds when processing the product particle dictionary returned by the interaction process. There is also no mechanism for the interaction process to provide the seed for the product particles. Un-initialised seeds result in a difficult to debug, silent 'hanging' in the tracking when quantum synchrotron radiation is used. In the main tracking loop, there is a check if the seeds are initialised, but only for the first particle in the array (in case the user has forgotten), but this misses the zero seeds of the appended product particles.

The simplest solution is to add new_particles._init_random_number_generator() just before
https://github.com/xsuite/xtrack/blob/b75d257654f65a4152751532c91ddeb53ffc1c68/xtrack/beam_elements/beam_interaction.py#L60
This doesn't offer the ability to control those seeds though.

This should demonstrate the problem:
`
import pathlib
import numpy as np
from scipy.constants import e as qe
from scipy.constants import c as clight
from scipy.constants import epsilon_0, hbar
import xpart as xp
import xtrack as xt
import xobjects as xo
from xobjects.test_helpers import for_all_test_contexts
from xpart.test_helpers import flaky_assertions, retry
@for_all_test_contexts
def test_radiation_beaminteraction(test_context):
print(f"Test {test_context.class}")
ctx2np = test_context.nparray_from_context_array

L_bend = 1.
B_T = 2

delta = 0
particles_ave = xp.Particles(
        _context=test_context,
        _capacity=200000,
        p0c=5e9 / (1 + delta), # 5 GeV
        x=np.zeros(100000),
        px=1e-4,
        py=-1e-4,
        delta=delta,
        mass0=xp.ELECTRON_MASS_EV)
particles_ave_0 = particles_ave.copy()
gamma = ctx2np((particles_ave.energy/particles_ave.mass0))[0]
gamma0 = ctx2np(particles_ave.gamma0)[0]
particles_rnd = particles_ave.copy()

P0_J = ctx2np(particles_ave.p0c[0]) / clight * qe
h_bend = B_T * qe / P0_J
theta_bend = h_bend * L_bend

dipole_rnd = xt.Multipole(knl=[theta_bend], length=L_bend, hxl=theta_bend,
                        radiation_flag=2, _context=test_context)

class _DummyInteraction():
    def interact(self, particles):
        return {'s': np.full(5, 1),
                'x': np.random.rand(5),
                'px': np.random.rand(5),
                'y': np.random.rand(5),
                'py': np.random.rand(5),
                'delta': np.random.rand(5),
                'zeta': np.random.rand(5),
                'zeta': np.random.rand(5),
                'mass_ratio': np.full(5, 1),
                'charge_ratio': np.full(5, 1),
                'at_element': np.full(5, 1),
                'at_turn': np.full(5, 0),
                'parent_particle_id': np.full(5, 1),
                }

beam_interaction = xt.BeamInteraction(interaction_process=_DummyInteraction())

particles_rnd._init_random_number_generator()

beam_interaction.track(particles_rnd)
dipole_rnd.track(particles_rnd)`


Support MToon v2.0

https://github.com/Santarh/MToon/releases/tag/v2.0

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

GitHub release
npm package (@latest dist-tag)

Your semantic-release bot :package::rocket:


config.ini file doesn't reference correct homedir paths by default

The {home} reference doesn't work in my system, and neither $HOME and other things I tried. It did work however when I searched and replaced it with the home dir path. Is there a way to specify the home directory in this file symbolically?

Are you talking about something like: ~/ ?

Yes. I tried both ~ and $HOME and it didn't work for me.

yeah i think this {home} thing is only meant to be easily replaced by sed or something
like the rpm and deb packaging scripts do it.
Maybe the documentation for installation from sourcecode should mention that.
It just says to copy the config examples over.
Took me a moment to understand why its not working.


Counting Comparisons in Bubble Sort

Counting number of comaprisons and swaps that occur in bubble sort.
Program will run at different intervals of size with input examples of best, worst and average case.

@Amit366 please assign this issue to me I will do it C++ language

@Amit366 this issue has already been assigned to me.
I also made PR but I made a combined PR, so that's why I raised it again so that I can have separate PRs.

Ok i will do it Java Language


Unable to create challenge

Hi, I have tried to create certificates for my domain. The authoritative DNS servers for the domain are at hetzner. I have created the following configs:
ClusterIssuer
---
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-production-hetzner
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: <email>
    privateKeySecretRef:
      name: letsencrypt-production-hetzner
    solvers:
      - selector:
          dnsZones:
            - "<zone.tld>"
        dns01:
          webhook:
            groupName: <acme.zone.tld>
            solverName: hetzner
            config:
              secretName: hetzner-secret
              apiUrl: https://dns.hetzner.com/api/v1

Secret
---
apiVersion: v1
kind: Secret
metadata:
  name: hetzner-secret
  namespace: cert-manager
type: Opaque
data:
  api-key: <secret>

I tried to specify the secret clear or as base64, the result is the same.
When I request a certificate with this config, a challenge is created in the cert-manager, but it fails with the following error message:
unable to get secret `cert-manager`; unable to find hetzner dns zone with: <zone.tld>.

Is there anything I might have overlooked? Thank you very much for your help

Hello @morzan1001.
From the error you provided I guess a problem is secret.
Secret name is "hetzner-secret", why does error say "cert-manager"? Did you change value in ClusterIssuer? If so - you have to reflect these changes and name in ClusterIssuer must match Secret name
Try to list secrets in cert-manager namespace and be sure that it is there with correct name

Hello @morzan1001. From the error you provided I guess a problem is secret.
Secret name is "hetzner-secret", why does error say "cert-manager"? Did you change value in ClusterIssuer? If so - you have to reflect these changes and name in ClusterIssuer must match Secret name
Try to list secrets in cert-manager namespace and be sure that it is there with correct name

Hey thanks for your feedback, unfortunately I don't know why the secret appears in the error message, but it seems that I just didn't wait long enough after moving to the hetzner dns servers, in the meantime I have been able to create certificates.  :+1:


feat(alxdjs): sdk to deploy smart contract

resolve #50

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@5c90f68). Click here to learn what that means.
The diff coverage is 40.00%.

@@            Coverage Diff            @@
##             master      #69   +/-   ##
=========================================
  Coverage          ?   69.47%
=========================================
  Files             ?       66
  Lines             ?      950
  Branches          ?       96
=========================================
  Hits              ?      660
  Misses            ?      283
  Partials          ?        7

Impacted Files
Coverage Δ

...s/aloxide-js/src/blockchain-services/icon/index.ts
0.00% <0.00%> (ø)

packages/aloxide-js/src/helpers/crypto.ts
0.00% <0.00%> (ø)

packages/aloxide-js/src/helpers/is.ts
0.00% <0.00%> (ø)

...de-js/src/blockchain-services/BlockchainAccount.ts
20.00% <20.00%> (ø)

...es/aloxide-js/src/helpers/contract-files-reader.ts
42.85% <42.85%> (ø)

...es/aloxide-js/src/blockchain-services/eos/index.ts
48.00% <48.00%> (ø)

...de-js/src/blockchain-services/BlockchainService.ts
71.42% <71.42%> (ø)

...ckages/aloxide-js/src/blockchain-services/index.ts
80.00% <80.00%> (ø)

...xide-js/src/blockchain-services/TypeDefinitions.ts
100.00% <100.00%> (ø)

.../aloxide-js/src/helpers/validate-network-config.ts
100.00% <100.00%> (ø)

... and 5 more

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 5c90f68...ec7e0f7. Read the comment docs.


Can't run elicit and sweep; process is stuck with message: "Waiting for x GPUs with at least X GB of free memory. 0 GPUs currently available."

Hi,
I downloaded the codebase on my laptop, where I have an Nvidia GeForce RTX 3080 Mobile16GB GPU. When trying to run elicit or sweep, no matter the model that I use, pretty much always, the process is stuck with the following message:
Waiting for 1 GPUs with at least 15.46 GB of free memory. 0 GPUs currently available.

When trying to do the same thing to the Jessica cluster, I'm getting the same, however, the message is:
Waiting for 8 GPUs with at least 46.37 GB of free memory. 0 GPUs currently available.

In order to recreate the error, one simply needs to clone the codebase to a new env and try to run the basic commands.
Any suggestions on how to go about this?

This is probably because your GUI is taking more than 10% of the VRAM on your GPU, and right now there's a hardcoded default min VRAM of 90%. You can customize this with min_gpu_mem

Maybe could update the info message to be more informative?


Add statement metadata to event payloads (SQL Server)

What does this PR do?

Add metadata about a SQL statement in the event payloads. More information regarding these changes can be found in the agent PR.
Agent: https://github.com/DataDog/datadog-agent/pull/10042
Review checklist (to be filled by reviewers)

[ ] Feature or bugfix MUST have appropriate tests (unit, integration, e2e)
[ ] PR title must be written as a CHANGELOG entry (see why)
[ ] Files changes must correspond to the primary purpose of the PR as described in the title (small unrelated changes should have their own PR)
[ ] PR must have changelog/ and integration/ labels attached

Closing in favor of the simplified approach: https://github.com/DataDog/integrations-core/pull/10881


[Table] Tables with lots of rows (200+) and columns (20+) are very slow to scroll

We're using 2.2.13 of the framework primarily on Windows 7 and IE11. We have a very large report our application generates. It contains over 20 columns and over 200 rows. Scrolling up and and down the table is incredibly sluggish. Doesn't matter if we're using the scroll wheel on the mouse or dragging the scroll bar on IE, it's just incredibly slow and sluggish. Works fine on Chrome though, but we're not using Chrome unfortunately.

Hi @jprateragg, what’s in your table’s tds?

This is a known issue with how IE processes td cells and tables in the DOM. One thing you could try to do is to make multiple tables and style it to look like its one table.. i would try that first and see if you squeeze out some performance with the dom rendering. You could also experiment with not using a table, and div's instead. Could also run the performance monitoring tool in the dev tools to see if there are any bottle necks with some javascript slowing the page when scrolling. https://msdn.microsoft.com/en-us/library/gg699341(v=vs.85).aspx Just some ideas.. good luck

@Banandrew Here is an example of a row:

	8
	001
	CUSTOMER

	1234567-123
	0.00
	478,932.70
	9D
	130.96%
	46.50%
	246.41%
	47.17%
	11
	011/SMITH
	012/BROWN
	013/THOMAS
	014/JONES

	None
	9/6/2017
	SUB
	3.45%
	(040) Poultry
	78.60%

Sometimes there will be something in hovertext, but it would just be 20-50 characters at most and no JS functions or anything.

@1-14x0r I will try breaking it up into multiple tables and see if that makes any difference.

@1-14x0r I divided up the report into separate tables as you suggested. I grouped it by regions, and we have 20 regions in our organization, therefore 20 tables. The performance is better, but, but definitely not great. The scroll bar on the browser works much better, but scrolling using the mouse wheel still freezes a bit. But definitely better than one large table.
I may format it using divs instead, but that will require me to completely redo the report which I'd like to not have to do. Thanks for your help!

@jprateragg If you’re using the .celled class with the table, try removing it and see if it makes the performance better.

I removed the celled class and performance was about the same--still just as sluggish.

@jprateragg Just to make sure, is there any difference if you use the default tables without SUI? Try removing SUI’s classes from the table tag.

also do you do any of the cell clip large content? see http://connect.microsoft.com/IE/feedbackdetail/view/968689/ie-11-extremely-slow-scroll-performace-in-tables-with-cell-clipping
also have you tried to experimenting with manually scrolling content by overloading your scroll input events? Such as disable scroll wheel. see https://stackoverflow.com/questions/20026502/prevent-mouse-wheel-scrolling-but-not-scrollbar-event-javascript
then manually scroll the page with https://www.w3schools.com/jsref/met_win_scrollto.asp
my guess is that the the very large amount of td cells is causing a buffer overflow within the stack of input event events. IE being the amazing browser that it is, is gobbling up the overflow to prevent the browser from crashing. Similiar to the dreaded script taking to long error dialog... yuck. Chrome handles input much differently which is why you might not see the sluggish behavior as much. Scroll wheel has the potential to generate ALOT of scroll to events behind the scenes.. Just a thought. could be wrong though.
I also would try disabling any CSS as stated above and see how the native behavior with a very large table works. see https://stackoverflow.com/questions/10609931/how-to-avoid-the-performance-cost-of-overflowhidden
as for what your trying to do, its definitely in the realm of possible. I ran into this exact issue with GWT a few years back being forced to run the webapp in IE10 on windows xp.. ugh... The tables were 20 columns by about 500 rows, pushing anything over that was very hard. i was able to squeeze out 1000 rows using divs and some table hackery... Not only did i split the tables up horizontally i also split them up vertically.. Keeping it about 2 to 5 columns per table, and about 100 rows per table.. granted your still generating 25 to 50 tables per page... it fixed the scroll issue. I lazy rendered the tables to only render tables that are in the viewport... that is why we split up horizontally and vertically.
alternatively you could make your table as an SVG.. that might render with scroll better.. https://stackoverflow.com/questions/6987005/create-a-table-in-svg
GLHF; I really understand how troubling this can be, as i had to deal with it before..

@Banandrew @1-14x0r The way we had this report formatted previously was with some basic CSS styling and no JS. It was very simple. We recently just started switching over our reports to SUI so they were consistent with our main application (which uses SUI obviously). So, this report worked perfectly before we moved to SUI. The number of columns hasn't changed, the rows vary from month to month (still 200-300 of them), but there were no performance issues.

I had a similar problem with tables in IE and removing some CSS rules improved the performance. The lines are referenced here. Even though these lines are about labels and checkboxes you don't have to have a label or checkbox on the page for them to slow down IE.


MVP: Performance testing for NGINX IC

User Story: As NGINX IC app developer, I want to automate the current manual load tests for NGINX IC, so I could run the test on-demand for a branch and increase my confidence that shipping the next change (“Default ‘NGINX NodePort and LoadBalancer Services externalTrafficPolicy’ to Local”) will not introduce a regression.
What it does

Automates the currently manual load tests in a branch for NGINX IC
Produces a report comparing "before and after" on demand. Can share report with customer

We also made a verbal agreement with customer that we will do this Baseline Capacity Check.
From 2020-04-28 adidas meeting https://github.com/giantswarm/giantswarm/issues/10468

[ ] GS needs to do load testing in release
[ ] not only fast connections, but also long-lasting connections
[ ] get test scenario layout from adidas - we might use it
[ ] they need the performance baseline

[x] give them our current results - @piontec

load testing in prod

[ ] adidas will forward us their load test results
[ ] adidas can allow us to run load tests on their clusters

monitoring of customer's workload

[ ] we need at least RPS

bad practices

stuff configured on TC directly - this is because adidas doesn't have access to all CPs to control nginx config map

[ ] We need to check why they can't access CPs for configuration @yasn77

We want to limit the scope to automating the currently manual tests.
In a future story, we want to improve observability and debuggability of the test.

@sslavic Is the below the task from https://github.com/giantswarm/roadmap/issues/65 that is included in this story?

[ ] Add load test to e2etests that creates TC, installs test app and triggers test - Ross

I added "From 2020-04-28 adidas meeting ttps://github.com/giantswarm/giantswarm/issues/10468" in the main section. FYI @giantswarm/team-halo

Mon, May 11, '20 Lukasz, Simon, and Tobias are working on separate tasks. Later, Lukasz will integrate.

@piontec , can you write down decision not to buy StormForger?

Spec: https://docs.google.com/document/d/1R8_NINSmzcYUnozTV5fCLnnb-XCxPJhfVwG16_lO1Jw/edit#

@piontec , can you talk w @sslavic on what he can use to be more confident with the NGINX change right now?

This is actually two things.

Managed Apps Testing Tool, towards App Developers being able to run any test for apps
Automated Performance Test for NGINX IC


Port BFCard scenario from C# to JS

https://github.com/microsoft/botbuilder-dotnet/tree/master/tests/Teams/CardsBotFramework

@EricDahlvang : Doh - I actually was working on this one..  Just put a PR.

https://github.com/microsoft/botbuilder-js/commit/28407d398c9434562e39abadcdc3a50344296b5f


fpga_manager fpga0: Error while writing bin data to FPGA with Ultra96

The error is kind of similar to the #767 but as it has been closed, and my board is different, I am creating this new issue.

I am facing some error while trying to write a bin file to my Ultra96 board.
I have been using the board image (Avnet Ultra96 v2.4 PYNQ image) from here:

Can you please tell me how can I solve it? Thanks.

Try to provide an absolute path for your bitstream. This is a different issue than #767 where a customized image needs to be built.

Hi @hablu, I see your question was already answered. If you are still not satisfied, I need to kindly ask you to redirect your question to our forum: https://discuss.pynq.io
That's the dedicated place to receive support from the community.
The issue tracker here is to report bugs in the codebase.
Closing this now, thanks in advance for your collaboration.


Update some docs for v0.3.0

@twsouthwick in the readme, is AddCompiledPages always needed?
.AddDynamicPages() // Remove if you don't have dynamic pages
.AddCompiledPages();

Right now it's either/or - not sure they'd play nice together.
I'm considering a source generator with an interceptor that will allow just doing
.AddPages()

and have it decide at compile time what to do. Not sure though....

@Code-DJ here's an issue to track that https://github.com/CoreWebForms/CoreWebForms/issues/250

@birojnayak added a bit of more information - feel free to add more if you think it needs it.


[AutoPR compute/resource-manager] Compute 2019 07

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/7318

(message created by the CI based on PR content)


Scala Common Enrich: deprecate and remove CloudfrontLoader

AWS is changing its Cloudfront format.

We are contacting you because your AWS account contains at least one CloudFront web distribution with logging enabled. Starting December 12, 2019, Amazon CloudFront is adding the following seven new fields to access logs:
• c-port – The port number of the request from the viewer.
• time-to-first-byte – The number of seconds between receiving the request and writing the first byte of the response, as measured on the server.
• x-edge-detailed-result-type – When the result type is an error, this field contains the specific type of error.
• sc-content-type – The value of the HTTP Content-Type header of the response.
• sc-content-len – The value of the HTTP Content-Length header of the response.
• sc-range-start – When the response contains the HTTP Content-Range header, this field contains the range start value.
• sc-range-end – When the response contains the HTTP Content-Range header, this field contains the range end value.

Will this break existing Snowplow pipelines using the CloudFront collector, or will they continue to run okay?


[PLOP-6017] Upgrade to Node 20.x and aws-sdk v3

Upgrades to Node 20.x and aws-sdk v3

cc @skrothapalli1 , @prestonvantonder

cc @skrothapalli1 , @prestonvantonder

pretty please?


[Resource] Add 'What is Open Source Software?' to README

Category

[x] Resource Addition
[ ] Documentation
[ ] Codebase
[ ] User Interface
[ ] Feature Addition

Description
Category: Introduction to Open Source
Name: What is Open Source Software?
Publisher: YoungWonks
Link: https://www.youngwonks.com/blog/What-is-Open-Source-Software

I would like to work on it under Hacktoberfest'24. Please assign me.

You're assigned, @Bishal-35.


Implement projection for Query

Projection has been implemented and a test case is added.

Use std::move to return value, func doQuery() returns val_set, and add a testcase.


D3.event: Exposing sourceEvent & timeStamp

Hi,
I have some wip/premature patches (needs some dusting off) in order to expose from D3.event the following attributes
-sourceEvent
-timeStamp
I am not sure what is required to clean them up for inclusion but if there is any interest on this I am ok to try.
Vassilis

Hi Vassilis,
I just committed D3Event.sourceEvent and changed signature of D3.event to allow transparent type-casting to D3Event.

Thanks for that. It is very convenient now.
I just issued #122 that exposes d3.event.timeStamp.
I hope it will be merged soon since it is new functionality and does not conflict with anything that already exists.
Thanks


Slowly Scrolling GridView

I am trying to understand how to slowly scroll a Xaml GridView but I don't really understand from the samples how to do that.  Should I use a keyframe animation or a something else?  The interaction that I want is that when the user isn't touching the GridView it scrolls slowly to the left but as soon as the user touches it, scrolling stops.  I get an ArgumentException at the last line.  what am I doing wrong?
void StartAnimatingPictures()
{
        var scrollViewer = GetScrollViewer(this.Pictures);

        if (scrollViewer == null)
        {
            return;
        }

        _compositor = ElementCompositionPreview.GetElementVisual(this).Compositor;

        _scrollProperties = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(scrollViewer);

        var animation = _compositor.CreateScalarKeyFrameAnimation();

        animation.InsertExpressionKeyFrame(0.0f, "ScrollManipulation.Translation.X");
        animation.InsertKeyFrame(1.0f, -1000.0f);

        _scrollProperties.StartAnimation("ScrollManipulation", animation);
}

you need to set reference parameter. something like this
animation.SetReferenceParameter("ScrollManipulation", _scrollProperties);
see if this works.
Thanks,
Varun

Varun,
Thanks for the suggestion, but when I add that I still get an argument exception with StartAnimation:
"The specified property was not found or cannot be animated."

I made a demo about scrolling in here : https://github.com/juanpaexpedite/MasterDetailsComposition/blob/master/ParallaxSplitView/Attached/Effects.cs take a look at the end.
public class ParallaxEffectComposition : DependencyObject
Might be (I will learn when Composition team answers, they might be really really busy), you have to use the compositor of the ScrollViewer:
scrollerViewerManipulation = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(scroller as ScrollViewer);
 scrollerCompositor = scrollerViewerManipulation.Compositor;

I don't think that you can currently animate the scroll position of a scrollviewer - what you get back is a property set (GetScrollViewerManipulationPropertySet) and not a visual. I think you can only animate properties on a visual at the moment.

tomzorz is correct--the property set returned from GetScrollViewerManipulationPropertySet does not allow you to animate its values--it is purely for referencing to coordinate other animations.  Unfortunately, at the moment I don't believe there is a platform solution for what you are trying to do.

@likuba Although it'd be cool if we could :) +feature-request?

@tomzorz noted :) and don't forget to stay tuned for build where you'll be able to see what we are adding this release!

@likuba Can't wait :+1:

You can always use ScrollViewer.ChangeView along with a DispatchTImer:
    public MainPage()
    {
        this.InitializeComponent();
        Loaded += MainPage_Loaded;
        timer.Interval = TimeSpan.FromMilliseconds(500);
        timer.Tick += Timer_Tick;
    }

    private void Timer_Tick(object sender, object e)
    {
        gridScrollViewer.ChangeView(null, gridScrollViewer.VerticalOffset + 5, null, false);
    }

    private void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        PopulateData();
        gridScrollViewer = GetChildElement<ScrollViewer>(GV1);
        gridScrollViewer.DirectManipulationStarted += GridScrollViewer_DirectManipulationStarted;
        timer.Start();
    }

    private void GridScrollViewer_DirectManipulationStarted(object sender, object e)
    {
        timer.Stop();
        gridScrollViewer.DirectManipulationCompleted += GridScrollViewer_DirectManipulationCompleted;
    }

    private void GridScrollViewer_DirectManipulationCompleted(object sender, object e)
    {
        gridScrollViewer.ManipulationCompleted -= GridScrollViewer_DirectManipulationCompleted;
        timer.Start();
    }

But it won't be very performant or smooth.


error loading brainsprite in the doc

looks like sometimes the logo image is not yet added to the page when hook.ready is triggered.

So it's just an idea at this stage, but I do suspect that if an image is embedded in base64 directly in a page, it's parsed using the initial page upload, and there should not be delays in availability. I am going to check if that would fix the issue.

Finally solved using an iframe!!


New Crowdin updates

Codecov Report

Merging #381 (cc5ad47) into main (836b297) will decrease coverage by 0.37%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #381      +/-   ##
============================================
- Coverage     40.53%   40.16%   -0.38%
- Complexity     1292     1302      +10
============================================
  Files           200      206       +6
  Lines          9591     9824     +233
  Branches       2040     2103      +63
============================================
+ Hits           3888     3946      +58
- Misses         4796     4966     +170
- Partials        907      912       +5

Impacted Files
Coverage Δ

.../hufman/androidautoidrive/music/MusicController.kt
0.00% <0.00%> (ø)

...idautoidrive/phoneui/viewmodels/BindingAdapters.kt
0.00% <0.00%> (ø)

...oidrive/phoneui/fragments/MusicAppsListFragment.kt
0.00% <0.00%> (ø)

...rive/phoneui/controllers/MusicAppListController.kt
0.00% <0.00%> (ø)

...idautoidrive/phoneui/viewmodels/AddonsViewModel.kt
0.00% <0.00%> (ø)

...oidrive/phoneui/fragments/AddonAppsListFragment.kt
0.00% <0.00%> (ø)

...autoidrive/phoneui/fragments/AddonsPageFragment.kt
0.00% <0.00%> (ø)

...me/hufman/androidautoidrive/addons/AddonAppInfo.kt
0.00% <0.00%> (ø)

...rive/phoneui/controllers/AddonAppListController.kt
0.00% <0.00%> (ø)

.../hufman/androidautoidrive/addons/AddonDiscovery.kt
0.00% <0.00%> (ø)

... and 2 more

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 836b297...cc5ad47. Read the comment docs.

Codecov Report

Merging #381 (b3e458e) into main (ca351f4) will decrease coverage by 8.57%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #381      +/-   ##
============================================
- Coverage     48.96%   40.38%   -8.58%
+ Complexity     1508     1298     -210
============================================
  Files           206      206
  Lines          9664     9664
  Branches       2059     2059
============================================
- Hits           4732     3903     -829
- Misses         3913     4852     +939
+ Partials       1019      909     -110

Impacted Files
Coverage Δ

...dautoidrive/phoneui/fragments/MusicPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...dautoidrive/phoneui/viewmodels/SupportPageModel.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...autoidrive/phoneui/fragments/CarSummaryFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/MapSettingsFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/SupportPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/OverviewPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/SettingsPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...oidrive/phoneui/fragments/AssistantPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/ConnectionPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/DependencyInfoFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 65 more

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 ca351f4...b3e458e. Read the comment docs.

Codecov Report

Merging #381 (a645ab6) into main (ca351f4) will decrease coverage by 8.57%.
The diff coverage is n/a.

:exclamation: Current head a645ab6 differs from pull request most recent head b4d08bf. Consider uploading reports for the commit b4d08bf to get more accurate results

@@             Coverage Diff              @@
##               main     #381      +/-   ##
============================================
- Coverage     48.96%   40.38%   -8.58%
+ Complexity     1508     1298     -210
============================================
  Files           206      206
  Lines          9664     9664
  Branches       2059     2059
============================================
- Hits           4732     3903     -829
- Misses         3913     4852     +939
+ Partials       1019      909     -110

Impacted Files
Coverage Δ

...dautoidrive/phoneui/fragments/MusicPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...dautoidrive/phoneui/viewmodels/SupportPageModel.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...autoidrive/phoneui/fragments/CarSummaryFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/MapSettingsFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/SupportPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/OverviewPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/SettingsPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...oidrive/phoneui/fragments/AssistantPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/ConnectionPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/DependencyInfoFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 65 more

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 ca351f4...b4d08bf. Read the comment docs.

Codecov Report

Merging #381 (81dfc46) into main (ca351f4) will decrease coverage by 8.53%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##               main     #381      +/-   ##
============================================
- Coverage     48.96%   40.42%   -8.54%
+ Complexity     1508     1274     -234
============================================
  Files           206      204       -2
  Lines          9664     9414     -250
  Branches       2059     2006      -53
============================================
- Hits           4732     3806     -926
- Misses         3913     4726     +813
+ Partials       1019      882     -137

Impacted Files
Coverage Δ

...dautoidrive/phoneui/fragments/MusicPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...dautoidrive/phoneui/viewmodels/SupportPageModel.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...autoidrive/phoneui/fragments/CarSummaryFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/MapSettingsFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...utoidrive/phoneui/fragments/SupportPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/OverviewPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...toidrive/phoneui/fragments/SettingsPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...oidrive/phoneui/fragments/AssistantPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/ConnectionPageFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

...idrive/phoneui/fragments/DependencyInfoFragment.kt
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 72 more

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 ca351f4...81dfc46. Read the comment docs.


Add SAM2 point segmentation example

This is a somewhat minimal example of how I interact with SAM2 using pygfx currently.
I saw the proposed scheduling changes and thought it might be helpful to have this ready for comparison.

Marking as draft because I would like to get it to be fast again after the scheduling changes.

@claydugo i'm somewhat curious as to why any "qt import" needs to be made in this example. you might be able to get it fast now if you change the loop to be in a standard "pygfx managed" callback, and never import Qt whatsoever in your example.
Just a though.

yeah it might be a good example of how the "non-async workflow might suffer"!

I did pip install opencv-python sam2 and this alllowed me to run the example. It took me a minute to figure out that I had to move the green dot around :)
I also tried with the scheduling branch and I also observed what you told yesterday: the fps going down to 1. It's stuck at exactly 1 because that's the default min_fps. The problem is that the canvas does not receive the request for a new draw. I fixed that in the scheduling branch, and will also apply that in the rendercanvas.RenderCanvas.
Some more context: the qt.WgpuCanvas is intended to be used as a toplevel window. It wraps the qt.QWgpuWidget. In main there's a few lines:
def update(self):
        super().update()
        self._subwidget.update()

That were lost in the scheduling branch. I restored it now.
I actually expected people to use canvas.request_draw() and not canvas.update(), but obviously the latter makes much more sense once you're in qt land. So I also overloaded update() to call request_draw().  The effect is that it plays nice with the scheduling mechanics, instead of letting qt decide when to draw.
Small tip when using a canvas in a Qt app: use qt.QWgpuCanvas  (or soon the rendercanvas.qt.QRenderCanvas). It safes a little indirection by not using the wrapper widget.

I did pip install opencv-python sam2 and this alllowed me to run the example. It took me a minute to figure out that I had to move the green dot around :)

Haha sorry about that. I added some instructions to the docstring to hopefully clear that up.
I also removed opencv, I think this is written in a way that a user can drop in a larger image to accomplish the same test.
I modified this example to use QRenderCavnas now. For testing it required me to apply the following patch:

Renderer rendercanvas patch
diff --git a/pygfx/renderers/wgpu/engine/renderer.py b/pygfx/renderers/wgpu/engine/renderer.py
index e11ce42..376f9a5 100644
--- a/pygfx/renderers/wgpu/engine/renderer.py
+++ b/pygfx/renderers/wgpu/engine/renderer.py
@@ -9,6 +9,7 @@ import weakref
 import numpy as np
 import wgpu
 import pylinalg as la
+import rendercanvas

 from ....objects._base import id_provider
 from ....objects import (
@@ -130,7 +131,15 @@ class WgpuRenderer(RootEventHandler, Renderer):
         super().__init__(*args, **kwargs)

         # Check and normalize inputs
-        if not isinstance(target, (Texture, GfxTextureView, wgpu.gui.WgpuCanvasBase)):
+        if not isinstance(
+            target,
+            (
+                Texture,
+                GfxTextureView,
+                wgpu.gui.WgpuCanvasBase,
+                rendercanvas.BaseRenderCanvas,
+            ),
+        ):
             raise TypeError(
                 f"Render target must be a Canvas or Texture, not a {target.__class__.__name__}"
             )
@@ -148,7 +157,7 @@ class WgpuRenderer(RootEventHandler, Renderer):
         # Get target format
         self.gamma_correction = gamma_correction
         self._gamma_correction_srgb = 1.0
-        if isinstance(target, wgpu.gui.WgpuCanvasBase):
+        if isinstance(target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)):
             self._canvas_context = self._target.get_context()
             # Select output format. We currently don't have a way of knowing
             # what formats are available, so if not srgb, we gamma-correct in shader.
@@ -218,7 +227,9 @@ class WgpuRenderer(RootEventHandler, Renderer):
         """
         if self._pixel_ratio is not None:
             return self._pixel_ratio
-        elif isinstance(self._target, wgpu.gui.WgpuCanvasBase):
+        elif isinstance(
+            self._target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)
+        ):
             target_pixel_ratio = self._target.get_pixel_ratio()
             if target_pixel_ratio > 1.0:
                 return target_pixel_ratio
@@ -269,7 +280,7 @@ class WgpuRenderer(RootEventHandler, Renderer):
     def logical_size(self):
         """The size of the render target in logical pixels."""
         target = self._target
-        if isinstance(target, wgpu.gui.WgpuCanvasBase):
+        if isinstance(target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)):
             return target.get_logical_size()
         elif isinstance(target, Texture):
             return target.size[:2]  # assuming pixel-ratio 1
@@ -334,7 +345,9 @@ class WgpuRenderer(RootEventHandler, Renderer):
         # If the blend mode has changed, we may need a new _wobject_pipelines
         self._set_wobject_pipelines()
         # If our target is a canvas, request a new draw
-        if isinstance(self._target, wgpu.gui.WgpuCanvasBase):
+        if isinstance(
+            self._target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)
+        ):
             self._target.request_draw()

     @property
@@ -361,7 +374,9 @@ class WgpuRenderer(RootEventHandler, Renderer):
     @gamma_correction.setter
     def gamma_correction(self, value):
         self._gamma_correction = 1.0 if value is None else float(value)
-        if isinstance(self._target, wgpu.gui.WgpuCanvasBase):
+        if isinstance(
+            self._target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)
+        ):
             self._target.request_draw()

     def _set_wobject_pipelines(self):
@@ -569,7 +584,7 @@ class WgpuRenderer(RootEventHandler, Renderer):
             target = self._target

         # Get the wgpu texture view.
-        if isinstance(target, wgpu.gui.WgpuCanvasBase):
+        if isinstance(target, (wgpu.gui.WgpuCanvasBase, rendercanvas.BaseRenderCanvas)):
             wgpu_tex_view = self._canvas_context.get_current_texture().create_view()
         elif isinstance(target, Texture):
             need_mipmaps = target.generate_mipmaps

It is now running smoothly again on the scheduling branch. Thanks for the thorough review!

It would be cool to use WebGPU ONNX Runtime instead of PyTorch backend
https://onnxruntime.ai/docs/tutorials/web/ep-webgpu.html

This is ready for review!


Discord implementation

Alright, I'll squash and merge.

https://github.com/NucleusPowered/Phonon/commit/deb86edd8bb47127abdeabe8e0fe3339e9a6e7b4


V14 update

Updates examples and instructions to discord.js v14

I have fixed and updated a bunch of things, I removed the second example, I will likely add more but for now just the "hello world" example with two commands! Thank you for all of the work @klinegareth and for the feedback @supercrafter100!


Minimize and optimize the frontend code

When building the production version, the bundle size exceeds 1 megabyte, which increases response times.
The task is to reduce the size of the production code by optimizing the codebase, implementing lazy loading, and removing unused dependencies.

Added lazy loading for 'Editor' module and component and results by new building

AltLayer Airdrop Season One Update

🚀 Exciting Announcement!
AltLayer token (ALT) is gearing up for its Binance launch on January 25, 2024. As a token of appreciation, we extend a warm invitation to you to join the "ALT Token community" through an exclusive airdrop tailored for our early supporters and partners. Here's a quick overview:

Total Allocated ALT Tokens: 400,000,000 (4% of the total supply)

For a comprehensive breakdown of criteria and further details, refer to the complete announcement Oficial Website.
The window to Claim $ALT tokens is open from January 25 to February 08, 2024.
Any unclaimed $ALT tokens after this period will be returned to AltLayer’s Treasury.
We deeply appreciate your contribution to AltLayer's success! Stay tuned for more exciting developments in Season One.
Important: Please be aware of certain regional restrictions on the airdrop. Review the disclaimer before participating.
Bighala, @Veronika20008, @cheharda666, @adamsxd, @stardust112, @Man4741, @imtiyaza, @73alexstep, @wxidxi, @Yursch, @whatola, @Masvu, @Islamsaad95, @ranggaxxx69, @agrippajo, @dnamza-icloud, @avalidurl, @iqbwl, @delbinwen, @zenoUsman


Add some recent clarifications

The advice on function inlining now calls out explicit template instantiation.
The advice on TODOs now shows an example of CLion's unique style.
For a preview click here.

This change is

I added an example now, too.

... and now for the whole crew review:
+@EricCousineau-TRI
+@ggould-tri
+@rpoyner-tri
+@sammy-tri
+@soonho-tri
+@RussTedrake


A simple way to add/submit apps (plugins)

Is your feature request related to a problem? Please describe.
People want to be able to test their plugins on their local mobile phone without the need to build the app.
I went on multiple omi hackathons recently and people were really frustrated with the fact that they need to wait until someone approves their plugin to test on the mobile app.
Currently, there is no option to test my own plugin in the app without forking and building locally.
Describe the solution you'd like
We need to build a simple form that would allow people to submit their apps through the form. We can host the form on the web / in the omi app. Once submitted, the submitted app should be available to test locally RIGHT AWAY in omi. However, the app will not be available for all users right away and Omi team will need to review it (like we do it now in community plugins)

available for submitter right away
available for everyone else once approved by omi team

Solution based on my personal thoughts:
Move plugins data from the community-plugins.json file to Firebase (as a separate collection). Then provide a screen in the app for the user to create a plugin. Once they submit it, the plugin will be under review unless someone from the team approves it. While still being in review, the plugin will be usable by the creator themself. Once approved, everyone will be able to use it. This also enables the ability to have private plugins, users can select an option (on the screen) from the dropdown whether to make the plugin private or public.
This is just based on what I think would be a good approach in terms of keeping the UX simple.

Solution based on my personal thoughts:
Move plugins data from the community-plugins.json file to Firebase (as a separate collection). Then provide a screen in the app for the user to create a plugin. Once they submit it, the plugin will be under review unless someone from the team approves it. While still being in review, the plugin will be usable by the creator themself. Once approved, everyone will be able to use it. This also enables the ability to have private plugins, users can select an option (on the screen) from the dropdown whether to make the plugin private or public.
This is just based on what I think would be a good approach in terms of keeping the UX simple.

Planning to go with this approach, @kodjima33 @thinhx lmk what do you guys think of it

@mdmohsin7 sounds great to me. Not sure if removing community plugins json is great long-term. If @josancamon19 and @thinhx think it's good idea, you should start

nice to see you want to help Mohsin!
go with Firestore. we always need a database stay behind a rich(complicated) feature.
btw please focus on: How does the system work with the new state of Apps(as a sandbox). I would need to take a look at the system design or at least the sequence flow. Feel free to lmk when we have it.

This approach is only to move the json file to firestore, so in theory everything will stay the same architecture wise, only the source of the data changes. I did not exactly see how Adam is implementing apps but I am assuming through json only (as external integrations), so they should work just fine as well. The proposal is to convert the PR adding way to a UI way with additional fields like is_approved, is_private etc

https://github.com/orgs/BasedHardware/projects/1/views/1?pane=issue&itemId=83851149
Will remove this one then, as I guess that will be don ehere

Working on this!

Doc structure for both private and public apps
{
  "id": "xyz-123",
  "name": "app-name",
  "author": "mohsin",
  "author_id": "abc123efg456",
  "description": "this app does xyz",
  "image": "https://firebase-storage-link",
  "capabilities": ["memories", "chat", "external"],
  "memory_prompt": "this is conditional",
  "chat_prompt": "this is conditional",
  "deleted": false,
  "approved": true,
  "private": false,
  "external_integration": {
    "triggers_on": "transcript_processed",
    "webhook_url": "https://example.com/news-checker",
    "setup_completed_url": "https://example.com/done",
    "setup_instructions": "https://example.com/how-to-use"
  }
}

App Triggers:

@mdmohsin7 @sanjayamirthraj how's it going mans?

I think we should have it done in around 5 days? We are attempting to restructure the plugins format

Hopefully should be done in 2-3 days 😉

https://github.com/orgs/BasedHardware/projects/1/views/1?pane=issue&itemId=84453410&issue=BasedHardware|omi|1154

@mdmohsin7 quick recap pls then we move to the next phrase.
we might need to split this task then roll out the new one.

Progress:

Users can successfully submit public and private apps from within the Omi App
Once the apps are approved, if it's a memory app, then it will be triggered correctly
User can enable the newly added chat app and chat with it (once approved)
To be able to trigger unapproved and private apps, I will have to modify the Plugin Model to include new fields (private, approved) with default values. Should I? (this is the only thing that is pending)
The new system does not use the same redis cache for plugins

@beastoin I've attached some videos in #1232
The only thing that is left for the 1st phase is the triggers part.
Next Phase:

Change visibility of Apps from UI
Delete Apps from UI
Better segregation of private apps from public apps
Revamp Apps UI
Make external triggers more modular (ability to specify the exact datapoints they need like summary, action items, transcript etc)

To be able to trigger unapproved and private apps, I will have to modify the Plugin Model to include new fields (private, approved) with default values. Should I? (this is the only thing that is pending)

what is this for man ?
just limits max 3 users for a private app.

what is this for man ?
just limits max 3 users for a private app.

That is to be able to use plugins without them being approved

To be able to trigger unapproved and private apps, I will have to modify the Plugin Model to include new fields (private, approved) with default values. Should I? (this is the only thing that is pending)

you could simplify it by removing the private field, either keeping approved or even getting rid of it. you already have /users/:id/apps for the private apps + /apps/ for the public+approved apps.
the important things to consider are:
1/ ensure the old app(iOS/Android) version work, so let's upgrade the plugin API to +1 version while maintaining the logic with github json file for the old ver. you wouldn't need to deal with the img > src as well haha.
2/ the review submission flow must be simple. So, who would have the permission to approve apps and how would they know when new apps need approved ?
@mdmohsin7 ~ overall good progress btw not fast enough haha

1/ Yes that is what I am doing, created new routes. There are some routes which depend on the plugins data, like the memories route, it has a function _trigger_plugins which calls get_plugins_data. Should I create a completely new route for memories just so that it can use the new get_plugins_data_from_db or directly use get_plugins_data_from_db in the existing route? This should not have much effect as only the name, prompt and webhook URLs (if any) from that plugin is used and these things are same for both get_plugins_data_from_db and get_plugins_data
2/ The review process I am considering at the moment is when a plugin is submitted, a message will be sent on discord, and I'll simply curl the approve url with the plugin id. The team will be approving the apps
I hate dynamic languages hence not so fast progress haha. Jokes aside there were things I didn't new in our backend lol so it took some time to figure out the flow of each route
@beastoin

All in all, I should have the PR ready for review by EOD

1/ new router means new routers. haha. idea is the old app will see plugins from json file. that's all. the new plugin logic will affected for deeper logic layer e.g. utils, db
2/ oops. what about create a new PR to Github > plugin json file ? looks like json file is the source of truth haha, then we don't need the /apps as well 😏
anw, just gimme a PR by EOD @mdmohsin7 looking fwd

Accidentally unassigned myself if someone could add me back

1/ I got it, don't know why I did not think of this lmao
2/ It was the source of truth, but we are moving it to firestore right. Plus there isn't an easy way to open a PR with changes through GitHub API
Guess I don't have to modify the Plugin model, the apps will still be triggered now (even if unapproved) if the user has enabled them
@beastoin


feat: add filter functionality

make the filter functionality work
might want to discuss if we want to keep the filter after switching to an new activity or fragment
if so we have to use SharedPreferences to store the states

how about not exposing books as the list to be rendered. Let's create mutable live data filteredBooks, which observe books. Whenever a book is updated or delete, update books, which trigger to update filteredBooks as well. To handle filtering, we can just filter the books and set value to filteredBooks. The adapter will observe filteredBooks and update accordingly. This way, we don't need to keep a copy of book data and become desync.

how about not exposing books as the list to be rendered. Let's create mutable live data filteredBooks, which observe books...

agree. filteredBooks or whatever name it is, the list is a computed property that's for display only, affected by both filters and books  source. I met this very similar problem in the search functionality and MediatorLiveData got it done (I need to test that too). But @kdvuong 's method sounds good for this case.
https://github.com/CMPUT301F20T21/Book_Friends/pull/115/files#diff-d77f1a423a8ded0aa6c662992ce658416975f24ff25b9a8d8fc0561fb15144e8


bug: other images next to an image is visible in devtools

as of 1f39d1ef4c0e7deb701a990aeab3de9598da4813, issue appears resolved outside of "Inspect" devtools (not attempting to be responsive for purposes of this task)
full monitor:

narrower screen:

narrower screen (vertical):

however, devtools inspect still isn't right...

leaving this ticket open for now

as of ed8dab8 , images are no longer skewing. this was due to
object-fit: cover


Enable building an ensemble models from the cross validation checkpoints of a BYOL model

The method MLRunner.run_inference_for_lightning_models  takes a list of checkpoint paths as an argument, but then makes sure that there is only one used (here):
    if len(checkpoint_paths) != 1:
        raise ValueError(f"This method expects exactly 1 checkpoint for inference, but got {len(checkpoint_paths)}")

We want to change this so that the checkpoints gleaned from a BYOL cross validation run can be used as an ensemble model.

This will use the methods defined in the InnerEyeInference abstract class. We expect that these methods are sufficient, but an extension or redesign may be required.
Use the simple linear regression model as the basis of an exemplar.
We could run an end-to-end test using the UHB COVID-18 model, i.e. reproducing existing baselines and report.

AB#4219

Is this related to #377?


[SMALLFIX] Merge Packet{In,Out}Stream with Block{In,Out}Stream

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/15385/Build result: FAILURE[...truncated 2097 lines...][JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/keyvalue/pom.xml to org.alluxio/alluxio-keyvalue/1.5.0-SNAPSHOT/alluxio-keyvalue-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/pom.xml to org.alluxio/alluxio-parent/1.5.0-SNAPSHOT/alluxio-parent-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/oss/dependency-reduced-pom.xml to org.alluxio/alluxio-underfs-oss/1.5.0-SNAPSHOT/alluxio-underfs-oss-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/oss/target/alluxio-underfs-oss-1.5.0-SNAPSHOT.jar to org.alluxio/alluxio-underfs-oss/1.5.0-SNAPSHOT/alluxio-underfs-oss-1.5.0-SNAPSHOT.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/oss/target/alluxio-underfs-oss-1.5.0-SNAPSHOT-sources.jar to org.alluxio/alluxio-underfs-oss/1.5.0-SNAPSHOT/alluxio-underfs-oss-1.5.0-SNAPSHOT-sources.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/keyvalue/server/pom.xml to org.alluxio/alluxio-keyvalue-server/1.5.0-SNAPSHOT/alluxio-keyvalue-server-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/client/hdfs/pom.xml to org.alluxio/alluxio-core-client-hdfs/1.5.0-SNAPSHOT/alluxio-core-client-hdfs-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/keyvalue/common/pom.xml to org.alluxio/alluxio-keyvalue-common/1.5.0-SNAPSHOT/alluxio-keyvalue-common-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/client/fs/pom.xml to org.alluxio/alluxio-core-client-fs/1.5.0-SNAPSHOT/alluxio-core-client-fs-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/common/pom.xml to org.alluxio/alluxio-core-common/1.5.0-SNAPSHOT/alluxio-core-common-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/common/target/alluxio-core-common-1.5.0-SNAPSHOT.jar to org.alluxio/alluxio-core-common/1.5.0-SNAPSHOT/alluxio-core-common-1.5.0-SNAPSHOT.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/common/target/alluxio-core-common-1.5.0-SNAPSHOT-sources.jar to org.alluxio/alluxio-core-common/1.5.0-SNAPSHOT/alluxio-core-common-1.5.0-SNAPSHOT-sources.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/common/target/alluxio-core-common-1.5.0-SNAPSHOT-tests.jar to org.alluxio/alluxio-core-common/1.5.0-SNAPSHOT/alluxio-core-common-1.5.0-SNAPSHOT-tests.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/server/worker/pom.xml to org.alluxio/alluxio-core-server-worker/1.5.0-SNAPSHOT/alluxio-core-server-worker-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/glusterfs/dependency-reduced-pom.xml to org.alluxio/alluxio-underfs-glusterfs/1.5.0-SNAPSHOT/alluxio-underfs-glusterfs-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/glusterfs/target/alluxio-underfs-glusterfs-1.5.0-SNAPSHOT.jar to org.alluxio/alluxio-underfs-glusterfs/1.5.0-SNAPSHOT/alluxio-underfs-glusterfs-1.5.0-SNAPSHOT.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/underfs/glusterfs/target/alluxio-underfs-glusterfs-1.5.0-SNAPSHOT-sources.jar to org.alluxio/alluxio-underfs-glusterfs/1.5.0-SNAPSHOT/alluxio-underfs-glusterfs-1.5.0-SNAPSHOT-sources.jar[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/client/pom.xml to org.alluxio/alluxio-core-client/1.5.0-SNAPSHOT/alluxio-core-client-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/examples/pom.xml to org.alluxio/alluxio-examples/1.5.0-SNAPSHOT/alluxio-examples-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/pom.xml to org.alluxio/alluxio-core/1.5.0-SNAPSHOT/alluxio-core-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/core/server/proxy/pom.xml to org.alluxio/alluxio-core-server-proxy/1.5.0-SNAPSHOT/alluxio-core-server-proxy-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/shell/pom.xml to org.alluxio/alluxio-shell/1.5.0-SNAPSHOT/alluxio-shell-1.5.0-SNAPSHOT.pom[JENKINS] Archiving /home/jenkins/workspace/Alluxio-Pull-Request-Builder/tests/pom.xml to org.alluxio/alluxio-tests/1.5.0-SNAPSHOT/alluxio-tests-1.5.0-SNAPSHOT.pomchannel stopped
Test FAILed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/15386/
Test PASSed.

Merged build finished. Test PASSed.

@calvinjia PTAL. thanks

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/15393/
Test FAILed.

Jenkins, test this please.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/15394/
Test PASSed.

Merged build finished. Test PASSed.


Different prediction for MacOS High Sierra Vs Linux

I am using Xgboost in python, when using the same set of parameters on MacOS and Linux, it is giving me very different prediction results. I came across a link that mentions somewhat similar problem in R but didn't find any solutions. Initially I tried upgrading to 0.81 on macOS and Linux, but the issue still persists.  I would like to know if this issue has been fixed or is it still being worked upon. If it is fixed, how exactly shall I fix it.  Below is the set of parameters I have used.
xgb_params = {'max_depth': 3,
'learning_rate': 0.1,
'objective': 'reg:linear',
'min_child_weight': 5,
'subsample': 0.6,
'colsample_bytree': 0.8,
'seed': 4,
'silent': 1}
Any help would be highly appreciated.
Thank you

Are you running predictions with the same model? If you are training separate models on two machines, you won't get the same model (in general) even if the training parameters are the same.
To test, save your model on the Linux machine, copy it over to the Mac OSX machine, and run it there.

Thank you for the prompt reply.
Yes, I am training separate models. Kindly forgive me, if I am wrong. But if I keep everything same it should ideally give me similar results, no matter what the platform is?. Also, if I wanna get as much similar predictions irrespective of the platform , what shall I do?

It also makes me conclude that the MACOS implementation of XGBOOST is better than the Linux one.
Will this conclusion be logical?

But if I keep everything same it should ideally give me similar results, no matter what the platform is?

We do not make such guarantee. In particular, different platforms may implement random number generation differently.

Also, if I wanna get as much similar predictions irrespective of the platform , what shall I do?

You should train one model, save it, and re-use the trained model on multiple machines.

It also makes me conclude that the MACOS implementation of XGBOOST is better than the Linux one.

See my explanation above. Platforms have different implementations for standard C++ libraries, such as random number generation.

Thank you.


pdf() API

Page.printToPDF() documentation:
https://chromedevtools.github.io/devtools-protocol/tot/Page/#method-printToPDF
You can test this the same way as the screenshot example:
const { Chromeless } = require('chromeless')

async function run() {
  const chromeless = new Chromeless()

  const pdf = await chromeless
    .goto('https://www.google.com')
    .type('chromeless', 'input[name="q"]')
    .press(13)
    .wait('#resultStats')
    .pdf()

  console.log(pdf) // prints local file path or S3 url

  await chromeless.end()
}

run().catch(console.error.bind(console))

In src/chrome/local-runtime.ts, the new returnPDF() function shares most of its code with returnScreenshot(). Some abstraction can be done in the future to avoid code-duplication.

@joelgriffith I fixed the documentation error in f764f4e063a5935ff8f921677c36b168dce31966.

As for @lirantal's comments, I figure it's better to keep the implementation of returnPDF() as similar as possible to returnScreenshot() for now to make it easier to abstract out a file creation function in a future PR.

I'm really interested in the PDF feature. Is there something I could help with or would there be too many devs poking at the same feature?

Hi @kimmobrunfeldt It looks like @seangransee has nearly finished the feature—let's give him a bit more time to wrap it up.

I'll try to get to this today.
@kimmobrunfeldt, if you urgently need it in the meantime, the feature is totally usable in this branch. The only thing missing is the ability to pass in options, so right now the PDF be generated using the defaults.

@vladgolubev @adieuadieu The API can now optionally accept an options object, as discussed in https://github.com/graphcool/chromeless/pull/84#discussion_r130427061.
It's implemented in 67e72efca1442b547312965764fd376a8f95597c. Feel free to take a look.

In case anyone's interested in seeing some sample PDFs this generates:
chromeless
  .goto('https://www.google.com')
  .type('chromeless', 'input[name="q"]')
  .press(13)
  .wait('#resultStats')
  .pdf()

default.pdf

chromeless
  .goto('https://www.google.com')
  .type('chromeless', 'input[name="q"]')
  .press(13)
  .wait('#resultStats')
  .pdf({displayHeaderFooter: true, landscape: true})

header_footer_landscape.pdf

🔥 once we get another maintainer approval we'll merge this (hopefully get it staged for 1.1.0 release)

Using examples from the top and running on the master, I am getting PrintToPDF is not implemented anyone knows why?

PrintToPDF is internal CDT method. To print to pdf use pdf()

@gorangajic is correct. I'm getting that error as well when using pdf(). It was definitely working in the past. (And I have the PDFs to prove it 😄)
Maybe the switch to chrome-launcher has something to do with this error? I'm not entirely sure.

@gorangajic, take a look at #146. The error goes away for me when I manually start chrome in headless mode before running the example.


Qualification tool UI cosmetics and CSV output changes

Signed-off-by: Ahmed Hussein (amahussein<EMAIL_ADDRESS>fixes #5517, fixes #5564
Suggestions made by @mattahrens

Change the lower limit of "Recommended" to 1.3.

Make the single decimal for GPU recommendation.

RAPIDS Candidates (top box): put number right below the text to align with other top boxes; can leave % + text at bottom

GPU Opportunity (top box): add some designation related to task hours so it's clear that the units aren't wall clock durations; otherwise, it may be confusing that total in this box don't add up totals of the app metrics displayed in the dropdown

GPU Opportunity top box: can you sum up total durations and supported durations in wall clock (not task duration)?  Unless I'm misinterpreting it

Fix bug that the GPUSaveTime is not correctly rendered, and needs to be updated.

Cleanup the UI code: UI went through lots of experimental phases. Some code is not needed anymore. Also, review fieldnames

Add more details to the raw.html in order to be used as full detailed page.

New updates:

Add executive summary to CSV file (#5564)
Supporting "Not Applicable" category in UI
Enforce "Not applicable" to have lowest Speed-up in order to keep ordering for both CSV and UI stable for now.
Due to the limitation described in #5630, I added the fields trimming to maximum of 120 characters until the necessary changes are done.

build

can you up merge please @amahussein

build


Fix docker graceful shutdown

Context
When running grist on docker, the only way to stop the node process is to kill (or wait for docker stop  to kill the container after 10 seconds).
We can see that the bash pid remains, which seems to be a bad practice
docker exec -it 74196865e076 ps faux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          20  0.0  0.0   7640  2688 pts/0    Rs+  09:50   0:00 ps faux
root           1  0.0  0.0   2388  1408 ?        Ss   09:49   0:00 /bin/sh -c ./sandbox/run.sh
root           8  0.0  0.0   3736  2688 ?        S    09:49   0:00 bash ./sandbox/run.sh
root           9  9.0  0.5 1003572 194712 ?      Sl   09:49   0:01  \_ node _build/stubs/app/server/server.js

Instead we would like this situation:
docker exec -it f496a0a6fe273f59d288811deddb6a33f4105caf0f3ed43b485bb30d6afe92f1 ps faux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          18  0.0  0.0   7640  2560 pts/0    Rs+  09:53   0:00 ps faux
root           1 15.7  0.6 1003316 196020 ?      Ssl  09:53   0:01 node _build/stubs/app/server/server.js

Proposed solution
Here are two fixes:

In order to let nodejs gracefully shutdown, in run.sh, we run node using the exec command (this substitute the bash process with nodejs's one for pid #1)
We replace process.kill() with process.exit() which seems to stop the server without waiting (we are not 100% sure about this fix).

cc'ing @rouja @ohemelaar with whom I have pair-progged on this PR.

Hi @dsagal

In my understanding (and limited testing), just the second change is sufficient.

Does the "second change" refer to this commit: https://github.com/gristlabs/grist-core/pull/830/commits/a6259aa448eeda5414dc08999d663f472287303b?

Are you seeing something different? In particular, do you see a scenario where the server is logging "Server ... exiting on SIGTERM" and then not exiting promptly?

Yes, exactly: SIGTERM with docket stop command or SIGINT with CTRL-C. Both won't stop.
I use docker installed through Debian stable (bookworm) repository:
$ docker --version
Docker version 20.10.24+dfsg1, build 297e128

A tip we use in order to test that fix:
$ yarn build:prod
$ cp ./sandbox/run.sh ./sandbox/run2.sh # Not sure about that… someone in our team told us this avoids using the previous version of run.sh in the image
$ docker run --rm -v $(pwd):/grist -p 8484:8484 --name grist_latest gristlabs/grist:latest /grist/sandbox/run2.sh

and then either try ctrl-c or docker stop.

Also I just installed docker version 25.0.1 (following this procedure), I've got the same problem.

Thanks for the more details @fflorent . I learned something new today about running things in docker!
The reason I was looking to avoid process.exit(0) inside of a signal handle is that it hides the fact that the process was killed. Normally, the exit code reflects the reason for the exit (like, which signal stopped the process). In most cases, like running Grist locally or in grist-omnibus, the current code works as intended: on receiving a signal, it does its cleanup, then re-sends the same signal, which is no longer caught, and causes it to exit with the expected exit code for that signal. But not in grist-core, when exec is added to run.sh.
Turns out, the reason is that the main container process with PID 1 is special and cannot be killed from inside a container. I found a good explanation at https://daveiscoding.com/why-do-you-need-an-init-process-inside-your-docker-container-pid-1.
The recommendation there is to run docker with --init flag. With that flag, the exec env change is sufficient -- container will now exit as expected as soon as Grist finishes cleanup. (In effect, it runs a wrapper process as the PID 1 process, one based on tini.)
The other option is to keep your change, and address my concern by setting the process exit code to the expected one. This is possible with this tweak (in place of process.exit(0)):
        // Exit with the expected exit code for being killed by this signal.
        const signalNumber = os.constants.signals[signal];
        process.exit(128 + signalNumber);

The --init option has other benefits (cleanup of orphaned processes), and seem generally recommended by docker. But the process.exit approach should be fine for this purpose and doesn't require a new flag.
@paulfitz or @fflorent , do either of you have an opinion about the preferred approach? I'd be OK with either of these.

Thanks for your feedback @dsagal.
The --init option seems a good way to handle this. @rouja and I will look at whether Kubernetes has an equivalent option (shareProcessNamespace: true seems a good candidate).

Hello,
I did some tests on  a k8s cluster. If we set shareProcessNamespace: true on the deployment, we don't need the commit 0f76ada845a6b45844f2575c5bbc14b370f736fe.
But we forgot a change in the first commit. In order to have everything working, in the Dockerfile we need to replace :
CMD ./sandbox/run.sh

by
CMD ["/sandbox/run.sh"]

As @dsagal suggests in his comment.

Thanks @rouja for your feedback, I have integrated the remark and reverted https://github.com/gristlabs/grist-core/commit/0f76ada845a6b45844f2575c5bbc14b370f736fe

@dsagal Thank you for your review! Is it OK to merge or do you need anything beforehand? :)

Sorry @fflorent , forgot that step again 🙂

Hi there, I've noticed recently that it doesn't seem possible to stop Grist with ^C anymore when it is run like this:
docker run -p 8484:8484 -it gristlabs/grist

This is the command given in the README for people trying out Grist for the first time. @fflorent do you see this behavior too?

I do too (I have not tested on my usual laptop, but it has to be fixed, I take the issue)


bengali language feature added

Thanks for the translation @AyemunHossain!
Please consider adding Bengali to Grid Garden as well.


Add Zoneless struct to include script/account id info

I noticed that actually zoneless is more than one piece of information as far as what you need to "deploy", so created a struct that carries the script name and the account id, updated tests to use it.

make webpack_build test toml for "legacy" parsing

closing in favor of cleaner prs: one for functionality, one for tests.


Move setup_entities to Startup phase

Running setup_entities during the Update phase was causing major performance issues. It should only need to be called once. Otherwise the example will hit major frame rate and memory issues.
 Thank you for spotting it and fixing it!


Emb dsa gr

The files samples/deeplearning/embbag_distri/dsa.cpp and samples/deeplearning/embbag_distri/dsa.h appear to have conflicts with the current revision of LIBXSMM. You can either merge or rebase LIBXSMM/main. If @ddkalamk otherwise approves this PR, I can also help applying it like resolving the conflicts (let me know).

Please ignore this change, I will have tp push this code to an internal repo for now.

ACK, let me then close this PR.


threadPause support?

Looks like this is not supported in dotnet version yet?

Hello, thanks for asking. Yes, currently there is no api in dotnet as it is in java, but it should be easy to add. We will consider it for next release.

We recently released a new version which includes ThreadPause. I am closing this ticket, but feel free to re open it.


[webview_flutter] V4 webview migration

Documentation not clear enough how do I upgrade the following code after V4
final Completer<WebViewController> _controller = Completer<WebViewController>();
WebView.platform = SurfaceAndroidWebView();

WebView(
            initialUrl: widget.url,
            javascriptMode: JavascriptMode.unrestricted,
            onWebViewCreated: (WebViewController webViewController) {
              _controller.complete(webViewController);
            },
           navigationDelegate: (NavigationRequest request) {}
            onProgress: (progress) {},
            gestureNavigationEnabled: true,
          ),

Please don't use the PR system for reporting issues.
Closing as this is not a PR.


Tests are broken with iPhone5

There are some issues with the iPhone5 (simulator).
Some tests (3) don't pass

Closed. Please re open it in the proper repo