Gramine PAL API adaption

For this adoption, I come up with the following steps to achieve it according to our talks.

Determine the core interfaces of PAL APIs @YangLiang3 @bigdata-memory @ying2liu
Design the workflows associated with those core interfaces @YangLiang3 @bigdata-memory @ying2liu
Define the requirements about Gamine-SGX changes @ying2liu @bigdata-memory
Collect the feedbacks from Gramine community @ying2liu @bigdata-memory
Identify the constraints, custom changes, risks for Gramine adoption @ying2liu @bigdata-memory
Abstract and define some acceptable Gramine specific APIs for adoption @ying2liu @bigdata-memory
Consider adding some extensive interfaces to PAL API design to accommodate special needs of Gramine  @YangLiang3 @bigdata-memory
Present the consolidated solution in Gramine meetings to reach some agreements @ying2liu @bigdata-memory
Implement a PoC to validate that the adoption workflows work as expected @ying2liu
Review and verify the PoC under the whole picture of enclave-CC @YangLiang3 @ying2liu @bigdata-memory
Develop a production version of PoC and PR for community review @ying2liu @bigdata-memory
Maintain this adoption along with the upgrading of Gramine-sgx and PAL APIs design. @ying2liu @liang @bigdata-memory

This looks good to me

Vijay and I discussed about enclave-cc architecture and interfaces with gramine with @YangLiang3 @bigdata-memory.
Gramine doesn’t support multiple processes in one enclave.  We must use different enclaves for the services (image service etc.), which is different approach from the original design. We could use local attestation to ensure the integrity. This might add some performance overhead, but if the overhead is significant, we could add enclave multi-process support to gramine (it might take some time).

good point Ying. I think this also depends on the design of enclave agent. I think we should make the enclave agent only one process. the "image service" and "attestation agent" in the enclave agent should be considered module, not process. at the end, the enclave agent is one process if we can.

Regarding the idea of separated Gramine-sgx processes will add extra complexity, IMHO, it does not only introduce some performance overhead, but also consume much more precious SGX EPC resources (even with EDMM enabled, the Gramine-SGX runtime will be duplicated 4 times at least). Not to mention that the attack surface will been much enlarged.

About PAL API's summary, let's discuss more according to your requirements.

For more details, please refer to the following link:
https://github.com/inclavare-containers/inclavare-containers/blob/master/rune/docs/pal_programming_guide.md
https://github.com/inclavare-containers/inclavare-containers/blob/master/rune/libenclave/internal/runtime/pal/spec.md
https://github.com/inclavare-containers/inclavare-containers/blob/master/rune/libenclave/internal/runtime/pal/spec_v2.md

@hdxia @bigdata-memory I fully agree on your comments and actually making AA and image-rs as a single process is the initial idea of enclave-cc. The only problem here is how AA is implemented as lib crate to allow to be imported by enclave-agent. @jialez0 is the maintainer of AA. He has opened an issue to discuss this: https://github.com/confidential-containers/attestation-agent/issues/53

@YangLiang3 thanks for your time in discussing the requirements with @ying2liu and me and for providing the details on the PAL APIs.
Gramine currently doesn't support

Multiple processes within an enclave.
Creating an empty enclave and not running any application.
Using exec to reuse the same enclave to launch another application.

I don't think we can do anything about gap 1 for now but let us not make the perfect enemy of good. I suggest we proceed with having a single process within an enclave and adding libraries/modules to the enclave as needed and doing a PoC first. Then evaluate with respect to performance, scalability, and EPC memory usage.
But we do have some ideas on how to resolve gaps 2 and 3 as mentioned above and integrate these APIs in Gramine. The implementation of these APIs could slightly vary for Gramine. Please see below,

Pal_init() could create an enclave with a dummy application that will simply wait for the real application. (This can address issue 2 as mentioned above)
Pal_exec() could talk to the dummy application which would then exec the real application. (This can address issue 3 as mentioned above)
Pal_create_process could create a new enclave and launch the application.

The other 3 APIs (Pal_get_version, Pal_kill, and Pal_get_localreport), could be supported without much effort.
What do you think?
PS: This is just an initial thought based on our internal discussions and not a design approved by Gramine maintainers.

From design perspective, IMHO, the semantic of Pal_init is Do libos initialization according to the incoming attr parameters.,  if the a dummy application can serve this purpose, it could be named as Gramine-SGX init. module to avoid any confusion.
Regarding the Pal_exec, it is defined as Execute the program corresponding to pid., so it would be invoked with pid obtained from Pal_create_process. I don't see the exec family of functions can accept the 'pid' as its argument because the new process image should have already been created by Pal_create_process  that's why it cannot be used to replace the so-called a dummy application process image.
For Pal_create_process could create a new enclave and launch the application, I think it creates a totally different sandbox context to the previous invocation of Pal_init, not to mention, the EPC resource consumption, complexity and security concerns.

@hdxia Thank you so much for your input. We will have further discussion with enclave-cc stakeholders to get better understanding about the requirement. At the same time, we also have to consider Gramine's limitation.

I think the three APIs: Pal_init(), Pal_create_process() and Pal_exec() are defined based on Occlum with enclave multi-process support. Occlum could initialize enclave and create processes in the enclave, but for gramine, only single process is supported in enclave. Even though we could use the same API names, but their internals will be different from Occlum.

@jiazhang0 @YangLiang3 I found that the some of rune Sub Commands can not be well supported; because the semantics of command exec allows asynchronously running multiple applications after command create. as we know the Gramine-sgx is only capable to run single process so far. please see the following combinations in detail for clarification.

Combination of   rune subcommands
The design   considerations of Gramine-sgx  adoption
Supplemental info.

create->exec               ->exec               ->exec
Not supported;   until Gramine can run multiple process concurrently inside the same Gramine   enclave instance
Async. exec

create->start               ->start               ->start
May supported if   the Gramine can handover the control to init component after the previous   process got terminated; this feature has not yet been implemented but it is   acceptable to Gr community
execSync()

run
supported
Just invoking   pal_exec() once after pal_init()

delete
May supported; as   the impl. of pal_destroy() can send SIGINT/SIGTERM to Gramine-sgx; as the Gr   already support handling such signals to stop running process inside enclave

kill
supported

attest
Partially   supported; because the SGX REPORT can only be available to retrieve after   application actively writes its user data to two pseudo files, i.e.   /dev/attestation/user_report_data & target_info; therefore, the timing of   invoking pal_get_local_report() is constrained by  the application-specific operations   associated with user report data and target info.
Suggest retrieving   SGX QUOTE instead if possible to avoid relying SGX target_info

yesterday's slide

Backup Solution of Gramine-SGX adoption for RunE API Integration
Pros:

Fast transform of container image if already cached (accredit to @vahldiek)
No changes to Gramine-SGX
Asynchronized Execution supported
Workload got measured together

Cons: (Due to lack of FS volume support in Gramine)

File system structure revealed for app container.
Gramine-sgx may not be used for Agent Enclave.

(I had completely missed this thread even if I'm watching this repo)

Backup Solution of Gramine-SGX adoption for RunE API Integration

@bigdata-memory is this being discussed somewhere or is it just an idea you shared here and asking for feedback?

I also missed this thread until mythi pointed it out.
Note that the original design was to match the VM-based usage, wherein the workload is not measured.
Similarly the app enclave would not need to attest to an external relying party. The App Enclave was intended to have a simple process capable of loading in the actual container. The simple or stub process would be the workload from the perspective of local attestation, which is only required for getting the encrypted filesystem key.

@mythi  This is a backup solution I mentioned in meeting, and yes, conceptually, it is basically an alternative way to achieve the similar goal, we may consider this to hedge the risks in which plan A doesn't work under some constraints or assumptions broken. but any feedbacks or suggestions are warmly welcome, thanks.

By the way, the backup solution doesn't include the attestation flow yet, I can add it according to V4 API if desired, thanks.

@jiazhang0 is this issue still relevant or can be closed?
If it's still relevant to what release do you think we should map it to (mid-November, end-December, mid-February etc...)?

@jiazhang0 is this issue still relevant or can be closed?

@jiazhang0 I'd think we could close this for now and re-open later if any PAL API changes become relevant. Agree?

cc: @ying2liu @bigdata-memory

sure, please close it, thanks.

closed for now, will reopen if needed


[DataPipe] Add RoundRobinDemux

The only reason I added this DataPipe without directly using enumereate().demux().drop_index() is this RoundRobinDemux should provide a valid length. So, this PR needs https://github.com/pytorch/pytorch/pull/89216 landed
And, this DataPipe will be used for Proto2RS.
Side change: Move Unzip to combining.py as well.

Failed tests should be fixed the the PR in PyTorch Core landed.

Failed tests should be fixed by https://github.com/pytorch/data/pull/905

Why demux and unzip data pipes are in combining.py ? (shouldn't they be in splitting.py)?

Why demux and unzip data pipes are in combining.py ? (shouldn't they be in splitting.py)?

Aha. We categorized DataPipe into a few sectors. See: https://pytorch.org/data/beta/index.html We put them together as they are the counter party of mux, zip, etc., and we don't have such a mount of DataPipes.
When https://github.com/pytorch/data/issues/293 is done, we probably need to make them into combining.py and splitting.py.


Anyway to get this to run using Phonegap Serve?

I've added this plugin for my app and successfully got this working using the iOS simulator. However if I try and run it via Phonegap Serve to test it using the PhoneGap Developer app it pops up with "Error: Can't find variable: YoutubeVideoPlayer". Not sure if I'm doing something wrong including it in my app or if there isn't a way to get it running it using Phonegap Serve.
p.s. the reason I'm testing this plugin out over just embedding an iFrame is that the embedded iFrame approach doesn't has the audio silent when the iPhone button is set to mute. Can you tell me if this plugin suffers the same issue?

I am using this on Meteor and I also got this working using the iOS simulator.  I believe I saw the same message as you do when I tested it on my iPhone via a Xcode build.  I have also tried the iFrame API and it worked in browser mode but not in mobile mode.  Can someone shed some light on why we are seeing this issue?

@ronaldso55 How did you add this package to Meteor?


Not working on windows os(not wsl)

Hi
I have issue as below figure, I not sure it's supported windows os (neovim on windows not wsl)

Sorry, this plugin is not supported on Windows yet, but have planned to support WSL, you can follow this issue for more detail

Hi, can you develop it to support Windows? The image exported from your plugin is really nice, and I really love it 🥰

I'm not familiar with Windows, It may take a long time to support it

I'm not familiar with Windows, It may take a long time to support it

A Windows port would be great 👍.

I'm not familiar with Windows, It may take a long time to support it

I can wait for you release version support windows os.


Only sync when there is something to do

Prior to this commit we'd be going through all the motions of syncing with Redshift even if there was nothing to do! Good catch @gnilekaw.
Note that while I considered reducing the duplication between nothing_to_sync? and update_finished_imports, I think it's fine. Check this out:
> Import.where(state: ImportMicroMachine::FINISHED).any?
   (0.3ms)  SELECT COUNT(*) FROM "imports" WHERE "imports"."state" = $1  [["state", "finished"]]
=> false

That count statement is going to be really fast and if you extracted the Import.where(state: ImportMicroMachine::FINISHED) part, then you'd lose ActiveRecord's ability to optimize.

🌮


Date values are inconsistent

test.xlsx
This sheet has two cells of the same date 2017/04/04 20:00:00 GMT+0800.
But after parsed (in browser):
sheet.cell('A1').value() // 42829.8333333333
sheet.cell('B1').value() // 42829.833333333336
XlsxPopulate.numberToDate(42829.8333333333) // 2017/04/04 19:59:59
XlsxPopulate.numberToDate(42829.833333333336) // 2017/04/04 20:00:00

Sorry I can't reproduce Cell A1. It was input by a user and I just pasted it there.

Just checked out sheet1.xml, A1's value is 42829.833333333299 and B1's 42829.833333333336 and according to dateConverter.js, milliseconds will be<PHONE_NUMBER>999.997 and<PHONE_NUMBER>000.
It seems that Date constructor uses parseInt when it receives a number so A1 is wrongly<PHONE_NUMBER>999. Maybe here we need Math.round before passing it to the constructor?

Great catch! Thanks for the PR. I merged it and just published v1.5.2 with your fix.


[JS] Topic: GraphQL

Description 📜
GraphQL from basics to advanced including topics of creating, reading, updating, deleting functionality
Fixes #7408

Type of change 📝

[x] Documentation (Content Creation in the form of codes or tutorials)

Domain of Contribution 📊

[x] JavaScript_#Domain

Checklist ✅

[x] I follow Contributing Guidelines & Code of conduct of this project.
[x] I have performed a self-review of my own code or work.
[x] I have commented my code, particularly in hard-to-understand areas.
[x] My changes generates no new warnings.
[x] I'm GWOC'21 contributor

Screenshots / Gif (Optional) 📸

@paramsiddharth Please review this PR and suggest some changes needed to be done.
Thanks

@its-me-Harsh-Anand Oh I see, so keep as it is:-)

@its-me-Harsh-Anand Oh I see, so keep as it is:-)

Okay mam

@Creatoon @dakshsethi @amino19 Please review.


Is there a way to turn off swiping animation for controllers at beginning and end?

Right now if you swipe right from the initial controller, it starts the animation even though there's nothing to swipe to. Is there a way to disable this animation?

I've never tried, but it should be possible.  That's default pageviewcontroller behavior that you're trying to get rid of.  What you would need to do is dig up the UIScrollView inside the pageviewcontroller and tell it not to move when you're swiping in a certain direction on a certain page.
I already dug up the scrollView (I think the property is just called scrollView), and you'll have to mess with scrollview delegate functions. I'm sure people have done this before, i would look it up first. it might actually be as easy as saying something like scrollView.springsAtEdges = NO or something like that (that's not a real property, just an example)

Hey Richard, thanks for the thoughtful response! And thanks a lot for making this library, it's great! :)
I first looked at http://stackoverflow.com/questions/5370428/uiscrollview-disable-scrolling-in-just-one-direction, but that solution was buggy. However, I found that for whatever reason setting .bounces = NO; on one end disabled the animation on the other end too. So I eventually wound up with this solution
if (self.currentPageIndex == 0 || self.currentPageIndex == 2)
    scrollView.bounces = NO;
else
    scrollView.bounces = YES;

in -(void)scrollViewDidScroll:(UIScrollView *)scrollView, which works perfectly for what I want it to do. 0 and 2 in this instance are my edge views.


Information about SQL Error 33134

Largely, this is to improve awareness about the correlation between SQL Server and Conditional Access, and how CA policies can prevent the function of CREATE USER FROM EXTERNAL PROVIDER.
I also touch on the fact that service principals cannot execute this command.

@SarahKirksey : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Looks good


logger does not output the contents of property name

Node.js version: 18
Impacted package(s): logger
Steps to reproduce
With the following code:
	console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@")
	console.log(app.id)
	console.log(app.name)
	console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@")
	logger.info({
		event: 'STARTING_APP_ANALYSIS',
		name: app.name,
		id: app.id,
		progress: count,
		target: apps.length,
	})

The console.log outputs the contents of app.name whereas the logger.info does not output the name property - just the id, progress and target.  If I use a value different to name eg geoff then the contents of app.name is output

Confirmed with @GeoffThorpeFT that name gets moved when pino-pretty is enabled but it does appear in the JSON when you disable the prettifier. Might be that we can stop it from doing this.

This is similar to #1069, I think it's not solvable unfortunately. The data does appear in production so I'm not particularly worried about it.


Environment Variable and Volume Mount

Slightly related to : https://github.com/Azure/secrets-store-csi-driver-provider-azure/issues/99
Perhaps my understanding isn't correct, or the documentation could be clearer:
What I am trying to achieve: read a value from the KV, present it as an environment variable for the deployment, via a Kubernetes secret. The two secrets are a username & password
What works:
A clean namespace, I deploy the SecretProviderClass reading the secrets and syncing with Kubernetes secrets
I deploy the nginx-secrets-store and verify the secret exists in the ns
I can deploy my application OK - the pods start as they find the secret and it is converted to an environment variable.Bingo!
What does not work / what I would expect:
A clean namespace, I deploy the SecretProviderClass reading the secrets and syncing with Kubernetes secrets
I  deploy my application pods don't start as they don't find the secret. The deployment yaml should mount the volume and create the secret as per the nginx-secrets-store deployment. I can't see what is different about they way I am mounting the volume and the way the nginx-secrets-store is mounting the volume.
My question - Should I have to deploy the  nginx-secrets-store  before deploying my application?
I thought from the documentation that  nginx-secrets-store was only for testing the config?
Thanks

@adamcarter81 This is a sample deployment for using the secret content as env vars -
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx0
  labels:
    app: nginx
spec:
  replicas: 250
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        volumeMounts:
          - name: secrets-store-inline
            mountPath: "/mnt/secrets-store"
            readOnly: true
        env:
         - name: FOO_SECRET1
           valueFrom:
             secretKeyRef:
               name: foosecret
               key: bar
      volumes:
        - name: secrets-store-inline
          csi:
            driver: secrets-store.csi.k8s.io
            readOnly: true
            volumeAttributes:
              secretProviderClass: "azure"
            nodePublishSecretRef:
              name: secrets-store-creds

and this is the SecretProviderClass
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
  name: azure
spec:
  provider: azure
  secretObjects:
  - data:
    - key: foo
      objectName: secret1
    - key: bar
      objectName: secret2
    secretName: foosecret
    type: Opaque
  parameters:
    usePodIdentity: "false"
    keyvaultName: "$KEYVAULT"
    objects: |
      array:
        - |
          objectName: secret1
          objectType: secret
          objectVersion: ""
        - |
          objectName: secret2
          objectType: secret
          objectVersion: ""
    tenantId: "$TENANT_ID"

My question - Should I have to deploy the nginx-secrets-store before deploying my application?

No, that's a sample pod. You could do the same with your application pod/deployment. Please note, the volumes is required. The sync with Kubernetes secrets is an optional feature that depends on the mounted content. If you're still having issues after using the above manifests, please provide the SecretProviderClass and deployment manifest yaml that you're using.

Thanks for clarifying the expected behaviour @aramase
I can only get the secrets to be presented by mounting the nginx-secrets-store pod - otherwise the secrets don't get mounted by my main deployment and that pod won't start.
If I start by just deploying the SecretsProviderClass, then my main deployment below, I receive this error on pod start up:
`Events:
Type     Reason       Age               From                                    Message

Normal   Scheduled             default-scheduler                       Successfully assigned dataapi-v2-kris/dataapi-deployment- to aks-linux-35064155-vmss000001
Warning  FailedMount  6s (x6 over 21s)  kubelet, aks-linux-35064155-vmss000001  MountVolume.SetUp failed for volume "secrets-store-inline" : fetching NodePublishSecretRef dataapi-v2-kris/loginsecret1 failed: kubernetes.io/csi: failed to find the secret loginsecret1 in the namespace dataapi-v2-kris with error: secrets "loginsecret1" not found`
If I check the present secrets - none are loaded
Here is the SecretProviderClass:
`apiVersion: secrets-store.csi.x-k8s.io/v1alpha1
kind: SecretProviderClass
metadata:
name: azure-kvname
spec:
provider: azure
secretObjects:                                 # [OPTIONAL] SecretObject defines the desired state of synced K8s secret objects

secretName: loginsecret1
type: Opaque
data:

objectName: DB-PW                         # name of the mounted content to sync. this could be the object name or object alias
key: DB-PW
parameters:
usePodIdentity: "true"         # [OPTIONAL for Azure] if not provided, will default to "false"
useVMManagedIdentity: "false"   # [OPTIONAL available for version > 0.0.4] if not provided, will default to "false"
userAssignedIdentityID: ""  # [OPTIONAL available for version > 0.0.4] use the client id to specify which user assigned managed identity to use. If using a user assigned identity as the VM's managed identity, then specify the identity's client id. If empty, then defaults to use the system assigned identity on the VM
keyvaultName: "kv-aks-lab"          # the name of the KeyVault
cloudName: ""          # [OPTIONAL available for version > 0.0.4] if not provided, azure environment will default to AzurePublicCloud
objects:  |
array:

|
objectName: DB-PW
objectAlias: dbpw_1     # [OPTIONAL available for version > 0.0.4] object alias
objectType: secret        # object types: secret, key or cert
objectVersion: ""         # [OPTIONAL] object versions, default to latest if empty
resourceGroup: "rg-aks-lab"            # [REQUIRED for version < 0.0.4] the resource group of the KeyVault
subscriptionId: ""         # [REQUIRED for version < 0.0.4] the subscription ID of the KeyVault
tenantId: ""                 # the tenant ID of the KeyVault`

Deployment manifest:
`apiVersion: apps/v1
kind: Deployment
metadata:
name: dataapi-deployment
labels:
app: dataapi-v2-kris
spec:
replicas: 1
selector:
matchLabels:
app: dataapi-v2-pod
template:
metadata:
labels:
app: dataapi-v2-pod
aadpodidbinding: azure-kv
spec:
volumes:
- name: secrets-store-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "azure-kvname"
nodePublishSecretRef:
name: loginsecret1
  containers:
  - name: dataapi-container
    image: .
    imagePullPolicy: Always
    volumeMounts:
    - name: secrets-store-inline
      mountPath: "/mnt/secrets-store"
      readOnly: true
    ports:
    - containerPort: 80

    env:
    - name: ConnectionStrings__MagsConnectionSql
      valueFrom:
        configMapKeyRef:
          name: appconfig1
          key: ConnectionStrings__MagsConnectionSql
    - name: DB-USERID
      valueFrom:
        configMapKeyRef:
          name: appconfig1
          key: DB-USERID
    - name: DB-PW
      valueFrom:
        secretKeyRef:
          name: loginsecret1
          key: DB-PW

apiVersion: v1
kind: Service
metadata:
name: dataapi-v2-service
spec:
selector:
app: dataapi-v2-pod
ports:

port: 80
targetPort: 80
name: http-80
`

I was running this deployment to mount the secrets, then my pod would start:
kind: Pod apiVersion: v1 metadata:   name: nginx-secrets-store   labels:     aadpodidbinding: azure-kv spec:   containers:     - name: nginx       image: nginx       volumeMounts:       - name: secrets-store-inline         mountPath: "/mnt/secrets-store"         readOnly: true   volumes:     - name: secrets-store-inline       csi:         driver: secrets-store.csi.k8s.io         readOnly: true         volumeAttributes:           secretProviderClass: "azure-kvname"

Update - I removed the nodePublishSecretRef and it started OK, secret is present in the namespace!
I must have picked it up in one of the sample docs somewhere - but now I can't find a reference for what it is for?

@adamcarter81 nodePublishSecretRef is only required if you're using Service Principal for accessing Key Vault.

Thanks!


Datasets not updated when the project status is updated to with "is_public" - true

Updates of the projects/studies "is_public" flag, are not propagated to the underlying models in the hierarchy.

I tried to replicate this issue in my local, dev & prod site. Seems to work fine.

Making a project public makes the underlying study public too partially as one can visit the study from the public view of the project, however, using the public link for the study doesn't work

The sharing issue can be tracked here. #43


Benchmarks for performance of application startup on mobile/desktop & web

In order to display an Asset Image, the flutter application must first load and parse the AssetManifest, a JSON file that is stored in the application's flutter_assets directory. This file contains a mapping between the asset name and the file URI the engine will use to load it, as well as asset variant information.
Previously an isolate was used to decode the asset manifest, which reduced lag at the cost of increased total time. Recently I increased the size before the isolate is used to 50 MB, which should include the vast majority of asset manifests. Thus the potential bottlenecks are:

UTF8 decoding was previously slow in Dart, though has improved significantly.
JSON decoding is still quite slow, on the order of milliseconds.
Spawning an Isolate is incredibly slow (hundreds of ms) in debug mode, quite slow in release mode (ms)

The entire parsing/decoding/isolate spawning stack could be bypassed for the AssetManifest by generating a data structure in Dart at compile time, and using that for the mapping instead. This wouldn't be too difficult for code generation, but it would complicate the build more, and especially the hot reload process. It would likely require generating a synthetic entry-point like the web platform does, which might be confusing if users connect a debugger and do not recognize the main. In addition for the web platform, the FontManifest could be generated and injected into the engine as well.
In order to justify this sort of work, we would need some sort of benchmarks that we could use that demonstrate a measurable improvement on the startup performance of an application, for example:

[ ] time to first fully painted frame (including asset)
[ ] FPS during startup
[ ] memory usage during startup
[ ] CPU usage during startup
[ ] and probably more...

This sort of benchmark would likely be different between mobile/desktop and the web.
@liyuqian @zanderso

@liyuqian Do you know of any benchmarks we already have that cover any of these casees?

There are several "*_start_up" benchmarks that currently capture "time to first fully painted frame". On iOS, we should be able to add memory and CPU usage to those tests as they're available in timeline trace events.
FPS is something that we don't measure right now. The frame build time and rasterization time would be a good proxy to it.

The AssetManifest would be deferred until an image is requested, do the apps that are being run have asset images on the front page + reasonably sized asset manifests (10-20 KB)?

The "complex_layout_*" one should have images on the front page according to my visual inspections. flutter run --start-paused can be used to make sure that the first frame does include images.

does the first frame rasterized include time to render the image, or would that happen on a later frame?

Most likely on a later frame because the image needs to be decoded on the IO thread and the first frame won't wait for that.

We would need to somehow include the imagine timing to measure any improvement here

@liyuqian could you recommend how to add a new benchmark or modify an existing one to get useful numbers for this?

One possibility is to find the timestamp of the ImageDecodeCallback timeline trace event

The asset manifest is no longer a JSON structure as of https://github.com/flutter/flutter/commit/313b01658a8be21a1bc76e3c6b2ab3ab43e09bcf (though https://github.com/flutter/flutter/pull/131382 may change that, if it lands). However, a benchmark for app startup might still be useful.


non-idempotent kernels discussion

Hello,
Regarding the non-idempotent kernel discussion in the paper you wrote:

We leave the incorporation of this technique to future work until we actually encounter non-idempotent DNN kernels.

Thanks.

Hi @utkusaglm,
Thanks for your interest in our work.
It is important to note that while the assumption of idempotent kernels holds true for most cases, it does not apply universally.
In our tests, GPU kernels generated by TVM have generally been idempotent.
However, we've come across non-idempotent cases in other frameworks, such as PyTorch.
We have identified two prevalent types of non-idempotent cases:

Type 1: In this scenario, the GPU kernel itself can only perform an in-place update, as illustrated by the following code:
def vecInc(A):
    A[i] = A[i] + 1

Type 2: Here, the GPU kernel is not idempotent if it is launched with the same input and output buffer.
def vecInc(A, B):
    A[i] = B[i] + 1

vecAdd(a, a) # results in in-place update, making it non-idempotent
vecAdd(a, b) # leads to out-of-place update, making it idempotent

The community of TVM is still working on the generation of GPU kernels with in-place update, but this feature
is not released yet (https://discuss.tvm.apache.org/t/discuss-inplace-update-in-dataflow-block/14669).
As a result, based on the current version of TVM, it is safe to say that the GPU kernels generated are still idempotent.

Thank you very much for the detailed answer. It was incredibly helpful.


Validate return values

Describe the issue
Currently it only creates parameters from the openrpc.json and is a Success when it returns results with no errors.
Describe the solution
It should only have success it the result values match the openrpc.json result schema

fixed in #7

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


DecryptMessage

Hello!
I have used encryptMessage and everything works correctly.
The problem now comes when decrypting the message returned by Ardor.
I am trying to use decryptNote but it generates errors.
NOTES

isCompressed should be true by default, since encryptMessage compresses it, right?

isText should be set to true directly, there is nothing in the documentation.

byteArrayToString uses deprecated functions.

escape(String.fromCharCode.apply(null, bytes)) change it to encodeURIComponent(String.fromCodePoint(...bytes))
ERROR in ardorjs/helpers -> byteArrayToString
URIError: malformed URI sequence

It's been a while since I worked with this.  I can try to take a look more later, but to start I believe it worked in Ardor Lite and you can take a look at it's use there:

https://github.com/mrv777/Ardor-Lite-Wallet/blob/master/src/pages/message-modal/message-modal.ts#L105
https://github.com/mrv777/Ardor-Lite-Wallet/blob/master/src/providers/account-data/account-data.ts#L578

Thank you! I got the decryption to work but found a bug.
When the message is too small the decryption does not work.
It encrypts returning an array of 26 length (for example) but when decrypting it always returns minimum 32 length.
So it is not the same message and decryption fails.
I am still investigating this error, if I find a solution I will send you a pull request

Thanks for figuring that out and making the PR


Feature: Emoji picker

I think it would be nice to add an emoji picker to the playground since it's a common thing like what Facebook or Twitter uses.

We either can use emoji components like emoji mart or use a native emoji list like what we did in Zoomit. The advantage of using a list like this is we can support inline-emoji like what GitHub or telegram offers(:emojiTag)

That shouldn't be a hard plugin to implement with a little help. I would like to work on it if you are agreeing

Hey @always-maap! Thanks for the idea and te really comprehensive issue report.
I wouldn't have any issues with this being implemented. My only concern would be how this fits with some of the existing functionality we have in the playground for the EmojiNode and EmojiPlugin.
This plugin transforms text which represents an emoji into an actual emoji node (i.e.:) becomes 🙂). We'd definitely want to keep this logic as it's a useful illustration of how node transforms work.
I guess you could probably still implement the drop down though, which activates any time something like a : is typed, or have "Emoji" under the "Insert" menu in the toolbar, which opens up a modal with one of the third party picker components you mentioned.

I'm going to close this for the moment. I think there are potential features here, but I'm not sure about how much value they would necessarily add to the playground compared to some of the existing emoji logic.

thumb-up for this enhancement 👍

thumb-up for this enhancement 👍
I used emoji-mart for this purpose, I m facing an issue whenever I try to add an emoji it's always inserted at the end of the text with this code
const addEmoji = React.useCallback(
   (emoji: string) => {
     editor.update(() => {
       $insertNodes([$createTextNode(emoji)]);
     });
   },
  [editor],
 );

<Picker data={data} onEmojiSelect={addEmoji} onClickOutside={onClose} theme="light" />

Couldn't make it to insert the emoji in the last position of the caret.

Create a plugin and get the selection and then add the emoji at the selection.
`
const ADD_EMOJI_COMMAND: LexicalCommand = createCommand();
export default function EmojiPlugin() {
const [editor] = useLexicalComposerContext();
React.useEffect(() => {
	return editor.registerCommand(
		ADD_EMOJI_COMMAND,
		(payload) => {
			const selection = $getSelection();
			if ($isRangeSelection(selection)) {
				selection.insertNodes([$createTextNode(payload)]);
			}
			return true;
		},
		1
	);
}, [editor]);
return (
	<Picker
		data={data}
		theme='light'
		onEmojiSelect={(d) => {
			editor.dispatchCommand(ADD_EMOJI_COMMAND, d.native);
		}}
	/>
);

}
`


refactor: remove casting thanks to new lodash types

https://github.com/DefinitelyTyped/DefinitelyTyped/pull/38156 has finally been merged and we can remove yet another terrible cast.

@StefanDywersant I admit I've done something more than what the PR describes :)
The interesting line is this BTW https://github.com/stoplightio/prism/pull/660/files#diff-47c5dc2d65fd624c869f5f08d0cfb56aR17


Feature/fosite upgrade

This is the last upgrade to storage before revamping the lib.
Fosite v0.17.0 adds a storage interface for PKCE, so will be a breaking change as it is. Before adding that, this PR moves package managers to dep, and removes a couple of functions that were deprecated, hence the minor pre-release bump.
Little hint of the future:

Get up to date with Fosite
Enable a way to use a mongo session throughout a request's flow
Add ctx all the functions to allow ^
Conform extra datastore entity access to match Google API language for a more consistent, filterable API (List, Create, Get, Update, Delete)

Pull Request Test Coverage Report for Build 145

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 36.166%

Totals

Change from base Build 138:
0.2%

Covered Lines:
366

Relevant Lines:
1012

💛  - Coveralls

Pull Request Test Coverage Report for Build 145

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 36.166%

Totals

Change from base Build 138:
0.2%

Covered Lines:
366

Relevant Lines:
1012

💛  - Coveralls

Pull Request Test Coverage Report for Build 145

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 36.166%

Totals

Change from base Build 138:
0.2%

Covered Lines:
366

Relevant Lines:
1012

💛  - Coveralls


Missing logo file causes mix doc to fail.

Describe the bug
Building the documentation by running mix doc fails because in mix.exs file a non-existing  "logos/small-logo.png"
To Reproduce
Just checkout the repo and build docs.
Expected behavior
The doc creation should produce the result in the docs folder.
** Runtime

Elixir version: 1.14.2
Erlang version: 25
OS: Win 11 (WSL2)
Ash version: 2.4.28

I can PR a fix which deletes the logo or can fix it if I get the logo which is intended to be used.

🤔 it works for me...


Adding more customization to NetworkLoggerPlugin.

Following the discussion with @sunshinejr in #1880, here is a draft of a potential rework of the NetworkLoggerPlugin.
The issue we had was that response's body was only logged if we were in verbose mode. This means that if a request returns with an error, the error's body wasn't logged if not in verbose. It's ok if you don't want it, but it can be necessary according to your workflow. So we had to provide an option so that responses' bodies are logged in errors.
I could have used a simple enum LogLevel { case error(showBodies: Bool), info, verbose } but I wanted the user to fully customize the logs.
So I came with the following idea: list all the components that can be logged in requests & responses, and allow the user to opt-in for each one.
That's the purpose of the new RequestLoggingOptions and ResponseLoggingOptions.
And to handle the issue we were facing with bodies in errors, there are 2 sets of options for responses: the successResponseLoggingOptions will be used when the response returns as a success, and errorResponseLoggingOptions when it's an error. This way, we can configure the logger to log the error's body, but not success's.
Additionnaly, I've moved all of the plugin's config into a.... Configuration struct, making the Plugin more readable imo.
So it's just a draft of the direction I want to go, It's not even tested and things may be broken atm.
But I want to have some feedback before spending some time on it: do you feel it may be a suitable rework for NetworkLoggerPlugin?

I didn't have any feedback on the draft so I continued along the path.
Tests are now ok.
There are some changes I've made to simplify the previous behavior, but if it's a mistake let me now.
I've added some comments in the review on shadowy points.

Warnings

:warning:

Any changes to library code should be reflected in the Changelog.
Please consider adding a note there and adhere to the Changelog Guidelines.

:warning:

Examples/_shared/GitHubAPI.swift#L12 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L14 - MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...' (mark)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L38 - Limit vertical whitespace to a single empty line. Currently 2. (vertical_whitespace)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L106 - Limit vertical whitespace to a single empty line. Currently 2. (vertical_whitespace)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L118 - MARK comment should be in valid format. e.g. '// MARK: ...' or '// MARK: - ...' (mark)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L122 - Types should be nested at most 1 level deep (nesting)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L123 - Types should be nested at most 1 level deep (nesting)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L177 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L178 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L179 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L184 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L191 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

:warning:

Sources/Moya/Plugins/NetworkLoggerPlugin.swift#L195 - Colons should be next to the identifier when specifying a type and next to the key in dictionary literals. (colon)

Messages

:book:
iOS: 	 Executed 278 tests, with 0 failures (0 unexpected) in 13.946 (14.131) seconds

:book:
tvOS: 	 Executed 278 tests, with 0 failures (0 unexpected) in 13.276 (13.433) seconds

:book:
macOS: 	 Executed 278 tests, with 0 failures (0 unexpected) in 13.475 (13.599) seconds

  Generated by :no_entry_sign: Danger Swift against c9cafa26391b7982d68db8f4d2e8641ef934e46f

Codecov Report

Merging #1894 into development will increase coverage by 0.23%.
The diff coverage is 94.52%.

@@               Coverage Diff               @@
##           development    #1894      +/-   ##
===============================================
+ Coverage        92.27%   92.51%   +0.23%
===============================================
  Files               26       26
  Lines              919      935      +16
===============================================
+ Hits               848      865      +17
+ Misses              71       70       -1

Impacted Files
Coverage Δ

Sources/Moya/Plugins/NetworkLoggerPlugin.swift
95.74% <94.52%> (+2.15%)
:arrow_up:

Continue to review full report at Codecov.

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

I agree, the necessity of having to use .verbose on all 3 parameters struck me when updating the tests.
However i think the cURL option should stay with other options because the cURL format rules which component is logged and which is not.
Another solution could also be to reunite RequestLoggingOptions and ResponseLoggingOptions as ResponseLoggingOptions only has 1 useful option.
We would only have to rename  RequestLoggingOptions into LoggingOptions, and add a successResponseBody and errorResponseBody option.
Bonus: 2 less parameters in Configuration's init.

@amaurydavid thanks, I think it looks better! gonna checkout the branch and play with the logger :)
cc @LucianoPAlmeida @pedrovereza are u guys up for a CR maybe?


Executing twice a transaction with the same params fails

In the context of #88 when minting twice the same amount the transaction fails with error code 19 (tx already in mempool):
steps to reproduce:

run make dev-start and make seed
mint 1000 tokens with cosmos-cashd tx issuer mint-token 1000seuro --from validator --chain-id cash -y
the mint transaction should be successful
mint 1000 tokens again cosmos-cashd tx issuer mint-token 1000seuro --from validator --chain-id cash -y
the mint transaction fails

I'm not sure if it's still relevant, closing for now


cli is unable to retrieve StandardValueSet:WorkOrderStatus

Note
Before you submit your issue, make sure that:

You're using the latest version of Salesforce CLI.
You've searched both open and closed issues for related posts.
You've used the doctor command to diagnose common issues.
You understand that GitHub Issues don't adhere to any agreement or SLA.

If you require immediate assistance, use official channels such as Salesforce Customer Support.

Summary

Unable to retrieve WorkOrderStatus using cli.
Steps To Reproduce
Tried following commands

sf project retrieve start -m StandardValueSet:WorkOrderStatus
sf project retrieve start -x ~/Downloads/package-StandardValueSet.xml
sfdx force:source:retrieve -m StandardValueSet:WorkOrderStatus
sfdx force:source:retrieve -x ~/Downloads/package-StandardValueSet.xml

Screenshots

Issue

cli version

IMPORTANT
Provide a repository that's configured to reproduce the issue. If you are unable to provide a repo, please explain why not. The more info we have from the start, the faster we can resolve your issue.
We may close your issue if you don't include proper instructions.

Generate a project with sf project generate or fork dreamhouse-lwc.
Provide detailed step-by-step instructions on how to reproduce the issue.

Expected result

Created WorkOrderStatus.standardValueSet-meta.xml
Actual result

unpackaged/package.xml Metadata API received improper input. Please ensure file name and capitalization is correct. Load of metadata from db failed for metadata of type:StandardValueSet and file name:71.

System Information

{
  "architecture": "darwin-arm64",
  "cliVersion"<EMAIL_ADDRESS>  "nodeVersion": "node-v20.12.2",
  "osVersion": "Darwin 23.4.0",
  "rootPath": "/Users/mars/.local/share/sf/client/2.42.6-2b3c407",
  "shell": "zsh",
  "pluginVersions": [
    "@oclif/plugin-autocomplete 3.0.18 (core)",
    "@oclif/plugin-commands 3.3.4 (core)",
    "@oclif/plugin-help 6.0.22 (core)",
    "@oclif/plugin-not-found 3.1.9 (core)",
    "@oclif/plugin-plugins 5.0.21 (core)",
    "@oclif/plugin-search 1.0.24 (core)",
    "@oclif/plugin-update 4.2.12 (core)",
    "@oclif/plugin-version 2.1.2 (core)",
    "@oclif/plugin-warn-if-update-available 3.0.19 (core)",
    "@oclif/plugin-which 3.1.10 (core)",
    "@salesforce/cli 2.42.6 (core)",
    "apex 3.1.11 (core)",
    "auth 3.6.11 (core)",
    "data 3.3.5 (core)",
    "deploy-retrieve 3.6.14 (core)",
    "info 3.2.8 (core)",
    "limits 3.3.7 (core)",
    "marketplace 1.2.5 (core)",
    "org 4.1.10 (core)",
    "packaging 1.26.3 (user) published 243 days ago (Fri Sep 29 2023) (latest is 2.4.5)",
    "schema 3.3.6 (core)",
    "settings 2.2.6 (core)",
    "sobject 1.4.2 (core)",
    "source 3.3.12 (core)",
    "telemetry 3.3.7 (core)",
    "templates 56.2.7 (core)",
    "trust 3.6.11 (core)",
    "user 3.5.8 (core)",
    "sfdx-git-delta 5.40.0 (user) published 13 days ago (Thu May 16 2024)"
  ]
}

Additional information

I'm unable to repro this:
retrieve with manifest:
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>WorkOrderStatus</members>
        <name>StandardValueSet</name>
    </types>
    <version>60.0</version>
</Package>

retrieve with -m StandardValueSet:WorkOrderStatus

are you able to repro this on a new scratch org? The error comes from the Metadata API so it's very likely related to your org.

Interesting! I tried it with multiple orgs. but to be honest, all the sbx are copied from production so the same issue might have cascaded to them.
Let me test it with scratch org.

I have validated this, it is not because of cli.
This was caused due to the missing Status Category value on Status picklist in Work Order.
Thanks for looking into it @cristiand391


training ESM-2 using bf16 or fp16 or tf32 or fp32?

Hi,
Congrats on your great work on ESM-2.
I wonder what float point you used in training ESM-2, since I find using fp16 and using bf16 yields different numerical numbers as follows:

bf16['representations'][1]
tensor([[ 0.0825, -0.1167, -0.0654,  ..., -0.1011, -0.0023, -0.1523],
[ 0.0603, -0.0815,  0.0459,  ..., -0.0557,  0.0320, -0.1641],
[ 0.1045, -0.0854, -0.0698,  ..., -0.1143,  0.1016, -0.1533],
...,
[ 0.0464, -0.0386, -0.0425,  ..., -0.0144,  0.1045, -0.0649],
[ 0.0273, -0.1060, -0.1289,  ..., -0.0115,  0.1157, -0.0693],
[ 0.0273, -0.1060, -0.1289,  ..., -0.0115,  0.1157, -0.0693]],
dtype=torch.bfloat16)
fp16['representations'][1]
tensor([[ 0.0814, -0.1161, -0.0657,  ..., -0.1006, -0.0029, -0.1522],
[ 0.0607, -0.0811,  0.0446,  ..., -0.0558,  0.0321, -0.1647],
[ 0.1031, -0.0839, -0.0707,  ..., -0.1141,  0.1027, -0.1550],
...,
[ 0.0468, -0.0378, -0.0432,  ..., -0.0145,  0.1046, -0.0642],
[ 0.0263, -0.1041, -0.1304,  ..., -0.0126,  0.1151, -0.0701],
[ 0.0264, -0.1042, -0.1304,  ..., -0.0125,  0.1152, -0.0698]],
dtype=torch.float16)

ESM-2 was trained in fp16. The examples you show seem totally reasonable numerical precision deviations

Thanks!


[feaLib] should sort feature records by tag?

After compiling Adobe Source Sans Pro using feaLib, I noticed that if I run ot-sanitise on the font, it prints this warning:

WARNING: Layout: tags aren't arranged alphabetically.

According to the spec, the array of FeatureRecords in the GPOS/GSUB FeatureList should be listed alphabetically by FeatureTag.
I guess this is a minor thing, but I just wanted to take note here.

Thanks!


Speeding up polling by not checking access

Here's the difference locally, on AWS this should matter more as networks pings can't be expected to be as good as locally.
Before

After

lgtm


NPM Version Request

Hello @VictorBjelkholm,
thanks for the great module!
there is an issue in using ngProgress with a module bundler (webpack/browserify) as the latest 1.1.0-alpha has the wrong reference in package.json as it point to:
"main": "ngProgress.js",

while it should be:
"main": "build/ngProgress.js",

and it is correct in master.
A temporary workaround for webpack users can be to add an alias to your resolve config:
resolve: {
    alias: {
      "ngprogress": path.resolve(__dirname, '../node_modules/ngprogress/build/ngProgress.js')
    }
  }

Because of this issue I have to use your master branch instead of the tag release. Would be great if you have a minor release fixing this issue. Thank you

@VictorBjelkholm gonna ditto on the above remarks, coulda ya pretty please update npm version, also ❤ 🌮 💃 🙇♀

@VictorBjelkholm can you update this to have a release w/ the latest version. No one can use your latest version on npm or yarn.

Yeah, npm version 1.1.3 of ngprogress has been released now.


Error: Using 'lib/stores/User/user_store.g.dart'

lib/stores/User/User_store.dart:7:6: Error: Using 'lib/stores/User/user_store.g.dart' as part of 'package:my_project/stores/User/User_store.dart' but its 'part of' declaration says 'package:my_project/stores/User/user_store.dart'.
part 'user_store.g.dart';
     ^
lib/stores/User/User_store.dart:9:35: Error: Type '_$UserStore' not found.
class UserStore = _UserStore with _$UserStore;
                                  ^^^^^^^^^^^
lib/stores/User/User_store.dart:9:7: Error: The type '_$UserStore' can't be mixed in.
class UserStore = _UserStore with _$UserStore;

import 'package:mobx/mobx.dart';
import 'package:my_project/data/repository/user/user_repository.dart';
import 'package:my_project/models/user/user.dart';
import 'package:my_project/models/user/user_list.dart';
import 'package:my_project/stores/error/error_store.dart';

part 'user_store.g.dart';

class UserStore = _UserStore with _$UserStore;

abstract class _UserStore with Store {
  // repository instance
  UserRepository _repository;

...
}

I already run flutter packages pub run build_runner build --delete-conflicting-outputs

are you still facing the same issue?
if so, please clone the project and try again. I have made some updates and hopefully, your issue will be solved

are you still facing the same issue?
if so, please clone the project and try again. I have made some updates and hopefully, your issue will be solved


Static properties are included in serialization

When reading into a class that has static properties, this causes the static property to change, which may not be intended.
public class MyClass
{
    public static string MyStaticProp { get; set; } = "testing";
    public string MyProp { get; set; } = "MyProp";
}

[TestMethod]
public void MyTestMethod3()
{
    // str includes the MyStaticProp value
    var str = Toml.WriteString(new MyClass());

    var serialized = "MyProp = \"AnotherValue\"\nMyStaticProp=\"Something else\"";
    var myclass2 = Toml.ReadString<MyClass>(serialized);
    // MyClass.MyStaticProp is now set to "Something else"
}

Another problem arises when a class has a self referencing static property, like a Size class.
public class Size
{
    public double Width { get; set; }
    public double Height { get; set; }
    public static Size Empty { get; } = new Size { Width = 0, Height = 0};
}

Parsing the Size class causes a StackOverflowException.
Netwonsoft.Json ignores static properties. Should this be the case for Nett as well?

Yes, static properties definitely should be ignored as I cannot think of any use cases where someone wants to serialize static properties. I never thought about statics during the implementation.... :(


Enb out of date

Cannot download enb version needed to install modlist. v0.460 not supported, now v0.462.

This isn't the place for such stuff. Use the linked Discord in the readme.


selective mqtt config for Home Assistant

This pull request changes the mqtt discovery mechanism to only send configs for messages it actually encounters in the opentherm protocol traffic.
This should cut down the number of sensors creates in Home Assistant to only those which are actually used by the heating system.
A further selection mechanism can be built on top of this.
As an aside, there are still a number of values which the OTGW can decode for which there is no line in the mqttha.cfg file.

@rlagerweij working on your pull request... just wondering about a few things you can answer me:

why use a bitmap? and not the array of epochs?
did you take into account that we need to reconfigure all sensors when HA goes offline and comes back online?

I will continue to integrate this pull request, because I think it's a improvement over the original concept of setting it up on the start, this will configure only what is "used" by the thermostat and boiler. Even though it might take a while for the sensors to be discovered.

The PR does raise a new question, should we start completing the whole mqttha.cfg for all message id's. The reason I did not do it before was simply driven by the fact that the sensors are already a lot and they were added at the start. However if we now have a way to add them to auto discovery on the fly, we could also complete the whole list and make it work for all users that use my firmware.
So based on that conclusion, I will release this PR as part of v0.9.2 once I validated it. And then in a next release I will start adding all other messageid's.

I think even in this selective form there are still too many sensors and the original related issue remains valid. This would only be a true solution if we allow users to select which data gets forwarded. One way to make is user configurable is to have them edit the mqttha.cfg file to comment out config lines that they don't want to receive. It was with this in mind that I kept the config file in place despite your suggestion to move it into a datastructure in progmem. The other solution is to build a ui for selecting which of the detected sensors needs to be processed, which would be cleaner.
In any case I think otgw firmware should ship with reasonable defaults and we should probably not forward masterconfigid, opentherm version, etc to home assistant.
I do have a small update to this PR which reimplements the doautoconfig() since there is some lost functionality (in restapi.ino if I remember correctly) without it. I won't get to upstreaming that until Wednesday night or Thursday sadly.
I m happy to work on further improving this concept for inclusion though. It was not meant as to thrown across the schutting for you to figure out. Although you are of course free to take it on as you see fit.
Get Outlook for Androidhttps://aka.ms/AAb9ysg

From: Robert van den Breemen @.>
Sent: Monday, January 3, 2022 11:21:52 PM
To: rvdbreemen/OTGW-firmware @.>
Cc: rlagerweij @.>; Mention @.>
Subject: Re: [rvdbreemen/OTGW-firmware] selective mqtt config for Home Assistant (PR #103)
The PR does raise a new question, should we start completing the whole mqttha.cfg for all message id's. The reason I did not do it before was simply driven by the fact that the sensors are already a lot and they were added at the start. However if we now have a way to add them to auto discovery on the fly, we could also complete the whole list and make it work for all users that use my firmware.
So based on that conclusion, I will release this PR as part of v0.9.2 once I validated it. And then in a next release I will start adding all other messageid's.
—
Reply to this email directly, view it on GitHubhttps://github.com/rvdbreemen/OTGW-firmware/pull/103#issuecomment-1004398024, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAFAYYF3SZDN5MDJK5JRU23UUIOQBANCNFSM5K4ZSTOA.
Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you were mentioned.Message ID: @.***>

@rlagerweij I worked on integrating it last night, would you be so kind to look at my branch: https://github.com/rvdbreemen/OTGW-firmware/tree/dev-selective-mqtt-discovery
I am going to test it probably this weekend... hoping to release the feature this weekend.


Add DB Filesystem/File example

A possible alternative to local filesystem adapter would be an example based off a database, such as sqlite3 in Python. This could potentially reduce overhead of small block sizes creation of separate files in general. It would also be interesting to see the performance of local vs in-memory vs local db.

Adding a sqlite3 example had very interesting results, as it can improve both "local file" access speed and storage usage, while providing persistence similar to regular local files (minus extra metadata like permissions). Here are the results of native local files vs in-memory vs local db. We can see that db version is closer to in memory in speed than local full files.
local: ezfs.LocalFilesystem("testdir")
native_write_zstd_binary 2.77 sec
native_write_zstd_text   3.39 sec
native_read_zstd_binary  1.49 sec
native_read_zstd_text    1.53 sec

in memory: ezfs.MemFilesystem()
ezfs_write_zstd_binary   116 msec
ezfs_write_zstd_text     116 msec
ezfs_read_zstd_binary    86.2 msec
ezfs_read_zstd_text      87.4 msec

sqlite local: ezfs.SQLiteFilesystem('test.db')
ezfs_write_zstd_binary   332 msec
ezfs_write_zstd_text     333 msec
ezfs_read_zstd_binary    219 msec
ezfs_read_zstd_text      215 msec

sqlite memory: ezfs.SQLiteFilesystem(':memory:')
ezfs_write_zstd_binary   168 msec
ezfs_write_zstd_text     168 msec
ezfs_read_zstd_binary    110 msec
ezfs_read_zstd_text      111 msec

To test scalability further, a 1 million "file" test was performed. Basic functions temporarily added the benchmark utility to test:
def read_it(fs, i):
    with fs.open(f"test{int(i / 2)}.file", "rt") as file:
        file.read()

# fs = ezfs.LocalFilesystem("testdir")
fs = ezfs.SQLiteFilesystem('test.db')
for i in range(1_000_000):
    with fs.open(f"test{i}.file", "wt") as file:
        file.write('test data')
    if i % 100_000 == 0:
        _bench_func(read_it, (fs, i), 100_000, 1, test_suffix=f'_{i}')

Reading was over 4 times as fast, at least for such small files, but more surprising was the space savings. Due to the minimum size required by each file, which is a 4k block, the local files version is nearly 4G, versus just 65M when in a sqlite3 db file.
sqlite3
read_it_900000           804 msec
65M

local
read_it_900000           4.53 sec
3.8G

Performance profile may be different with larger files, since sqlite can support up to 2G blob sizes, but at least for very small files it is a very interesting result and use case.


IOS: cant play rtsp video sources on

Hello, I couldn't manage to play rtsp stream on ios v.13.2. (also checked 12.4) however, it works fine with android api v29. Do I need any permission or extra code for ios?
-tns 6.5.0
I tried the link (rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov) in vlc player, it works well, it also works in android too. http source works on both ios and android.
not working ios rtsp src
               <VideoPlayer                 debug="true"                 ref="player"                 src="rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov"                 :autoplay="true"                 width="100%"                 height="280"               />
working ios http source
               <VideoPlayer debug=true ref="player" src="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" :autoplay="true" width="100%" height="280" />
the video on top is rtsp, bottom one is http

got the same issue. any solutions for this one? using nativescript 8.3.3


Don't rely on facades

They may not be available and using the config wrapper ensures the proper service is directly used.
Tested with Laravel 5.4

Hello @mfn, there are quite a number of places that Config is used. Looking at #5, wouldn't using the full namespace fix the issue? In what version was the helper functions added?

Can't speak for Lumen, not using it.
But Facades are essentially a user/app gimmick and may be deactivated at will and, as a 3rd Party, should not be relied upon. Sorry if I missed other places. I'm not using this package (anymore) but this was the first thing I noticed when I did use/test it.

Not using anymore, closing PR


Table swipe option is giving error on pagination

When there are more columns in my table , I am adding table swipe mode to my table as an attribute.  It is working properly in case of normal table data.
But when i add pagination to my table and change the number of page dynamically, the display of table is getting disturbed. Table swipe option is not working properly. The table heading collapsed with improper column width and last few columns does not have heading
I have tried everything to fix the issue but practically nothing is working.
Kindly help me for the same.
Java script code to initialize table saw plug-in
`$('table').each(function (index) {
if ($(this).is(':visible')) {
$(this).parent().trigger('enhance.tablesaw');
        }
    });`

HTML Code to display table
<table class="table c-table" data-tablesaw-mode="swipe" data-tablesaw-minimap data-ng-init="pagination = true" data-summary="">
Expected Result:
Some columns of table column data should be shown as per data and page size. Rest column should be hidden like its heading.

I ran into this same problem this week and did a bunch of rework around the swipe table’s refresh method. This will be included with v3.0.6 so please retest after that release goes out and reopen if you are still having a problem.


Update python versions employed in CI/CD pipelines

Issue description / feature objectives
Update workflows:
python-push.yml
python-test.yml
Revise python versions:

Add: 3.11, 3.10
Keep: 3.9
Drop 3.8

Caveats / Assumptions
N/A
Completion Criteria
All test cases pass.

Fixed by #1533.


Binary cache miss, can't build on NixOS

I tried to install walker as instructed here, but when I build the new config, I get the output:
error: builder for '/nix/store/6xxbvl6y0n2cm3xhrv4x2ry5drplp8nc-walker-0.0.94.drv' failed with exit code 1;
       last 10 log lines:
       > Building subPackage .
       > # github.com/diamondburned/gotk4/pkg/glib/v2
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:15535:10: could not determine kind of name for C.g_date_time_new_from_unix_local_usec
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:15585:10: could not determine kind of name for C.g_date_time_new_from_unix_utc_usec
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:17060:10: could not determine kind of name for C.g_date_time_to_unix_usec
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:48:42: could not determine kind of name for C.g_dir_get_type
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:17177:4: could not determine kind of name for C.g_dir_unref
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:50:42: could not determine kind of name for C.g_hmac_get_type
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:9360:10: could not determine kind of name for C.g_log_writer_syslog
       > vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:60:42: could not determine kind of name for C.g_rand_get_type
       For full logs, run 'nix log /nix/store/6xxbvl6y0n2cm3xhrv4x2ry5drplp8nc-walker-0.0.94.drv'.
error: 1 dependencies of derivation '/nix/store/k39cmni8gmwh2n2kag8py0n0pspi87dy-home-manager-path.drv' failed to build
error: 1 dependencies of derivation '/nix/store/sggwkx0cl49lh3c6i6wh31z18w1l3x2d-walker.service.drv' failed to build
error: 1 dependencies of derivation '/nix/store/cybygidlnda7gpcckypcqawrdqa0dw3x-home-manager-generation.drv' failed to build
error: 1 dependencies of derivation '/nix/store/pqp2fc9k29gxvw3dzyaxw5j3fclyvwiv-user-environment.drv' failed to build
error: 1 dependencies of derivation '/nix/store/q8i6bkzj7kvx24qqfavzp8vfj989ndr3-etc.drv' failed to build
error: 1 dependencies of derivation '/nix/store/qpyjn8kwqw1fqpa59nzm4fbisn3hvgnf-nixos-system-noah-24.11.20240714.693bc46.drv' failed to build

nix log /nix/store/6xxbvl6y0n2cm3xhrv4x2ry5drplp8nc-walker-0.0.94.drv:
@nix { "action": "setPhase", "phase": "unpackPhase" }
Running phase: unpackPhase
unpacking source archive /nix/store/b9yd20pc9c1b9ppijrq0sv8b6f0fwm0h-walker-source
source root is walker-source
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "configurePhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Running phase: buildPhase
Building subPackage .
# github.com/diamondburned/gotk4/pkg/glib/v2
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:15535:10: could not determine kind of name for C.g_date_time_new_from_unix_local_usec
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:15585:10: could not determine kind of name for C.g_date_time_new_from_unix_utc_usec
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:17060:10: could not determine kind of name for C.g_date_time_to_unix_usec
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:48:42: could not determine kind of name for C.g_dir_get_type
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:17177:4: could not determine kind of name for C.g_dir_unref
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:50:42: could not determine kind of name for C.g_hmac_get_type
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:9360:10: could not determine kind of name for C.g_log_writer_syslog
vendor/github.com/diamondburned/gotk4/pkg/glib/v2/glib.go:60:42: could not determine kind of name for C.g_rand_get_type

I have added the binary cache to my settings, so I shouldn't even need to build this locally.
Checking the cache with curl https://walker.cachix.org/6xxbvl6y0n2cm3xhrv4x2ry5drplp8nc.narinfo results in:
404 - Not Found

Yeah, this happens since updating the used GTK4 library, but i have no idea why. I don't use nix myself nor do i maintain the nix-build things in here.
@diniamo do you have an idea?

Outdated gtk4 version

workflow is still failing

It builds for me locally 😭

it says stuff like building '/nix/store/6r79jpymy1zb5lgnzsikrgqnwah790c1-walker-0.0.92.drv ... but version should be 0.0.93. I even re-created the release.

i've just released a new version of a new module... and it seems to work again.


Support WindowProc delegation in plugin API

There are cases where plugin functionality requires changing the behavior of the WindowProc of the top-level HWND and/or the Flutter HWND. Examples:

https://github.com/google/flutter-desktop-embedding/issues/483
https://github.com/google/flutter-desktop-embedding/issues/636

We should allow plugins to register as delegates of the top-level WindowProc (if the app chooses to provide it; for add-to-app this would not always make sense, so we should be clear that it is not required to work) and the Flutter WindowProc (if we keep an HWND-based approach at that level).

Adding to the preview milestone since I want to make sure we can add this without causing API breaks; it will be a useful test case for that.

Since the only use case I'm aware of for delegating the view-level WindowProc (cursors) is now handled by the framework, I'm going to scope this to just top-level window delegation. If anyone needs view-level delegation, please let me know (it should be easy to add later).

Hi @stuartmorgan, I was wondering if you could help me to understand how can we implement WindowProc in the plugin. As I couldn't find any reference/example for the implementation.

Hi @stuartmorgan, I was wondering if you could help me to understand how can we implement WindowProc in the plugin. As I couldn't find any reference/example for the implementation.

The window_size plugin is an example of using this API.

The window_size plugin is an example of using this API.

@stuartmorgan, I made the changes as per the example, but I'm not sure how to call WindowProc (HandleWindowProc method). Let's say for "WM_MOUSEMOVE".

@stuartmorgan, I made the changes as per the example, but I'm not sure how to call WindowProc (HandleWindowProc method). Let's say for "WM_MOUSEMOVE".

I'm not sure how to call WindowProc (HandleWindowProc method).

You don't. You register it as a delegate method, as demonstrated in the plugin I linked to, and as explained in the API comment for RegisterTopLevelWindowProcDelegate.
If you need help figuring out how to accomplish some specific goal using the API, that would be a question for a resource like StackOverflow or Discord.

I'm not sure how to call WindowProc (HandleWindowProc method).

You don't. You register it as a delegate method, as demonstrated in the plugin I linked to, and as explained in the API comment for RegisterTopLevelWindowProcDelegate.
If you need help figuring out how to accomplish some specific goal using the API, that would be a question for a resource like StackOverflow or Discord.


Provide a statically linked binary

Hi, I'm trying to replace babel with swc. I use a docker image which disallows dynamic linking of .so files.
I might be wrong with my assumption (that a statically linked binary will work), and will appreciate your help.
When I try to require("@swc/core"), I get:
Error: Can not load bindings, file<EMAIL_ADDRESS>existed but error occurred while require it<EMAIL_ADDRESS>cannot open shared object file: No such file or directory
file<EMAIL_ADDRESS>existed but error occurred while require it<EMAIL_ADDRESS>cannot open shared object file: No such file or directory
Installed packages: [core-linux-x64-gnu, core-linux-x64-musl]
    at Object.loadBinding (/app/node_modules/@node-rs/helper/lib/loader.js:50:11)
    at Object.<anonymous> (/app/node_modules/@swc/core/index.js:37:27)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18) {
  _internalJustPassThrough: true
}

Any idea?
Thanks in advanced.

You can install @swc/core-linux-x64-musl

What base image are you using

Oh, I missed the error message.

I've tried requiring core-linux-x64-musl too, and I get the same error:
Error<EMAIL_ADDRESS>cannot open shared object file: No such file or directory

I'm using a custom docker image only contains node (no bash or anything)

But you must have a base image, does it node:lts-alpine?

It’s from scratch
basically we copy the node executable and thats it

Not sure if libgcc and libc are meant to be statically linked (or if that causes other problems):
readelf -d<EMAIL_ADDRESS>
Dynamic section at offset 0x1797960 contains 23 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.musl-x86_64.so.1]

Node.js addon is actually a dynamic link file, see https://napi.rs/introduction/native-module
So I think it's not possible using it without libc libraries. For Node.js program, if you want a Docker image with smallest size, I recommend using the node:lts-alpine image, swc should be compatible with this Official Docker image.

I found out that we have libgcc_s.so.1, but missing libc.musl-x86_x64.so.1.
I know it's not official and you might change things in the future and it's fine.
Thanks for your help, I will try adding libc.musl manually


Suggestions on default Hypergrid Color Scheme

We are well aware of that our default grid colors may be a bit bland.
We hope to resurface a color scheme such as how our old Polymer demos worked.
http://openfin.github.io/fin-hypergrid-polymer-demo/components/fin-hypergrid/demo.html?theme=excel
Any suggestions are welcomed!

We want to apply custom themes for the grid , is it possible to do ?

@prabhur1983 I'm going to remove your comment here and respond on the other ticket you opened. This issue is for suggesting a default color scheme


Add curlylint and update djhtml, semgrep versions in pre-commit config

Fixes #10079.
Please check the following:

[x] Do the tests still pass?[^1]
[x] Does the code comply with the style guide?

[x] Run make lint from the Wagtail root.

[ ] For Python changes: Have you added tests to cover the new/fixed behaviour?
[ ] For front-end changes: Did you test on all of Wagtail’s supported environments?[^2]

[ ] Please list the exact browser and operating system versions you tested:
[ ] Please list which assistive technologies [^3] you tested:

[ ] For new features: Has the documentation been updated accordingly?

Please describe additional details for testing this change.
[^1]: Development Testing
[^2]: Browser and device support
[^3]: Accessibility Target

Thanks @HimanshuGarg47! I've added you to the contributors list as Himanshu Garg, let me know if you'd like to use a different name.
https://github.com/wagtail/wagtail/blob/dfa01e50c3a90b8d5dbab98f821270bcd3aca3ca/CONTRIBUTORS.rst?plain=1#L696


Custom ThreadPoolExecutor

In my company we use a custom ThreadPoolTaskExecutor.
To still use our Executor with Sleuth we did:
    @Autowired
    private BeanFactory beanFactory;

    @Override
    public Executor getAsyncExecutor() {
        YourCustomThreadPoolTaskExecutor executor = new YourCustomThreadPoolTaskExecutor();
        //CUSTOMIZE HERE
        executor.setCorePoolSize(100);
        executor.setMaxPoolSize(150);
        executor.setThreadNamePrefix("my-prefix");
        executor.setQueueCapacity(50);
        executor.setKeepAliveSeconds(30);
        executor.initialize();

        LazyTraceExecutor lazyTraceExecutor = new LazyTraceExecutor(beanFactory, executor);
        return lazyTraceExecutor;
    }

This could be helpfull to others and be included in docs: https://cloud.spring.io/spring-cloud-sleuth/spring-cloud-sleuth.html#_executor_executorservice_and_scheduledexecutorservice

Are you using a AsyncConfigurer bean to generate that? Cause if you do then we're already wrapping that object via AsyncCustomAutoConfiguration bean.

No. My class extends org
.springframework.scheduling.annotation.AsyncConfigurerSupport:
@Configuration
@EnableAsync
public class AsyncAppConfig extends AsyncConfigurerSupport
2017-04-18 9:14 GMT-03:00 Marcin Grzejszczak<EMAIL_ADDRESS>
Are you using a AsyncConfigurer bean to generate that? Cause if you do
then we're already wrapping that object via AsyncCustomAutoConfiguration
bean.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/spring-cloud/spring-cloud-sleuth/issues/565#issuecomment-294813311,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAit3S9EcHd3Nx8Yr16apIrl3uKTUXe8ks5rxKk5gaJpZM4M_Y8W
.

Yeah but AsyncConfigurerSupport is an instance of AsyncConfigurer. Do you have a sample that I can check? You could put a breakpoint in AsyncCustomAutoConfiguration in this method
@Override
	public Object postProcessAfterInitialization(Object bean, String beanName)
			throws BeansException {
		if (bean instanceof AsyncConfigurer) {
			AsyncConfigurer configurer = (AsyncConfigurer) bean;
			return new LazyTraceAsyncCustomizer(this.beanFactory, configurer);
		}
		return bean;
	}

My complete class is:
import com.b2winc.corpserv.async.setting.AsyncSetting;
import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.AsyncConfigurerSupport;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.lang.reflect.Method;
import java.util.concurrent.Executor;
@Configuration
@EnableAsync
public class AsyncAppConfig extends AsyncConfigurerSupport {
@Autowired
private AsyncSetting asyncSetting;

@Autowired
private BeanFactory beanFactory;

@Override
public Executor getAsyncExecutor() {
    ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
    executor.setCorePoolSize(500);
    executor.setMaxPoolSize(1000);
    executor.setThreadNamePrefix("msg-receiver");
    executor.setQueueCapacity(100);
    executor.setKeepAliveSeconds(10);
    executor.initialize();
    return executor;
}

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
    return new AsyncUncaughtExceptionHandler() {
        @Override
        public void handleUncaughtException(Throwable throwable,

Method method, Object... objects) {
        }
    };
}

}
Even when I changed to implement AsyncConfigurer instead of extends
AsyncConfigurerSupport the breakpoint inside the 'if (bean instanceof
AsyncConfigurer)' never was reach.
When I @Autowired AsyncConfigurer in a variable in other class my instance
was there as expected.
[image: Imagem inline 1]
2017-04-18 9:42 GMT-03:00 Marcin Grzejszczak<EMAIL_ADDRESS>
Yeah but AsyncConfigurerSupport is an instance of AsyncConfigurer. Do you
have a sample that I can check? You could put a breakpoint in
AsyncCustomAutoConfiguration in this method
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if (bean instanceof AsyncConfigurer) {
AsyncConfigurer configurer = (AsyncConfigurer) bean;
return new LazyTraceAsyncCustomizer(this.beanFactory, configurer);
}
return bean;
}
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/spring-cloud/spring-cloud-sleuth/issues/565#issuecomment-294824960,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAit3VATrfFL9K44JUpbn5XOoJ3DfTx2ks5rxK-YgaJpZM4M_Y8W
.

Is there an option for you to attach logs from application startup? I'd like to see if there's anything written about excluding AsyncAppConfig from bean post processing.

Yes,
I changed for DEBUG is attached.
Abraços,
Felipe Lino
2017-04-18 10:15 GMT-03:00 Marcin Grzejszczak<EMAIL_ADDRESS>
Is there an option for you to attach logs from application startup? I'd
like to see if there's anything written about excluding AsyncAppConfig
from bean post processing.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/spring-cloud/spring-cloud-sleuth/issues/565#issuecomment-294838985,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAit3eFBmOFmX4UgSIQcpbgO3jRp1WAuks5rxLeCgaJpZM4M_Y8W
.

I don't see anything...

Done here https://github.com/spring-cloud/spring-cloud-sleuth/commit/3d7b15f62c67c257eea1b4f9b7a1075d76bde6de


Demo Link shows 404

README lists https://bbieri.github.io/quartoDIMEtheme as a demo. However, the link goes to a 404 page

Thank you for bringing this to our attention. We had not updated the links since this repo was moved to the DIME account. The correct link his here: https://dime-worldbank.github.io/quarto-dime-theme/

@geoffreyyip , thanks to you I found several outdated links. The updated version of the repo can be found in this branch: https://github.com/dime-worldbank/quarto-dime-theme/tree/update-account. Use that if you need this template right now. After these changes are reviewed we will merge them to the main branch.

Thanks for preparing a PR @kbjarkefur! I will go over the changes over the weekend.

Everything looks good on my side @kbjarkefur. I have made some more fixes to links and updated the README. I also created a new PR to merge changes from develop onto main to rebuild the demo website.


Fix cx_Freeze compatibility issue (Python 2.7)

See Issue #263

Hi!
Thanks a lot for the PR, appreciate it.
I'm not sure I understand the specifics of why this should break cx_Freeze -- I have no problem supporting cx_Freeze I don't think, it's come up once before, but to do so we'd need to have tests in place to ensure that it continues to work. Do you have any ideas for how to do so?

The most basic test I ran to "debug" this is the following:
https://github.com/PierreRaybaut/guidata/blob/master/guidata/tests/disthelpers.py
But the problem is that cx_Freeze behavior depends on your Python installation: this bug occurs only with Python 2.7 and if the latest IPython is installed with all its dependencies.
The test above was executed from a newly installed WinPython <IP_ADDRESS> or <IP_ADDRESS>.
So... not the most simple thing to test...
I'm not the only one having issues with this, see for example:
https://bitbucket.org/anthony_tuininga/cx_freeze/issues/127/collectionssys-error#comment-15021373
Anyway, the fact is that this PR seems quite transparent for the code (it's seems cleaner to me to separate the import statements between Python 2 and Python 3, and even clearer with the associated comments) and should not have any side effect except fixing issue #263.

The issue you linked seems to say it's an upstream issue with cx_Freeze then?

Anyway, the fact is that this PR seems quite transparent for the code (it's seems cleaner to me to separate the import statements between Python 2 and Python 3, and even clearer with the associated comments) and should not have any side effect except fixing issue #263.

That's somewhat less the point unfortunately -- the whole reason this change is being made is to support a thing that isn't "officially supported" because no tests ensure it works. If we can't get some testing to make sure it does, there's nothing preventing it from breaking tomorrow, in which case merging this PR doesn't really have much value IMHO.
Perhaps something as simple as spinning up a venv, installing jsonschema and ipython, and then running cx_Freeze would be enough, but there's clearly going to be some simpler way to boil down the bug, although it's true it might not be easy to find :(

Ok, I understand your reluctance. I already had a clean workaround when submitting this is issue, so this is not for me... I was just taking the time to ensure other people would not suffer from this IPython-jsonschema-cx_Freeze bug. And the fix seemed to be cleaner with the original implementation (the try...except statement was cleary there to make the distinction between Python 2 and Python 3, whereas there is an if...else statement just below doing the job nicely... I already tend to prefer explicit to implicit, but that's a personnal choice).

Well it wasn't exactly :) as you can tell by virtue of you needing to replicate it even after you moved the import. jsonschema doesn't support 3.2 anymore, so technically it's not needed anymore, but that's why it was there. I don't care too much about minor style one way or the other, but yeah I am reluctant to merge patches that make it look like cx_Freeze is supported, without it actually being so. I'll leave this open in case anyone else manages to come up with a minimal test case.
Thanks again for the report.

No problem.
This bug is really weird anyway because the workaround consists in excluding "collections.abc" when calling cx_Freeze setup. In other words, to make it work with your current source code, the end user trying to deploy an application with Python 2.7 has to exclude a Python 3 builtin module ("collections.abc"). Very weird.


Allow Job type for Tests

Only Pod types are permitted for helm test as it errors within client.go#711 if a Job is used. As a Job are more suited to running to completion this would be a better fit.

closing as inactive.


UI: Remove the delete action item for cks nodes

ISSUE TYPE
Improvement issue
COMPONENT NAME
Component: UI
CLOUDSTACK VERSION
Cloudstack version 4.19.0
SUMMARY
Remove the delete action item for  kubernetes nodes inside a cks cluster
Steps to reproduce  the issue

Create cks cluster and navigate inside the cks cluster

Currently, we are throwing a exception whenever a user tries to delete the kubernetes node based on this
https://github.com/apache/cloudstack/pull/9057
In my opinion its better not to show the delete icon , when the operation is expected to fail,
End user should be only allowed to delete the cks cluster from the UI
Expected behaviour
Remove the delete action item for the cks nodes

@kiranchavala I believe the PR #9057 prevents deletion of the CKS nodes using the destroyVirtualMachine API from the instances tab. These delete icons basically translate to scaleKubernetesCluster which effectively scales down a specific node in the CKS cluster

@Pearl1594 , you are saying it is solved in #9057 ?

Fixed by https://github.com/apache/cloudstack/pull/9434


batching doesn't work as stated in findById.test.js

Hi guys, I've replicated the code in the findById integration test to help better understand how batching works. I have a User model, defined the same way as in the test, and two findById calls on the model. However, when I do,
console.log("UsersModel findAll's call count: " + this.spy.callCount"); where
this.spy = this.sandbox.spy(this.UsersModel, "findAll");
I've got callCount of 2, instead of 1.

Is there something I did wrong? One main difference between the findById test code and mine is that I'm using mysql.
Also, since I'm a beginner in using dataloader-sequelize, I'd be grateful if someone could point me to an sample project that uses graphql & has dataloader-sequelize work in resolvers.
Or, is graphql-sequelize my only option?
Thanks.

How are you integrating dataloader-sequelize?

Hi, @mickhansen , thanks for the swift reply. Here's my main test file.
describe("test batching and caching against Models", function() {
  beforeEach(async function() {
    this.UsersModel = this.connection.define(
      "users",
      {
        name: { type: Sequelize.STRING }
      },
      { timestamps: false }
    );
    this.spy = this.sandbox.spy(this.UsersModel, "findAll");
    dataloaderSequelize(this.UsersModel);
    await this.UsersModel.sync({
      force: true
    });
    this.users = await this.UsersModel.bulkCreate([
      { id: 1, name: "bruce" },
      { id: 2, name: "steve" },
      { id: 3, name: "tony" }
    ]);
    this.context = createContext(this.connection);
  });

  it("query against UserModels", async function() {
    await this.UsersModel.findById(1);
    await this.UsersModel.findById(2);
    console.log("UsersModel findAll's call count: " + this.spy.callCount);
  });
});

Here's the module, I load connection from.
import Sequelize from "sequelize";
import { resetCache } from "dataloader-sequelize";
const Op = Sequelize.Op;

beforeEach(resetCache);

export const connection = new Sequelize("testDLSQL1", "test", null, {
  host: "localhost",
  dialect: "mysql",
  operatorsAliases: Op,
  logging: false
});

export function createConnection() {
  const connection = new Sequelize("testDLSQL1", "test", null, {
    host: "localhost",
    dialect: "mysql",
    operatorsAliases: Op,
    logging: false
  });

  this.connection = connection;
  return connection;
}

You are waiting for the first call the resolve and return a result before sending the new query:
await this.UsersModel.findById(1);
await this.UsersModel.findById(2);

Notice how in the tests
https://github.com/mickhansen/dataloader-sequelize/blob/12dcaba7aeca85070b4c83a0efef4c61ab585375/test/integration/findById.test.js#L57-L58
findById is called twice right after each other, before awaiting the result

await this.UsersModel.findById(1);
await this.UsersModel.findById(2);

Is not parallel, it's sequential. So would only work if you have caching enabled,  cahing is only enabled in the context based version.

Additionally you need to pass context

@mickhansen @janmeier Thank you both. It works without await. Initially, I tried with the context, which worked, but the batching wasn't.
Also, one question:

Does it make sense to have a function call like this:

await User.findAll({where: {/* super complicated */}, [EXPECTED_OPTIONS_KEY]: context});

and
sequelize.query('your query', { type: Sequelize.QueryTypes.SELECT, [EXPECTED_OPTIONS_KEY]: context})

?

Do I have to call dataloaderSequelize on the models being queried against?
Thanks

Your mostly better off just using it for findById and association calls.
I think complicated wheres might technically work, but you won't get much value.
Raw queries (sequelize.query) won't work at all.
You still have to call dataloaderSequelize when using context yes, but you can simply call it on sequelize rather than each model.

In most cases you won't need to reset the cache:
// Mutation
const user = await User.findOne({
  where: {
    id: 42
  }
});

await user.update({
  name: 'Foobar'
});

// Query
const user = await User.findOne({
  where: {
    id: 42
  }
});

return user.get('name');

Calling update will not only update data in the database, but also stores the values in the javascript instance. Dataloader will return the same instance that was loaded in the mutation, so you will have access to the most recent data.
The only reason you might need to reload / clear the cache is if you do bulk updates (For example
User.update({
  foo: 'bar'
}, {
  where: { baz: true }
});

The code above updates multiple rows, so in those cases you would need to ensure that the cached data is up to date.


User is able to create a schedule via the UI with incorrect name

Migrated from GitLab: https://gitlab.com/meltano/meltano/-/issues/822
Originally created by @dmor on 2019-07-23 18:23:47

Repro Steps:

Install airflow into your Meltano project
Create first schedule with the title "first schedule"
Click "Orchestration"
Observe the following error message appears:

Error text:
Broken DAG: [/Users/daniellemorrill/Projects/citi-demo-20190723/orchestrate/dags/meltano.py] The key (meltano_first schedule) has to be made of alphanumeric characters, dashes, dots and underscores exclusively
Expected behavior: Meltano UI doesn't allow me to create a schedule with a title that breaks Orchestration

View 3 previous comments from the original issue on GitLab


Display Student in UI instead of Person

Issuee #79

Codecov Report

Merging #79 (9a755f1) into master (791ffca) will decrease coverage by 1.79%.
The diff coverage is 6.21%.

@@             Coverage Diff              @@
##             master      #79      +/-   ##
============================================
- Coverage     48.12%   46.33%   -1.80%
- Complexity      403      415      +12
============================================
  Files           105      108       +3
  Lines          1870     2003     +133
  Branches        200      218      +18
============================================
+ Hits            900      928      +28
- Misses          938     1039     +101
- Partials         32       36       +4

Impacted Files
Coverage Δ

...main/java/seedu/address/model/student/Student.java
0.00% <0.00%> (ø)

...ain/java/seedu/address/model/student/Telegram.java
0.00% <0.00%> (ø)

.../java/seedu/address/model/util/SampleDataUtil.java
8.82% <0.00%> (-3.18%)
:arrow_down:

...a/seedu/address/storage/JsonAdaptedClassGroup.java
0.00% <0.00%> (ø)

...java/seedu/address/storage/JsonAdaptedStudent.java
0.00% <0.00%> (ø)

...ava/seedu/address/storage/JsonAdaptedTaModule.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/ui/MainWindow.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/ui/StudentCard.java
0.00% <0.00%> (ø)

...c/main/java/seedu/address/ui/StudentListPanel.java
0.00% <0.00%> (ø)

src/main/java/seedu/address/model/AddressBook.java
61.53% <40.00%> (-30.13%)
:arrow_down:

... 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 791ffca...9a755f1. Read the comment docs.


[Test] Improve code coverage in rss-common

What changes were proposed in this pull request?

Add BefferSegmentTest and PartitionRangeTest.
Improve RemoteStorageInfoTest.

Why are the changes needed?

A program with high test coverage has more of its source code executed during testing, which suggests it has a lower chance of containing undetected bugs.
Demostrates how to improve test coverage with the help of Codecov.

Does this PR introduce any user-facing change?
No production code change.
How was this patch tested?
https://app.codecov.io/gh/kaijchen/incubator-uniffle/commit/cf7f30b1ee216bd6a36ba0eea37f14e7bc0ccbcb

Continue to review full report at Codecov.

The table posted by the bot is inaccurate, please see this link for details.


new version 0.1.5 virus found

This virus that AVG found is Generic virus on windows
I am scared....:/
Please fix it ASAP!
Check your computer and your files
Thank you

I saw that too, but it said Windows protected the PC. My antivirus (Webroot) didn't catch anything, so i'm guessing it's picking up on the new google key that the update needs to run and somehow your antivirus dosent like how much access your giving it. I can't think of anything else in the new updates that would change to much in that aspect. (again, i'm just guessing. There could still be a virus that makes your computer implode)

Hello and thank you for your report
The other 3 first releases in zip this are clean when running the exe file
Now my antivirus says has virus in this exe
I don't know what happens there
If someone has the knowledge i would like to hear it


Dnd Indicator Mode? Can do it?

example: https://master--5fc05e08a4a65d0021ae0bf2.chromatic.com/?path=/story/examples-pages-layout--horizontal

if can do it. I need a demo use react-dnd

useDrop -> hover can do it.
close the issue


Expo Something Went Wrong Error

Is this a bug report?
Yes

Have you read the Bugs section of the Contributing to React Native Guide?
Yes

Environment

react-native -v: 0.45.1
node -v: v8.1.4
npm -v: 5.3.0
yarn --version (if you use Yarn): 0.27.5

Then, specify:

Target Platform: iOS, Android

Development Operating System: Linux (Arch Linux), 4.12.1

Build tools:

Steps to Reproduce

(Write your steps here:)

Create new app using create-react-native-app
Run yarn start

Expected Behavior

Be able to view the app on my phone by scanning the QR code in Expo.
Actual Behavior

Outputs warning:
Warning: You are using npm version 5.3.0. There may be bugs in this version, use it at your own risk. We recommend version 4.6.1.

but seems to work fine otherwise. When opening the link in Expo I just get the error that something went wrong. In the log it states:
Uncaught Error: Packager is not running at http://XXX.XXX.X.X:19001

Reproducible Demo

Create an app using create-react-native-app.

Have you tried downgrading your npm to the recommended version of 4.6.1? I think that warning message may be there for a reason.
If it's not related to npm, this might be more of an expo issue, you could try joining their community slack channel or their forums: https://forums.expo.io/ for help there.

Downgraded to 4.6.1 and the warning disappeared but the other behavior did not change. I will try asking on the expo channels.

Hello, have you resolved this issue? I just tried downgrading to 4.6.1 using the command: npm install<EMAIL_ADDRESS>from within the RN project directory (then npm i after confirming the package.json file specified npm 4.6.1). I still get the same warning from Expo IDE and when I query npm -version from within the RN project directory, I get 5.3.0.
What am I doing wrong? Please advise - thank you 😄

I am facing the same issue even after downgrading the npm version to 4.6.1. Can You please help me with that.

Can you remove node_modules/ directory and reinstall with npm? There may be some stale packages.