Mention notification in XMPP chats not working when chat window open.

When you have the chat window of an XMPP conference open (even if it is minimized) you are not alerted when your nickname is being mentioned.
This could have very well been by design, and this is an acceptable design choice. However, the window opens (albeit minimized) when anybody says anything in the chat room. That means that effectively mention notifications never work (except if you get mentioned directly after you manually close the chat window).
Is there a way to disable the conference window from opening (Bring chat window to front is already disabled) or make the mention alerts always display regardless of window state (or always except if chat window is focused)?

Answering my own question, right clicking the conference and selecting "Open this room automatically when..." and choosing "Important messages only" works around the issue.


[zk-token-sdk] Add sigma proof program

Problem
Summary of Changes
Fixes #

Codecov Report
Attention: Patch coverage is 2.12766% with 46 lines in your changes are missing coverage. Please review.

Project coverage is 81.8%. Comparing base (dcc195e) to head (d2a9866).
Report is 5 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##           master     #594     +/-   ##
=========================================
- Coverage    81.8%    81.8%   -0.1%
=========================================
  Files         850      854      +4
  Lines      229369   229520    +151
=========================================
+ Hits       187717   187779     +62
- Misses      41652    41741     +89

Close in favor of https://github.com/anza-xyz/agave/issues/671.


Seti UI light-theme color tokens not accessible

VSCode Version: 1.46.0-insider (e1d8f5155c0db5ffdc130c9aa0f14efac02dfdfb)
OS Version: macOS Catalina (10.15.3)

At least 7 of VS Code's custom Seti-UI color tokens are below 4.5:1 contrast ratio that's required to be visually accessible.
Not passing contrast
#498BA7 Blue
#498ba7 Green
#cc6d2e Orange
#dd4b78 Pink
#9068b0Purple
#b7b73b Yellow

Passing contrast
#b8383d Red ✅ (this is the only one that passes 4.5:1 contrast in all cases shown above)
Steps to Reproduce:

To verify these findings, lookup the color values we're using for all "_light"-suffixed keys in the vs-seti-icon-theme.json file
Paste those values (or the ones I summarized above) into WebAim's contrast checker as the foreground value over the background colors shown in the above image. The worst-case to ensure is passing is likely the sidebar's active selection background color.

Does this issue occur when all extensions are disabled?: Yes
Recommended fix
Use darker colors that meet the minimum 4.5:1 contrast ratio for each background color shown above.

cc @misolori
Some may argue these icons are purely decorative, thus not needing color-contrast per WCAG guidelines. However, these icons do serve a functional purpose of helping people visually parse which files are of what type, which is why I thought to report this as an issue.

@aeschli do you know if we're able to customize these colors or do they strictly come from the seti-ui theme?

We take them unmodified from the Seti-theme: https://github.com/jesseweed/seti-ui/blob/master/styles/ui-variables.less. The same colors are used for light and dark.
Of course we could patch the colors when importing and also come up with different colors for light and dark.

Closing as issue should be filed against https://github.com/jesseweed/seti-ui


Collecting Bitcoins via FOSS License Aggregation

Idea here change from using referral links to collect Bitcoins to provide a bigger vision whereby the FOSS community creates crypto-licenses and companies using FOSS software of a large enough size or market cap are required to pay licensing fees to open source developers but the little guys get to ride for free so they can't have a chance of competing.

https://medium.com/@jhabdas/introducing-the-btc-license-28650887eb11
Submitted request to add BTC License to SPDX though a new copyright pseudo-format may be more appropriate for wallet sharing in crypto licenses. I've also submitted a support request to GitHub to allow bitcoin scheme to README files referencing BIP-0021.

After discussing with SPDX they suggested a license would need to have traction in the community to make it—same with the OSI I believe. Of course doing that without an ICO could be challenging. May need to get creative here. Anyone have any product ideas which could move something like this forward?
Ultimately what I'd like to see is a set of licenses which allow public corporations using open source software to donate back to the developers by recognizing them via the addresses in their licenses.
Oh, and here's a related post about the BTC License thanks to Black Duck:
blog.blackducksoftware.com/can-blockchain-btc-license-fund-health-insurance

Closing as I don't think there's anything actionable here re: this repo - thanks for flagging the BTC License!

@nayafia thanks. this of course is a new model never attempted in open source software. if you have any constructive suggestions on what can be done to make it actionable that would be useful considering the time spent to built the concept.
note however due to BTC blocksize limitations the BTC license will be changing to BCH.


add .ipynb files to toctree using wildcard

Would it be possible to allow for something like the following?
.. toctree::
   :titlesonly:
   :glob:

   *.ipynb

My usecase is that people are adding jupyter notebooks to a folder and I am using nbsphinx to automatically create html versions of each of them for the documentation.
Currently, I believe the above code actually tells sphinx to search for files *.ipynb.rst and thus results in WARNING: toctree glob pattern '*.ipynb' didn't match any documents
For the moment, I simply add all .ipynb files by hand, but being able to use a wildcard would make life simpler.
P.S. When I started looking a bit through the code I came across this:
https://github.com/spatialaudio/nbsphinx/blob/b0542b404383e08c52574ea72ec318a941b4991d/src/nbsphinx.py#L1333-L1343
Not sure whether this is related, but perhaps it is it time to do the replacement now?

It should work without the .ipynb suffix, as it's used in doc/index.rst.
Using the file extension in the glob pattern doesn't seem to be supported by Sphinx itself. You'll get the same error if you use *.rst:
WARNING: toctree glob pattern '*.rst' didn't match any documents

I think this would be a useful feature, but you should report this directly to the Sphinx team: https://github.com/sphinx-doc/sphinx/issues.
And about _add_notebook_parser(): You are right, we could change this now, but as long as there are no problems caused by my original hack, I'm not in a hurry to do this.
If you want to make a PR to replace this, go ahead!

@ltalirz Did you report this to the Sphinx people?

It should work without the .ipynb suffix, as it's used in doc/index.rst.

I don't know how, but somehow I missed this sentence. Thanks for the prompt help and sorry for not following up!

I think this would be a useful feature, but you should report this directly to the Sphinx team

From their initial response it seems they don't want to introduce extension-based selectors in the glob pattern. If you still think it should be introduced, happy for you to reopen https://github.com/sphinx-doc/sphinx/issues/5756

Thanks @ltalirz.
I've added a comment over there, for me this has low priority.

For the record, it turned out that using the file suffix in a toctree directive is not recommended (and it only works for backwards compatibility).


feat(protocol-designer): use dev-only data attr for test

overview
This PR is also an RFC -- is this a good way to approach setting up data- attrs for testing?
@mcous mentioned stripping out the data- attrs from production code, so I'm trying out this https://www.npmjs.com/package/babel-plugin-jsx-remove-data-test-id
I figured we might as well use the default data-test-id data attr name, but we can configure it to something else if we want. Maybe these will be useful in Enzyme tests as well, so data-test-id is better than data-cy?
Acceptance criteria
I just changed 1 test and 1 component instance as a proof of concept
FIRST, make install-js and kill any running PD dev server you might have going to set up

[ ] make -C protocol-designer test-e2e should still pass
[ ] The data attr should be gone in production. To test that, make -C protocol-designer serve, delete the blocking TypeForm modal with Inspector b/c it's hard to bypass, then inspect the Settings > Information card.

Discussion Qs
This approach seems like it requires us to add a testId?: string prop like this to all our components that may be selected in an E2E test, so it can be passed into a DOM element of that component. That's a lot of new props, but we'd add them gradually we migrate the tests from CSS/name to data-test-id.
Any ideas for alternative approaches to actually specify the value of the data-test-id for a particular component instance other then the testId prop?

I'm not a fan of using framework-specific tags since frameworks invariably get replaced, so I like this approach better than something like data-cy. Stripping them out at production is good, too.
I wonder, though, if just using standard html id attributes isn't even better. Those are (or should be) unique, and can be used for more than just tests, like accessibility. I've seen you don't use id (and often not even name) attributes anywhere, and it could be due to some react libraries you're using. Consequently, labels aren't semantically attached to the fields they label and other things like that.
But as far as testing and testing only goes, this is good.


UI: Allow accounts of the User type to add other accounts or users to projects through UI

Description
Currently, to add a user or account to a project through UI, a select input field is rendered, displaying the accounts and users that the caller has access to as options. As a result, users with an account of the User type are unable to add other accounts or users to a project, since they don't have access to other accounts or users and no options are available to be selected in the input field.
This PR modifies the input field to allow users to both select from the available options and manually enter the account name or username they wish to add to the project.

Fixes #9774
Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[X] Bug fix (non-breaking change which fixes an issue)
[X] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)
[ ] build/CI
[ ] test (unit or integration test code)

Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale

[ ] Major
[X] Minor

Bug Severity

[ ] BLOCKER
[ ] Critical
[ ] Major
[X] Minor
[ ] Trivial

Screenshots (if appropriate):
Adding an account by selecting an option available in the dropdown

Adding a user by entering their username in the input field

How Has This Been Tested?

I created a domain d1, a domain admin (d1) and two normal users (u1-d1 and u2-d1) belonging to the domain.
I created a project with the d1 account.
I verified that the d1 account can select accounts and users of their domain to add them to the project.
I added the u1-d1 account to the project as an admin.
I logged in with the u1-d1 account, accessed the project and added the user u2-d1 to the project.

@blueorangutan ui

@bernardodemarco a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.

UI build: :heavy_check_mark:
Live QA URL: https://qa.cloudstack.cloud/simulator/pr/9927 (QA-JID-478)

LGTM. Tested in qa.c.c


fix(VMain): add existing v-content classes for backwards compatibilit…

…y (#11659)

Add back .v-content* classes on v-content element

The change from v-main to v-content caused a backwards compatibility issue for any app relying on the v-content class name.

Update VContent.ts

Added missing import

Linting

Description

Motivation and Context

How Has This Been Tested?

Markup:

// Paste your FULL Playground.vue here

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Improvement/refactoring (non-breaking change that doesn't add any features but makes things better)

Checklist:

[ ] The PR title is no longer than 64 characters.
[ ] The PR is submitted to the correct branch (master for bug fixes and documentation updates, dev for new features and backwards compatible changes and next for non-backwards compatible changes).
[ ] My code follows the code style of this project.
[ ] I've added relevant changes to the documentation (applies to new features and breaking changes in core library)

627


Marker must ensure there are no coins in escrow before deletion

During deletion the marker's denom is checked but other denoms the marker may hold are not checked.  Ensure all balances are zero prior to removal to prevent supply constraint issues.
https://github.com/provenance-io/provenance/blob/46a3b7125891558c5df7b4a222475100915fb10c/x/marker/keeper/marker.go#L573

Issue was found while documenting the marker module delete msg specifications.


Extend the scope update command (#1414)

This PR:

Extends the scope update command to accept a config file from StdIn
Adds a --fetch argument to the scope update command. When provided, the process will be inspected after the config change.
Ensures that successful output goes to stdout, all warnings and errors go to stderr

Testing

An integration test has been added that passes a valid/invalid config to StdIn ; and another that passes it to --config

Documentation

The website's cli-reference.md page has been updated accordingly.
The cli's help menu has been updated with examples where appropriate.

QA Instructions

Review the code
Test the scope update command and its arguments.

Everything I tried looks great (I'm getting all expected data on stdout, and the config file from stdin is being processed as expected).  But there is one spurious INFO message for almost all of my commands:
scope top
scope events
scope inspect `pidof top`
     INFO: Run as root (or via sudo) to get info from all processes
scope update `pidof top` < conf/scope.yml
     INFO: Run as root (or via sudo) to get info from all processes
scope inspect `pidof top`
     INFO: Run as root (or via sudo) to get info from all processes
scope update --fetch `pidof top` < /home/ubuntu/.scope/history/top_85_2224132_1683046168801851965/scope.yml
     INFO: Run as root (or via sudo) to get info from all processes

What is this message trying to tell me?  I'm not trying to get info from all processes, and in the first scope update, I'm not even trying to get info at all.  @seanvaleo ?

@jrcheli
re: 1) maybe with the inspect/update commands, that message should only appear if there was an error in the command... and i can fix the wording
re: 2) right now it has no impact, since data is already json format. but i intend to use it in a future PR (as part of this 1.4 effort) to ensure logs and warnings are sent in json when that flag is enabled. i can remove it for now, or keep it, up to you.

Wow.  This looks really sharp, imho.  Reran the test above and it looks great.  Merging.


Fixes bottom margin of the torque torque slider

This PR fixes the extra bottom margin of the torque slider in the public map pages:
Before:

After:

Original issue: #4889
Have a look, @matallo. I'm not sure if I placed the CSS in a convenient place.

oh, I'm taking a look, but don't bother that much about the css dirs as right now I'm cheating for the new public datasets :/

:+1:

Frontend tests were OK :+1: (details)


Android Deadlock after GetKnownCharacteristics

First of all, thanks for this plugin.
Please check all of the platforms you are having the issue on (if platform is not listed, it is not supported)

[] iOS
[x] Android
[] tvOS
[] macOS
[] .NET Standard
UWP IS NOT SUPPORTED DURING THE BETA PERIOD - ONLY PRs ARE WELCOME FOR NOW

Version of OS(s) listed above with issue
8.0
Version of Library
5.3.2 and 6.0.0-beta3
Expected Behaviour
GetKnownCharacteristics can be used.
Actual Behavior
If applicable, please include entire exception - type, message, stacktrace
After calling GetKnownCharacteristics, a deadlock occurs when trying to call EnableNotifications() on a characteristics.
Here is the code. The deadlock appears in the call to EnableNotifications.
public IObservable<Unit> DiscoverAndSetupCharacteristicsZZ(IObservable<IGattService> service)
       {
           return service.SelectMany(s =>
           {

               // write charac is ready as soon as we find it
               IObservable<bool> writeCharacReady =
                       s.GetKnownCharacteristics(WRITE_CHARAC_UUID)
                       .Do(OnWriteCharacFound)
                       .Select(charac => true);

               // need to enable notifications on read charac before it's ready
               IObservable<bool> readCharacReady =
                       s.GetKnownCharacteristics(READ_CHARAC_UUID)
                       .Do(OnReadCharacFound)

                      .SelectMany(charac => charac.EnableNotifications());

               // just a return a unit to indicat that device is ready to be used
               return Observable.Zip(readCharacReady, writeCharacReady)
                           .Select(res => new Unit());
           })
           .Take(1);
       }

The lock is in Plugin.BluetoothLE.Android.Internals.DeviceContext, line 42: reset.WaitOne()
I've tried both v5.3.2 and 6.00-beta3 (I've seen that you've worked on this area in release 6). The deadlock is always there.
If i use WhenCharacteristicDiscovered, no deadlock appears.
Code of Conduct

No Library Update Requests
No Timeline Requests
Please read through the documentation and FAQs
Please be respectful of my time. I put a lot of effort into my libraries.  I try to support the issue requests within a day.  I'm not psychic, so please take the time to fill out the above form as complete as possible

Do the requests for known characteristics in 1 call.  GetKnownCharacteristicis(Guid, Guid);

Thanks for this quick answer.
If I do it in one call, I still get a lock on EnableNotifications if I do it in the same subscription process.
I need to do it in different subscriptions, and I can't chain the Observable (as here with SelectMany).
This is probably the same underlying issue?

Chaining everything in android is going to be difficult.  The problem with android is that most things need to be done on the main thread and in sequence.
I have an idea how to fix this, but it isn't coming quick.  The easiest fix for you is to do the following
var charater = await GetKnownCharacteristic(...); // this will release the lock
character.Write/Read()

Allright, thanks for the explanation!

The problem with android is that most things need to be done on the main thread and in sequence.

Did you find this out of experiments or did you read this somewhere on the android documentation?

The many defects with android are known throughout the industry.  How to deal with them has come by trial and error

Hi.
I'm trying to implement disconnection and re-connection.
When connecting, discovering of characteristics is successfull, andEnableNotification also.
Disconnection works fine.
However, when doing a connection again , discovering of characteristics is successfull, but EnableNotification exhibits the same deadlock as previously.
The deadlock is present though I don't chain all calls. I do characteristics discovering, enabling notification and reading in different "subscriptions".
Am I missing something? Maybe on the disconnection?
Thanks

I don't know what your current code base looks like.  I recreate the devicecontext each time so there shouldn't be any pending locks.

I can confirm the same issue with reconnection (6.0.0 Beta 3)
Code sample below:
                var btcs = await BluetoothDevice.GetKnownCharacteristics(SSServiceUuid, BTCWrite, BTCRead).Take(2).Timeout(TimeSpan.FromSeconds(5)).ToList();
                if (btcs.Count() != 2)
                {
                    BluetoothDevice.CancelConnection();
                    return false;
                }
                GCWrite = btcs.First(x => x.Uuid == BTCWrite);
                GCRead = btcs.First(x => x.Uuid == BTCRead);
                await GCRead.EnableNotifications();

On the first connection runs through fine. Second connection fails at GCRead.Enable Notifications().
If I connect again for a third time while this is hanging - it works and the handing thread finishes.
Should I wrap all this in a Device.BeginInvokeOnMainThread  ?
Regards
Ian Newby

Yes.  If you set the two flags the way I show above

Please try 5.3.3 - note that removing the lock from this method will cause android's defect to become apparent meaning that you can only do 1 operation at a time (sequentially).

I had to move from 5.3.3 as 5.3.3 struggled when trying to connect/disconnect from different devices. We are trying to connect to industrial sensors where they may be 20 in one room.
We scan, connect to each one one by one and get the data from them, then disconnect. The user can reconnect to them to update info stored in them. This is when it is failing.
With 5.3.3 the disconnect breaks subsequent connections.
What are the two flags you mention - I cant find any reference in the ticket?
Thanks for all your work!

@ianewby I only changed a couple of lines between 5.3.2 to 5.3.3.  None of it was around connection.  Please stay on the topic of this issue.
As for the flags, DO NOT NOTE, if you use these, you will have to fight with android bugs.  I will not help you if these are set
// in your android project
CrossBleAdapter.AndroidDisableLockMechanism  = true;
CrossBleAdapter.AndroidPerformActionsOnMainThread = false;

Deadlocks are solved since the lock mechanism has been turned off by default


build: update bazel, upstream envoy, & ios rules

Update bazel to 3.4.1 (depends on https://github.com/envoyproxy/envoy/pull/12123)
Update envoy upstream to include ^
Update rules apple and rules swift
Update our header map iteration to fix breaking changes upstream from https://github.com/envoyproxy/envoy/pull/12103

Signed-off-by: Michael Rebello<EMAIL_ADDRESS>

Need Bazel 3.4.1: https://github.com/envoyproxy/envoy/pull/12123

rerunning failed ci

Looks like this is a legit failure when building the ObjC app:
Execution platform: @local_config_platform//:host
examples/objective-c/hello_world/ViewController.m:1:9: fatal error: 'Envoy/Envoy-Swift.h' file not found
#import <Envoy/Envoy-Swift.h>
        ^~~~~~~~~~~~~~~~~~~~~
1 error generated.
Target //examples/objective-c/hello_world:app failed to build

@keith do you happen to know of anything off the top of your head that may have broken our header setup with the rules updates?

does the framework this produces have one at all after this change?

Yep, it's present in dist/Envoy.framework/Headers/Envoy-Swift.h. Looks fine to me too 🤔

how about the module map?

Resolved with magic from @keith, more context: https://github.com/bazelbuild/bazel/issues/10674#issuecomment-658208918


Zoom in (Ctrl-+) does not scale the line numbers correctly on Linux

It works on MacOS, but on Linux the line numbers become truncated.

This now works with display-line-numbers (Emacs >= 26). Closing this.


ratelimiter: use less aggressive strategy

What is changed and how it works?
Issue Number: Ref #12842
What's Changed:
Dynamic regions has fewer write amplification, a less aggressive strategy
can make the write flow more smooth.

Check List
Tests

Unit test
Integration test

Release note
None

/release

/release

/release


Add methods about user in auth-server

I created methods that wraps APIs related to user and tokens.
Also fixed HttpResponseHandler error message parsing logic as !response.body().string().isEmpty() close response before parsing start

can you resolve conflicts?

@namkyu1999 resolved conflict! Thanks 😊

@suyeon-jung-dev  @jemlog @somln Can you please take a look?


⚠ Mobitopup has degraded performance

In 8f56888, Mobitopup (https://napcard.voz.tech) experienced degraded performance:

HTTP code: 200
Response time: 3156 ms

Resolved: Mobitopup performance has improved in e26927d.


Support for Z / M coordinate values

I'd also be interested in this for our use cases (all our geometries are 3D - using postgis)

+1 , also need support 3D

This can be closed from https://github.com/georust/wkt/pull/115


Routing

As I understand, you reset coupling coefficients after each training sample (batch). Don't you think it would be better to keep their previous state and update them depending on it?

@EgorKrash First, the paper resets coupling coefficients after each sample. Second, I don’t think the value should be kept. Each sample should have its own coefficients, so keeping them will take too many resources. And when it comes to testing samples, they don’t have coefficients in memory, so their coefficients have to initialized to uniform. To keep the consistency, in training process we shouldn’t keep the coefficients of training samples.

Sorry if I seem to be offensive. I'm just trying to fix my misunderstanding and it would be great if you help me to do that.
Could you please point me where it is said in the paper that coupling coefficients should be reseted after each training sample? And in which way do you mean keeping them will cost too much resources? So should routing algorithm take place while testing process?

As shown in Routing algorithm, it considers only one sample and resets b_ij to 0 at every call. The routing algorithm is called in every forwarding pass. So whenever a training sample comes, the b_ij for this sample will change from 0 for some iterations. Even the same sample comes in the next epoch, when the routing algorithm is called, the b_ij of this sample will also start from 0. To sum up, the coupling coefficients are reset at each training step.
Now that each sample requires a b_ij whose size is 1152*10=11520. If we use batch training with batch size 100, the elements of b_ij to reserve are 11520*100=1,152,000. Assume we don't need to save the values of b_ij after routing, we can use the same 1,152,000 b_ij for each batch training (they are reset to 0 at each training step anyway). However, if we want to keep track of the b_ij for every samples in the training set, we have to save 60,000 * 1,152,000 = 6.912e10 elements for these b_ijs. Each element is a float type with 4 byte, then saving b_ij requires 4 * 6.912e10Byte=257GB.
The routing algorithm surely takes place in testing phase. For each testing sample, the b_ij will start from 0 as same as in training phase.

@XifengGuo Thanks a lot for the explanation!
As for memory resources, I didn't suggest to keep b_ij in memory for each sample. I thought that updating them while training without setting them to zeros after each batch may work.
One thing seems strange for me now. Why is it better to have shared b_ij for all samples in batch?

@EgorKrash b_ij are not shared for all samples in batch, each sample in the batch has its own b_ij.


create a new docker image on release branch

Do we want also to release the ephemeral cluster image?

Do we want also to release the ephemeral cluster image?

not a requirement atm, but yeah we can


Bring back PortablePdbReader

We removed the type when we went away from net framework. We need to bring this back to enable applications to show line numbers/filenames for portable pdbs when running under net framework.

@NTaylorMullen - please do the needful.


Formatting javascript wrong in aspx page with Format Document command in VS2017

Please check the error screenshot here:
https://developercommunity.visualstudio.com/content/problem/51190/when-using-format-document-on-an-aspx-page-the-ide.html
VS2017 (15.2)
If the new JavaScript language service is disabled, the format is OK, but the New Lines options do not work when the service is disabled.

@jramsay looks related to the base indentation.

tracked by https://developercommunity.visualstudio.com/content/problem/51190/when-using-format-document-on-an-aspx-page-the-ide.html


all: run gofumpt

Run gofumpt over all files.
gofumpt is a stricter and more opinionated code formatter.

Codecov Report

Merging #71 (8e34c08) into main (34adad9) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #71   +/-   ##
=======================================
  Coverage   86.51%   86.51%
=======================================
  Files          38       38
  Lines        2061     2061
=======================================
  Hits         1783     1783
  Misses        222      222
  Partials       56       56

Impacted Files
Coverage Δ

internal/astdiff/diff.go
96.23% <ø> (ø)

main.go
65.92% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Improve Usability of the Identifier Tool

This issue was imported from CodePlex
jirikadlec2 wrote 2012-02-08 at 03:42
When I was testing the identifier tool (Map tool - Identify in MenuBar) I found several issues that make it unintuitive and difficult to use:

I don't see the point where I clicked in the map The identified shape is not highlighted in the map The order of layers in the identifier is different from the order of layers in the map legend
When I activate the indentifier for the first time, it doesn't show the attributes of the shape in the currently selected map layer. I have to select the layer again in the Identify layer list to see the expected information
There is no link between Identify and Select. One important usage of Identify is to interactively explore the attributes of the shapes, and when I find the shape I'm interested in, select it for further analysis. Therefore I'd like to have a "Select
 this shape" button in the identifier form to make the identified shape selected if required.

I have summarized my testing and expected behavior in the attached report. See also HydroDesktop work item 8397 (http://hydrodesktop.codeplex.com/workitem/8397)

dup #418


Copy to left / copy to right buttons UI question

Does anyone have input about which order the copy to left / copy to right buttons should be in?

vs.

For usability reasons, should the copy to right button be closer to the left editor? Or should the arrows remain facing outward?

Also, should the buttons have text so they are easier to understand?

@mupchrch I feel like the first one feels more natural. Have the button on the side you are copying to

I think I agree. That's what I went with for the latest release. Thanks!


Fix RegistrableExtensionManager not working with stevedore after 1.19.1

@Diaoul stevedore 1.20.0 broke the test_extensions.py
http://git.openstack.org/cgit/openstack/stevedore/commit/?id=eb04fc4a3e3db913475d2f7105420351a0a781a9
With 1.19.1 it passes

Coverage remained the same at 91.817% when pulling 179906be5449c8314eb9dde7b9b7a4781da36776 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Coverage remained the same at 91.817% when pulling 179906be5449c8314eb9dde7b9b7a4781da36776 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Coverage decreased (-0.07%) to 91.749% when pulling 85a5713a63c29912a150762467ac77076c253878 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Coverage decreased (-0.07%) to 91.749% when pulling 85a5713a63c29912a150762467ac77076c253878 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Coverage decreased (-0.07%) to 91.749% when pulling 85a5713a63c29912a150762467ac77076c253878 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Coverage decreased (-0.07%) to 91.749% when pulling 85a5713a63c29912a150762467ac77076c253878 on fernandog:feature/fix_test_extension into f408537ec046bc3d631808dec0a2388eb867776f on Diaoul:develop.

Close after ratoaq2 PR


[Performance] e2e overheads reduction: Small followup diff

This PR is a followup for https://github.com/vllm-project/vllm/pull/7162 to address leftover review comments and add some more small improvements.

/ready


Fixing MuStopPileup names in diagram

Quick fix with the right names for MuStopPileup in the diagram

Hi @soleti,
You have proposed changes to files in these packages:

JobConfig

which require these tests: build.
@Mu2e/write have access to CI actions on main.
:hourglass: The following tests have been triggered for b302f13a16e8247244ba837453871d6b96f0c02d: build  (Build queue has 1 jobs)
About FNALbuild. Code review on Mu2e/Offline.

:sunny: The tests passed at b302f13a16e8247244ba837453871d6b96f0c02d.

Test
Result
Details

merge
:white_check_mark:
Merged b302f13a16e8247244ba837453871d6b96f0c02d at 335a88ac93ef4f4894e12b16e176e9d87bdc6dfd

build (prof)
:white_check_mark:
Log file. Build time: 13 min 56 sec

ceSimReco
:white_check_mark:
Log file.

g4test_03MT
:white_check_mark:
Log file.

transportOnly
:white_check_mark:
Log file.

POT
:white_check_mark:
Log file.

g4study
:white_check_mark:
Log file.

cosmicSimReco
:white_check_mark:
Log file.

cosmicOffSpill
:white_check_mark:
Log file.

ceSteps
:white_check_mark:
Log file.

ceDigi
:white_check_mark:
Log file.

muDauSteps
:white_check_mark:
Log file.

ceMix
:white_check_mark:
Log file.

rootOverlaps
:white_check_mark:
Log file.

g4surfaceCheck
:white_check_mark:
Log file.

FIXME, TODO
:white_check_mark:
TODO (0) FIXME (0) in 0 files

clang-tidy
:white_check_mark:
0 errors 0 warnings

N.B. These results were obtained from a build of this Pull Request at b302f13a16e8247244ba837453871d6b96f0c02d after being merged into the base branch at 335a88ac93ef4f4894e12b16e176e9d87bdc6dfd.
For more information, please check the job page here.
Build artifacts are deleted after 5 days. If this is not desired, select Keep this build forever on the job page.


compact: clean up directories thoroughly

I couldn't stop thinking about this code for some reason and I have
figured that I had missed one case in #3031. We need to also clean up
the directories in compaction groups. Compaction could fail & it would leave
some new directory with a random ULID on the disk. Before attempting to
do another compaction loop, we need to remove it as well because the
compaction process always produces a new, unique directory.
Signed-off-by: Giedrius Statkevičius<EMAIL_ADDRESS>
[ ] I added CHANGELOG entry for this change.
[x] Change is not relevant to the end user.

Changes
Compact() now cleans up the subdirectories in compaction group directories. An error when a directory doesn't exist is ignored because it is a very likely situation with this change so it would be nice to avoid spam.
Verification
Added e2e test

I propose one solution, wonder would that work @GiedriusS ?
https://github.com/thanos-io/thanos/pull/3869/commits/e49c546012926b99668c9a9bd82b7dff8ebb73d5

Build issues: quay is down.


Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

# Flow validation images in batches of 20 using test_datagen generator
validation_generator = test_datagen.flow_from_directory(
        validation_dir,
        target_size=(150, 150),
        batch_size=10,
        class_mode='binary')

Python Version : 3.7.3
Tensorflow Version : 2.0-gpu
OS: Ubuntu 19.10
cuda-version :10.2
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

@SlowMonk Can you please give the entire code with dataset for us to reproduce this issue? Thanks!

I changed it to the cuda-version 10.0 and it still gives error
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)
and jupyter notebook just kernel died


WIP: New transformations

Adds a few transformations that are listed in the spec but were missing in pybids. Also fixes some issues with various transformations.

Adds demean
Adds not_ (logical negation)
Adds remove
Adds a replace_na argument to scale
Fixes a bug in select
Ensures all transformations are imported into the transformations namespace
Adds a few tests

Very minor error in doc string "replace_nan" not "replace_na"

Okay, I've tested this and it works, but note that by default n/as are dropped in _load_time_variables. To get it to work, I had to do: analysis.setup(drop_na=False)
Fine with me, I suppose most people will want to drop n/as by default.

Allright, there is actually another problem: get_events. The way its currently implemented, it merges all event files into a single df. I think you mentioned you wanted to deprecate this function, and I think it may make sense. Although, in the meantime, I think we can just loop over event files, in _load_time_variables rather than merge then ingest variables. It is assume that variables are only defined once, and a second time would raise an error.


Can we use variables/wildcards in logged messages?

I'm a newb, so I'm not sure if this is a feature request or if I'm just not understanding the proper syntax for a currently active capability.
We're using HA and alarmo to create an alarm system, and we'd like it to log to a remote syslog when alarm events happen inside HA, like the alarm was armed, triggered, disarmed, etc.    RemoteSyslog_Service is perfect for that and we had not problems on initial setup or in creating basic automations to log events.
We'd like to include details such as who armed or disarmed the system, and alarmo makes some wildcards available that apparently can be used in push messages.
https://github.com/nielsfaber/alarmo?tab=readme-ov-file#wildcards
I tried using the alarmo wildcards in the message field of the RemoteSyslog_Service.   Here's what that looks like:

However, either I'm messing up the syntax or I'm trying to do something that isn't supported.
Here's what the logged messages look like on the syslog target machine:
Aug  9 12:06:03 <IP_ADDRESS>  hascript Alarm: armed   by
Aug  9 12:06:04 homeassistant homeassistant: 2024-08-09 12:06:03.861 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'arm_mode' is undefined when rendering 'Alarm: armed {{arm_mode}}  by {{changed_by}}'
Aug  9 12:06:04 homeassistant homeassistant: 2024-08-09 12:06:03.867 WARNING (MainThread) [homeassistant.helpers.template] Template variable warning: 'changed_by' is undefined when rendering 'Alarm: armed {{arm_mode}}  by {{changed_by}}'
Any guidance on what I'm doing wrong or should this be a feature request?
Thanks,
LW

Of course as soon as I filed the issue I found the right syntax:
This works:

results:
Aug  9 13:48:27 <IP_ADDRESS>  hascript Alarm: "armed armed_away by Firstname Lastname"
Aug  9 13:48:45 <IP_ADDRESS>  hascript Alarm disarmed by Firstname Lastname

Thanks very much for the RemoteSyslog_Service!!

Just now getting a chance to catch up on emails/notifications.  Glad you got it worked out & that you are able to use the component.  Hope your project goes well!


Compilation error

Hi,
I'm executing ./gradlew clean build and get this error:
:app:compileDebugJavaWithJavac - is not incremental (e.g. outputs have changed, no previous execution, etc.).
/Users/jogrimst/GitHub/AndroidMaryTTS-Client/app/src/main/java/com/marytts/android/client/MainActivity.java:71: error: cannot find symbol
        pd = new TransparentProgressDialog(this, R.drawable.spinner);
                                                           ^
  symbol:   variable spinner
  location: class drawable
1 error
:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

@jogrimst , Thank to inform us about not existing sources. Already added and please use it again

@farizaghayev Compilation still fails: https://github.com/literacyapp-org/AndroidMaryTTS-Client/pull/2 (see Travis compilation details).
Have you tried executing ./gradlew clean build?

if You are getting Information :

bash: ./gradlew: Permission denied

change permission with :
sudo chmod 777 gradlew
and try again

No, it's a different error: https://travis-ci.org/literacyapp-org/AndroidMaryTTS-Client/builds/172224360
:app:mergeDebugResources
/home/travis/build/literacyapp-org/AndroidMaryTTS-Client/app/src/main/res/drawable/empty.txt: Error: The file name must end with .xml or .png
:app:mergeDebugResources FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> /home/travis/build/literacyapp-org/AndroidMaryTTS-Client/app/src/main/res/drawable/empty.txt: Error: The file name must end with .xml or .png

please delete empty.txt file in drawable and try again.


Puppetforge nodejs is not the same version as on github

If i download the puppetforge  puppet/nodejs via the tar.gz download, i get a version which says 1.2.0 in the changelog.
But if i check the file "manifests/init.pp" it is not the same file as in this github repository.
If i download the old(?) puppetlabs/nodejs version which says 0.8.0 in the changelog, the file "manifests/init.pp" is the same as the 1.2.0 version of puppet/nodejs which i downloaded previously.
In other words: puppet/nodejs as version 1.2.0 and puppetlabs/nodejs as version 0.8.0 are (nearly?) the same files when downloaded via tar.gz (maybe also via puppet module).
Is there a problem in your CI or whatever you use to distribute the module?

this def needs a new release

When will it be possible to get a new releasE?

@igalic Would you mind releasing a new version (and upload it to the puppet forge?)


Poltergeist support?

This gem does not support Poltergeist as driver, or?
https://github.com/teampoltergeist/poltergeist
I get this error message
undefined method `touch_action' for #<Capybara::Element tag="body"> (NoMethodError)

step
elemnt = page.find('body')
element.touch_action(:move, xdist: -70, ydist: 0,  duration: 500)
```

spec_helper
```
require 'touch_action'
```

Gemfile
```
gem 'touch_action', '~> 1.3.2'
```

So far it supports Capybara only if you use it with RSpec. But that's something easy to change, I'll take a look on that.

Thank you very much, specially for your fast response.

Hey @IDragonfire, I've added support to capybara native elements. It should work now. Please update the gem and let me know here so I can close the issue.
Thanks,

touch_action method is now defined for Capybara::Element, but this error occure:
undefined method `execute_script' for #<Capybara::Poltergeist::Browser:0x0000000663c350> (NoMethodError)

Mabye page.execute_script instead of driver.browser.execute_script solves the problem?
https://github.com/Ricardonacif/touch_action/blob/master/lib/touch_action/capybara_element.rb#L9
https://github.com/jnicklas/capybara#scripting
Thank you very much for your effort ;)

@IDragonfire opps I didn't know that Poltergeist implemented his own browser. page.execute_script won't work there. I'll take a look at that later.

@Ricardonacif Thank you very much ;)
Ps.: I only found this:
https://github.com/teampoltergeist/poltergeist/blob/f146de3f452737f16079782a12d31dcbf49dcd2b/lib/capybara/poltergeist/driver.rb#L139
https://github.com/teampoltergeist/poltergeist/search?utf8=✓&q=execute+script

Cool. I'll have time to implement it during the week ok?

@Ricardonacif I will test it as soon as you publish it ;)

@Ricardonacif any progress?

@IDragonfire sorry man I didn't have time yet. Will see if I can do it later tonight.

@Ricardonacif Thanks ;)

@IDragonfire I'm running into the same issue with poltergeist. Did you find a workaround?

@adamlangsner sorryy .. I found no solution ...


Use QuerySet.iterator() where possible

Unless .iterator() is used, Django will spend extra time populating the query cache on a QuerySet object that we're about to discard.

Impact

[ ] New migrations
[ ] New/Updated API fields or mutations
[ ] Deprecated API fields or mutations
[ ] Removed API types, fields, or mutations
[ ] Documentation needs to be updated

Pull Request Checklist

[ ] Privileged queries and mutations are guarded by proper permission checks
[ ] Database queries are optimized and the number of queries is constant
[ ] Database migration files are up to date
[ ] The changes are tested
[ ] GraphQL schema and type definitions are up to date
[ ] Changes are mentioned in the changelog

@patrys Can you port these changes to the main branch?


docs(oidc-group-mapping) explain group claim value format and include an example

Summary
In order to use auto role assigning, users need to know the format of the group claim value.
Reason
There is no example on the doc at the moment.

Link checker is returning a HTTP 400 from Netlify. I can't reproduce, but manual checks show that it's fine. :shipit:


Hardware serial support

How to use a6 module librarry with hardware serial on arduino?

I think you need to replace the softserial object with the Serial object, but I'm not quite sure. I'd appreciate a PR that made it more easily swappable.


Support --watch flag

Is your feature request related to a problem?
As a developer, I would like to be able to run my e2e tests with --watch, so that I am able to more-rapidly develop my e2e testing Journeys.
Describe the solution or feature you'd like
Accept a watch parameter to the executor schema that is passed to the executor and runWdio method, enabling the developer to run wdio in watch mode.
Describe alternatives you've considered
There aren't really any alternative approaches I can see to this that aren't hacky when consuming this package to setup WDIO e2e tests
Additional context
No response

Thanks for reporting! I agree, this is a missing feature and would be a nice enhancement.
I'll look into this and will update this issue.

Many thanks!


Package is no longer on PyPI

Currently hsluv is no longer on pypi, will it be uploaded again?

@damienrj while Google cache still list the page URL https://pypi.org/project/hsluv/ gives 404 for me, too :scream: @boronine do you know what has happened to the PyPI package? I believe you are were the owner on PyPI?

Pypi yanked a lot of packages in response to https://www.cyberkendra.com/2022/05/python-ctx-and-php-library-compromised.html I believe.

@damienrj I was able to upload version 5.0.3 to PyPI under the same name "hsluv" just now. The content is the same as 5.0.2 plus two trivial commits:

56d97aa — Add note for Python 2 users, refs #32
b628f92 — Bump version to v5.0.3

@boronine I hope that me uploading 5.0.3 now has your blessing. I felt that action was urgently needed and that there was even potential risk that anyone could upload and re-occupy name "hsluv" on PyPI — not sure —, so I thought we'd better be quick and first then, just in case. I would still like to learn how the package disappeared from PyPI, if you know anything about that.
PS: Uploading files for 5.0.2 was blocked by PyPI saying that the filename has already been used before, which makes some sense.
Best, Sebastian :beers:

Great thanks, our builds are working again as well.

@hartwork thank you for your quick remedy! 🙏 5.0.3 is great and you can feel free to release without my blessing in the future! I sent you an email regarding this incident.


Simple Example

Hi, I'm trying to use CSGL without luck. Created a project as you instructed and added your code there. Everything compiles but crashes on the third line of code:
CSGL.Glfw3.glfwWindowHint(CSGL.Glfw3.GLFW_CONTEXT_VERSION_MAJOR, 4);
I've dropped the glfw3.dll in the .exe folder so I think it is loaded.
...
Could you provide a small sample project so we can work with?
Thanks in advance,
Lucas.

Could you provide any more detail on the error you're receiving?
Also, if you can, launch the program with a console window attached; this way you can tell whether GLFW loads properly, if it either prints:
Failed to link 'binary.ext'
Could not resolve 'delegateName' in loaded assembly 'binary.ext' ( a bunch )
Or if it links any binary to a NULL handle; something went wrong in the process of loading the binaries, and you might have to double check that you have an up-to-date version of either libglfw or your graphics drivers.

I'm using glfw 3.2.1 pre-built dll.
This is the exception:

Managed Debugging Assistant 'PInvokeStackImbalance'  occurred
Message=Managed Debugging Assistant 'PInvokeStackImbalance' : 'A call to PInvoke function 'project-name!CSGL.Glfw3+PFNGLFWWINDOWHINTPROC::Invoke' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.'

This is what my console window shows:

Linked 'glfw3.dll' -> '0x675A0000'

That is odd, because the signatures seem to match.
Are you sure your glfw.dll and project are targeting the same platform?
This error might occur if your glfw.dll targets a 64-bit platform, and your application targets a 32-bit platform. AnyCPU might also cause issues with invoking unmanaged binaries; please make sure that you are targeting either x86 or x64, and that your targeted platform matches the platform glfw3.dll targets.

Did you manage to get CSGL to work for you?
I will close this issue if it remains unanswered for 30 days.
As for examples, the readme covers the initialization of CSGL, beyond that you could apply any OpenGL/GLFW code, and as there are plenty tutorials on those I doubt my limited OpenGL knowledge could create sufficient examples.

Issue closed due to inactivity. If this problem persists, please comment to re-open.

I can confirm this is an issue:
I configured my project towards x86 and have tried both Glfw 3.3 and 3.2.1, Both times this issue has occurred. Whenever I run the project with a Glfw 3.2.1 DLL this happens in the console:
Linked 'glfw3.dll' -> '0x62FB0000'

And it crashes with this error:
+PFNGLFWWINDOWHINTPROC::Invoke' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.'

When I run it with 3.3:
Linked 'glfw3.dll' -> '0x5CF70000'

And it crashes with this error:
+PFNGLFWWINDOWHINTPROC::Invoke' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.'

I don't have much experience working between Managed to Unmanaged code. So this might be oversight on my part but I would like to get this working, for faster contact you can add me on discord: WolfHybrid23#4902

This seems to be caused by a calling convention mismatch. This oversight is on me, and the fact that calling conventions in 32-bit code are somewhat of an unintelligible mess.


Change color history to be incremental, save ~70% of gas

In your code, upon every updating of pixels, the whole image was being written to storage (history).
I have changed it so only the changes are being written incrementally to storage.
Then DixelArt's getPixelsFor rebuilds the image using the new getPixelAt, which uses binary search to search the pixel history.
This moves the cost to a view function which is practically free.
As a result, updatePixels now takes around 60-70% less gas.
Perhaps more testing is needed, but I think this ok, and the gas savings are massive.
Let me know if you have any questions or issues.
This is the gas consumption the tests now show:
····························|························|·············|·············|··············|···············|··············
|  Contract                 ·  Method                ·  Min        ·  Max        ·  Avg         ·  # calls      ·  usd (avg)  │
····························|························|·············|·············|··············|···············|··············
|  DixelMock                ·  updatePixels          ·     373116  ·     446184  ·      421279  ·          107  ·          -  │
····························|························|·············|·············|··············|···············|··············
|  DixelMock                ·  updatePixelsNoChecks  ·          -  ·          -  ·    13701023  ·            1  ·          -  │
····························|························|·············|·············|··············|···············|··············
|  DixelMock                ·  updatePixelsOriginal  ·          -  ·          -  ·    13987008  ·            1  ·          -  │

I believe you can even save more gas by not saving pixels in Dixel. You can use DixelArt's getPixelAt to check the color, and no need to update locally in Dixel's pixels as you have the information in DixelArt. This should save a few thousand gas. However I don't want to implement this on my own as this is an architectural change and is not as critical as this branch.
 Will send the mail from assafo at gmail.

Binary search not implemented correctly... Trying to fix now.

In my code, if you execute getPixlesAt with a token that has not been minted yet, you'll get all 0s. I wrote that this is the same as the previous impl but actually I see that I'm wrong and in the original impl the execution would revert (out of bounds on History array). So you can choose what to do in this scenario.

This is brilliant! Thanks so much for your contribution!

Hum.. this does save 60-70% of gas when a user update 1-2 pixels at a time,
but if the user updates all 256 pixels, gas fee has increased a lot (4.5x).
I guess following code is probably much heavier than just assign uint8[16][16] array.
for (uint256 i = 0; i < params.length; i++) {
     colorsHistory[params[i].x][params[i].y].push(PixelSnapshot(tokenId,params[i].color));
}

@assafom Do you think there's a better way to handle this bulk updating scenario?
Because we're expecting bulk updating can happen quite often, we may have to revert this change in favor of bulk updating instead of small number of pixel updating.

@sydneyitguy  Oh, wow, I totally missed that extra digit when checking the expensive functions... I thought it's the same magnitude and we're getting savings. My bad.
Hmm, I may have an idea about how to achieve this, but it's not so trivial. The basic idea it to combine the two approaches - save incremental updates with small updates, and the whole array as a "base" with big updates. The difficulty will be to retrieve the correct color and still get substantial gas savings.
I'll try do it, will let you know if I succeed.
Maybe meanwhile you can indeed revert this change.

Hi @sydneyitguy. I've ran some tests and it looks like the gas savings of incremental updates get negated when updating 18 pixels at once.
So for example:
If the user updates 4 pixels at once, the combined approach will save him ~57% gas.
If he updates 9 pixels at once, the combined approach will save him ~38% gas.
If he updates 18 pixels at once, it will cost roughly the same.
But if he updates more than 18 pixels at once, there will be a 3% gas cost increase for the combined approach.
So if you expect that the main usage will be for updating more than 18 pixels at once,
there will be a 3% cost increase for the combined approach and therefore it's probably not worth it.
Especially since the larger updates require more gas so the 3% is bigger there.
Do you want me to try to implement this combined approach or is it not worth it anymore?

I guess we might have more than 18 pixels updates happens often in early stage. The opposite would happen in later stage.
Updating 256 pixels in current data structure costs about $10 on BSC (at BNB $500), so I guess it's  still doable whereas $45 is probably become a big obstacle.
Let's keep the simple data structure for now, if we don't have a good solution to keep it less than $10 at the worst case.
Thank you for your in depth review and suggestions!

Thanks, and you're welcome 🙂
By the way... since you're not getting a lot of issues for your contest, you might be wondering if people are not looking or at they not finding anything.
Wanted to let you know that I have auditing background and I'm looking, but haven't found serious issues so far. Will have further looks though.


[Event Request] OnCreateItemReferenceBeforeInsert in Codeunit "Item Reference Management"

We are trying to transfer our own fields from the item vendor to the item reference and need the following events to accomplish this:
    local procedure CreateItemReference(ItemVend: Record "Item Vendor")
    var
        ItemReference2: Record "Item Reference";
    begin
        FillItemReferenceFromItemVendor(ItemReference2, ItemVend);
        // ################### NEW START
        OnCreateItemReferenceBeforeInsert(ItemReference2, ItemVend);
        // ################### NEW END
        ItemReference2.Insert();
    end;

with the following event signature
    [IntegrationEvent(false, false)]
    local procedure OnCreateItemReferenceBeforeInsert(var ItemReference: Record "Item Reference"; ItemVendor: Record "Item Vendor")
    begin
    end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Disable motd

Disabling motd results in a faster boot of the
AMI.
Issue #, if available: #1751
Description of changes:
By disabling motd the AMI is able to boot up faster. The difference is about 20s. Analysis was done using systemd-analyze:
Before change:
Startup finished in 698ms (kernel) + 7.574s (initrd) + 1min 2.208s (userspace) = 1min 10.481s graphical.target reached after 1min 2.146s in userspace.
After change:
Startup finished in 454ms (kernel) + 3.842s (initrd) + 38.513s (userspace) = 42.810s graphical.target reached after 38.055s in userspace.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Testing Done: Launching a custom AMI made from one of the release AMI's

See this guide for recommended testing for PRs. Some tests may not apply. Completing tests and providing additional validation steps are not required, but it is recommended and may reduce review time and time to merge.

Is this observable with the stock AL2023 images? We did make sure the update-motd service didn't block the OS launching.

This service doesn't block any of the important services (nodeadm-run, containerd, kubelet), so I don't see much benefit in disabling it. The "update is available" message written by /etc/update-motd.d/70-available-updates is helpful, IMO.

Let me know if you disagree @stijndehaes

@cartermckinnon fair enough :)
I do notice kubelet launching 3s faster without motd, but that is probably within margin of error.
I would like to improve the hot code path, I am leaving on a 10 days of vacation tomorrow, but after that I would love to improve nodeadm-config and nodeadm-run.
nodeadm-config uses kubelet making it slow, and nodeadm-run uses containerd making it slow.
Is there a better place than github issues to discuss solution designs? :)

appreciate the attention here, i also think it would benefit from a bit of caching and/or parallelism here so i might take a stab at it when i have time


search: remove deprecated wtforms.ext.sqlalchemy

Replaces QuerySelectField with SelectField.
(addresses #2620)

Signed-off-by: Leonardo Rossi<EMAIL_ADDRESS>

Looks good. Reviewed-by: me

done! :dancers:


LBFGS not working for custom classes

Hello!
I am trying to fit a neural ODE network using Diffrax and Optax, but when I try to change the optimizer in the demo code (https://docs.kidger.site/diffrax/examples/latent_ode/) from optax.adam to optax.lbfgs I get an error that seems to be related to the fact that the neural network is wrapped in a custom class. Here is the stacktrace for the error:
Cell In[11], line 1
----> 1 main()

Cell In[10], line 56, in main(dataset_size, batch_size, lr, steps, save_every, hidden_size, latent_size, width_size, depth, seed)
     52 for step, (ts_i, ys_i) in zip(
     53     range(steps), dataloader((ts, ys), batch_size, key=loader_key)
     54 ):
     55     start = time.time()
---> 56     value, model, opt_state, train_key = make_step(
     57         model, opt_state, ts_i, ys_i, train_key
     58     )
     59     end = time.time()
     60     print(f"Step: {step}, Loss: {value}, Computation time: {end - start}")

    [... skipping hidden 15 frame]

Cell In[10], line 38, in main.<locals>.make_step(model, opt_state, ts_i, ys_i, key_i)
     36 value, grads = loss(model, ts_i, ys_i, key_i)
     37 key_i = jr.split(key_i, 1)[0]
---> 38 updates, opt_state = optim.update(grads, opt_state)
     39 model = eqx.apply_updates(model, updates)
     40 return value, model, opt_state, key_i

File ~/Code/optax/optax/transforms/_combining.py:73, in chain.<locals>.update_fn(updates, state, params, **extra_args)
     71 new_state = []
     72 for s, fn in zip(state, update_fns):
---> 73   updates, new_s = fn(updates, s, params, **extra_args)
     74   new_state.append(new_s)
     75 return updates, tuple(new_state)

File ~/Code/optax/optax/_src/base.py:330, in with_extra_args_support.<locals>.update(***failed resolving arguments***)
    328 def update(updates, state, params=None, **extra_args):
    329   del extra_args
--> 330   return tx.update(updates, state, params)

File ~/Code/optax/optax/_src/transform.py:1440, in scale_by_lbfgs.<locals>.update_fn(updates, state, params)
   1438 diff_params = otu.tree_sub(params, state.params)
   1439 diff_updates = otu.tree_sub(updates, state.updates)
-> 1440 vdot_diff_params_updates = otu.tree_vdot(diff_updates, diff_params)
   1441 weight = jnp.where(
   1442     vdot_diff_params_updates == 0.0, 0.0, 1./vdot_diff_params_updates
   1443 )
   1444 # params_diff, updates_diff, weight depend on differences of parameters
   1445 # that are not defined at the first iteration. Hence we keep them at 0 if
   1446 # state.count = 0.

File ~/Code/optax/optax/tree_utils/_tree_math.py:154, in tree_vdot(tree_x, tree_y)
    133 def tree_vdot(tree_x: Any, tree_y: Any) -> chex.Numeric:
    134   r"""Compute the inner product between two pytrees.
    135
    136   Examples:
   (...)
    152   numerical issues.
    153   """
--> 154   vdots = jtu.tree_map(_vdot_safe, tree_x, tree_y)
    155   return jtu.tree_reduce(operator.add, vdots)

    [... skipping hidden 1 frame]

File ~/.conda/envs/jax/lib/python3.11/site-packages/jax/_src/tree_util.py:320, in <listcomp>(.0)
    283 """Maps a multi-input function over pytree args to produce a new pytree.
    284
    285 Args:
   (...)
    317   - :func:`jax.tree.reduce`
    318 """
    319 leaves, treedef = tree_flatten(tree, is_leaf)
--> 320 all_leaves = [leaves] + [treedef.flatten_up_to(r) for r in rest]
    321 return treedef.unflatten(f(*xs) for xs in zip(*all_leaves))

ValueError: Custom node type mismatch: expected type: <class '__main__.LatentODE'>, value: None.

I'm pretty new to JAX, so I'm not entirely sure what's going on here. It's worth noting that I was unable to install using the pip+git command (due to a timeout error connecting to GitHub), so I cloned the repo separately and ran pip install . from within the repo folder.
Python version:  3.11
JAX version: 0.4.26
Diffrax version: 0.5.0
Optax version: 0.2.4.dev

Hello @Michaelhess17,
Thanks for pointing this out. The issue stems from the fact that the optax primitives may not handle properly the modules of equinox (e.g. optax.tree_utils.tree_sub(model, model) for model some equinox module will throw an error as it is trying to substract elements of the pytrees that are not arrays (or anything supporting a sub operation).
There is a workaround though: use equinox to filter out the elements of the module that are not arrays etc...
So here is the equinox example with lbfgs running (only difference is in the make_step function where I filter out elements of model, state or updates that are not arrays).
If that solves your issue, feel free to close the issue.
import time

import diffrax
import equinox as eqx
import jax
import jax.nn as jnn
import jax.numpy as jnp
import jax.random as jr
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import optax

matplotlib.rcParams.update({"font.size": 30})

class Func(eqx.Module):
    scale: jnp.ndarray
    mlp: eqx.nn.MLP

    def __call__(self, t, y, args):
        return self.scale * self.mlp(y)

class LatentODE(eqx.Module):
    func: Func
    rnn_cell: eqx.nn.GRUCell

    hidden_to_latent: eqx.nn.Linear
    latent_to_hidden: eqx.nn.MLP
    hidden_to_data: eqx.nn.Linear

    hidden_size: int
    latent_size: int

    def __init__(
        self, *, data_size, hidden_size, latent_size, width_size, depth, key, **kwargs
    ):
        super().__init__(**kwargs)

        mkey, gkey, hlkey, lhkey, hdkey = jr.split(key, 5)

        scale = jnp.ones(())
        mlp = eqx.nn.MLP(
            in_size=hidden_size,
            out_size=hidden_size,
            width_size=width_size,
            depth=depth,
            activation=jnn.softplus,
            final_activation=jnn.tanh,
            key=mkey,
        )
        self.func = Func(scale, mlp)
        self.rnn_cell = eqx.nn.GRUCell(data_size + 1, hidden_size, key=gkey)

        self.hidden_to_latent = eqx.nn.Linear(hidden_size, 2 * latent_size, key=hlkey)
        self.latent_to_hidden = eqx.nn.MLP(
            latent_size, hidden_size, width_size=width_size, depth=depth, key=lhkey
        )
        self.hidden_to_data = eqx.nn.Linear(hidden_size, data_size, key=hdkey)

        self.hidden_size = hidden_size
        self.latent_size = latent_size

    # Encoder of the VAE
    def _latent(self, ts, ys, key):
        data = jnp.concatenate([ts[:, None], ys], axis=1)
        hidden = jnp.zeros((self.hidden_size,))
        for data_i in reversed(data):
            hidden = self.rnn_cell(data_i, hidden)
        context = self.hidden_to_latent(hidden)
        mean, logstd = context[: self.latent_size], context[self.latent_size :]
        std = jnp.exp(logstd)
        latent = mean + jr.normal(key, (self.latent_size,)) * std
        return latent, mean, std

    # Decoder of the VAE
    def _sample(self, ts, latent):
        dt0 = 0.4  # selected as a reasonable choice for this problem
        y0 = self.latent_to_hidden(latent)
        sol = diffrax.diffeqsolve(
            diffrax.ODETerm(self.func),
            diffrax.Tsit5(),
            ts[0],
            ts[-1],
            dt0,
            y0,
            saveat=diffrax.SaveAt(ts=ts),
        )
        return jax.vmap(self.hidden_to_data)(sol.ys)

    @staticmethod
    def _loss(ys, pred_ys, mean, std):
        # -log p_θ with Gaussian p_θ
        reconstruction_loss = 0.5 * jnp.sum((ys - pred_ys) ** 2)
        # KL(N(mean, std^2) || N(0, 1))
        variational_loss = 0.5 * jnp.sum(mean**2 + std**2 - 2 * jnp.log(std) - 1)
        return reconstruction_loss + variational_loss

    # Run both encoder and decoder during training.
    def train(self, ts, ys, *, key):
        latent, mean, std = self._latent(ts, ys, key)
        pred_ys = self._sample(ts, latent)
        return self._loss(ys, pred_ys, mean, std)

    # Run just the decoder during inference.
    def sample(self, ts, *, key):
        latent = jr.normal(key, (self.latent_size,))
        return self._sample(ts, latent)

def get_data(dataset_size, *, key):
    ykey, tkey1, tkey2 = jr.split(key, 3)

    y0 = jr.normal(ykey, (dataset_size, 2))

    t0 = 0
    t1 = 2 + jr.uniform(tkey1, (dataset_size,))
    ts = jr.uniform(tkey2, (dataset_size, 20)) * (t1[:, None] - t0) + t0
    ts = jnp.sort(ts)
    dt0 = 0.1

    def func(t, y, args):
        return jnp.array([[-0.1, 1.3], [-1, -0.1]]) @ y

    def solve(ts, y0):
        sol = diffrax.diffeqsolve(
            diffrax.ODETerm(func),
            diffrax.Tsit5(),
            ts[0],
            ts[-1],
            dt0,
            y0,
            saveat=diffrax.SaveAt(ts=ts),
        )
        return sol.ys

    ys = jax.vmap(solve)(ts, y0)

    return ts, ys

def dataloader(arrays, batch_size, *, key):
    dataset_size = arrays[0].shape[0]
    assert all(array.shape[0] == dataset_size for array in arrays)
    indices = jnp.arange(dataset_size)
    while True:
        perm = jr.permutation(key, indices)
        (key,) = jr.split(key, 1)
        start = 0
        end = batch_size
        while start < dataset_size:
            batch_perm = perm[start:end]
            yield tuple(array[batch_perm] for array in arrays)
            start = end
            end = start + batch_size

def main(
    dataset_size=10000,
    batch_size=256,
    lr=1e-2,
    steps=250,
    save_every=50,
    hidden_size=16,
    latent_size=16,
    width_size=16,
    depth=2,
    seed=5678,
):
    key = jr.PRNGKey(seed)
    data_key, model_key, loader_key, train_key, sample_key = jr.split(key, 5)

    ts, ys = get_data(dataset_size, key=data_key)

    model = LatentODE(
        data_size=ys.shape[-1],
        hidden_size=hidden_size,
        latent_size=latent_size,
        width_size=width_size,
        depth=depth,
        key=model_key,
    )

    @eqx.filter_value_and_grad
    def loss(model, ts_i, ys_i, key_i):
        batch_size, _ = ts_i.shape
        key_i = jr.split(key_i, batch_size)
        loss = jax.vmap(model.train)(ts_i, ys_i, key=key_i)
        return jnp.mean(loss)

    @eqx.filter_jit
    def make_step(model, opt_state, ts_i, ys_i, key_i):
        value, grads = loss(model, ts_i, ys_i, key_i)
        key_i = jr.split(key_i, 1)[0]
        grads = eqx.filter(grads, eqx.is_array)
        opt_state = eqx.filter(opt_state, eqx.is_array)
        model_ = eqx.filter(model, eqx.is_array)
        updates, opt_state = optim.update(grads, opt_state, model_)
        model = eqx.apply_updates(model, updates)
        return value, model, opt_state, key_i

    optim = optax.lbfgs(learning_rate=1e-3, linesearch=None)
    opt_state = optim.init(eqx.filter(model, eqx.is_inexact_array))

    # Plot results
    num_plots = 1 + (steps - 1) // save_every
    if ((steps - 1) % save_every) != 0:
        num_plots += 1
    fig, axs = plt.subplots(1, num_plots, figsize=(num_plots * 8, 8))
    axs[0].set_ylabel("x")
    axs = iter(axs)
    for step, (ts_i, ys_i) in zip(
        range(steps), dataloader((ts, ys), batch_size, key=loader_key)
    ):
        start = time.time()
        value, model, opt_state, train_key = make_step(
            model, opt_state, ts_i, ys_i, train_key
        )
        end = time.time()
        print(f"Step: {step}, Loss: {value}, Computation time: {end - start}")

        if (step % save_every) == 0 or step == steps - 1:
            ax = next(axs)
            # Sample over a longer time interval than we trained on. The model will be
            # sufficiently good that it will correctly extrapolate!
            sample_t = jnp.linspace(0, 12, 300)
            sample_y = model.sample(sample_t, key=sample_key)
            sample_t = np.asarray(sample_t)
            sample_y = np.asarray(sample_y)
            ax.plot(sample_t, sample_y[:, 0])
            ax.plot(sample_t, sample_y[:, 1])
            ax.set_xticks([])
            ax.set_yticks([])
            ax.set_xlabel("t")

    plt.savefig("latent_ode.png")
    plt.show()

main()


openlm-research's open_llama issues

it's not based on facebook's llama's weights - so it does not need to adhere to their funky license
there now exsits a 300bt https://huggingface.co/openlm-research/open_llama_7b_preview_300bt

Thanks. Model List now retired, so closing.


Fixup app atom from :pow_demo to :my_app

The rest of this guide refers to the app as :my_app but there's one spot where :pow_demo is referenced. Changing it here so it's easier to understand what params need to be changed to keep tests happy.

Thanks!


Stop mutating Settings

A low priority task is to stop the mutation of appSettings/Settings and instead pass the mutated values as parameters

The confusion I actually had was new instances of Settings being created for sub directories. This is a bit confusing as you would expect them to stay consistent


Tiles render eratically in release build only

For a few months, I've had no problem rendering map tiles, doing extensive testing both in the emulator and on a variety of real devices. Now that I'm starting alpha tests, I've been doing release builds rather than debug builds. For reasons I can't explain, tiles often don't render.
Sometimes I'll open the app and it will be fine. Sometimes tiles won't render at all, giving a grey background. Sometimes it will work at one zoom level and not another. Markers and a Polyline layer always scontinue to render correctly. If I substitute a tileProvider, I can see that the getImage method is returning correctly even when the tiles don't render.
Does anybody have suggestions on where to look for the problem?

I've created a minimal reproducible example you can see here. For me, it never renders in release mode, not even sporadically (note that the example only includes a TileLayer – not even explicitly, it just contains its options).

Isn't that a provider issue ? Which one you use ?

I'm not sure who you're asking, @kleeb, but if it's me, I'm using MapBox. My setup looks like this:
    var mapLayers = <fm.LayerOptions>[
      new fm.TileLayerOptions(
        urlTemplate: "https://api.tiles.mapbox.com/v4/"
            "{id}/{z}/{x}/{y}@2x.png?access_token={accessToken}",
        additionalOptions: {
          'accessToken': 'MYTOKEN',
          'id': 'mapbox.streets',
        },
      ),
    ];

I see that @DamianoMagrini in his example (thanks, Damiano!) has the same issue with OSM tiles.

have you tried vector version of Mapbox ?
https://pub.dev/packages/mapbox_gl
it should work much more smoothly

I have, @kleeb, and it has its own problems. Not quite as bad as this one, but assuming this gets fixed, I'd rather stick with this package.

I think they worked on it quite heavily. It works really proper in the latest 0.0.4 version

I'm happy you've found something you're excited about. But perhaps on the discussion of this bug, we could stick to this bug?

I can't reproduce this issue. I downloaded https://github.com/DamianoMagrini/flutter-maps-does-not-render-mre and installed it on my iPhone in release mode - can you provide more details about your device / network? Are there any network failures happening?

For what it's worth, this was happening for me on Android. Both in the emulator and on my Pixel. I haven't tried it on iPhone, but there were no network errors. Indeed, the network was my first suspicion, which is why I logged requests like this:
class LoggingCachedNetworkTileProvider extends fm.CachedNetworkTileProvider {
  @override
  ImageProvider getImage(Coords<num> coords, TileLayerOptions options) {
    print('getting image $coords');
    var result = super.getImage(coords, options);
    print('got $result');
    return result;
  }

Tiles were definitely getting fetched; they just weren't being reliably rendered.

@wpietri , did find any solution ? I can reproduce this issue only with a real an droid device.
It's working in the emulators...

@vianneyriotte I did not. Right now I'm evaluating other mapping libraries.

One thing I spotted recently, is that you can end up with a different AndroidManifest.xml file for debug and live mode.
In my case, my debug manifest had internet enabled, but my live file didn't (I had never dabbled with either)..
<uses-permission android:name="android.permission.INTERNET" />
So what was happening, when I went to release mode, the app was just using the cached tiles on the device only. Changing the manifest file fixed it.
Naturally, it may not be this problem also, but it may help others.


0.28b1: (spurious?) Warning when extension name deliberately doesn't match python name

(First, let me say that Cython is fantastic. I've been using git checkouts of 0.28a much more in gevent 1.3a2 and it has led to many improvements. Thanks!)
One of the new features (called a bugfix) in Cython 0.28 is the ability to have an Extension that compiles a .py file to a different extension name (#2038). This is extremely useful for creating optional accelerator modules (especially on PyPy). gevent has been using it as such (and it's made my life much easier, thanks!).
However, when you do so, you get a warning:
# setup.py
from Cython.Build import cythonize
from setuptools import Extension

foo = Extension(name='_foo',
                sources=['foo.py'])

cythonize([foo])

$ python setup.py
Warning: Extension name '_foo' does not match fully qualified name 'foo' of 'foo.py'

Is this warning still necessary now that the generated code is correct? Or am I doing something wrong?
I could see the argument that in the usual case the warning could be useful to avoid mistakes, but then it would be nice to have a way to silence the warning when it's done deliberately.
If there's something easy to do here I could try to work up a PR.

Thanks!


[Bug] Foreign accents don't work

If cleverbot have to answer with an accented letter in the message, it will replace the letter by something like that :

Thanks for catching this. I have pushed a fix to github and pypi. You should be able to run pip install --upgrade cleverwrap.


(PUP-4404) Use current user for SID spec test

The SID generation spec needs the name of a user that exists; that account
doesn't need to have any particular permissions. Previously the test would
expect an 'Administrator' account to exist and hard-coded that name; on
systems where no user named 'Administrator' exists the spec would fail.
Change the user name used in the test to be the current account - accessed
via the USERNAME environment variable - instead of hard-coding
'Administrator'.

:+1:
Although: do you want to fold this into the appveyor PR?

Hmm, guess I could.


Replace Dive into HTML5 link

The old link (http://diveintohtml5.info/) returns Access Denied.

Great to see Creative Commons licenses at work.


Issue 63

As I mentioned in my last comment on this issue, let's merge the main UI changes we have made and then we can return to update the codebase to allow us to check which signals were sent when. This essentially means our signal sent notification in the popup will be left out temporarily.

Sounds good. There is a merge conflict. Could you resolve that, @kalicki1 or @asalia-1 (if that is your code)?


Error when trying to install a package in Github Actions

I'm trying to build my project in Actions, I'm using npm ci to install all dependencies:
#8 15.86 npm ERR! code 1
#8 15.86 npm ERR! path /usr/src/app/node_modules/redis-memory-server
#8 15.86 npm ERR! command failed
#8 15.86 npm ERR! command sh -c node ./scripts/postinstall
#8 15.86 npm ERR! redis-memory-server: checking Redis binaries cache...
#8 15.86 npm ERR! Downloading Redis stable: 0 % (0mb / 3.3mb)
#8 15.86 npm ERR! failed to download/install Redis binaries. The error: Error: Command failed: make
#8 15.86 npm ERR! /bin/sh: make: not found

Action runs on ubuntu-latest (22.04)
Package version: 0.7.0
Can you show an example of a Github Action to install the package?

We are also facing similar issue, @melishev Were you able to fix this?

@tejaskatariya If make is missing, you can try apt install -y build-essential.


How to get the content of files using OneDrive file picker

Hey. I using one drive js picker tutorial and I success to select files and to get some information about them  . I try all options to get the content of the file that I could use it in my js file but without success.
I try many 'GET' request to the url that I get as response from the picer - @microsoft.graph.downloadUrl , webUrl etc but every thing return me different errors without any content .
                       var xhr = new XMLHttpRequest();                 xhr.open("GET", url, true);                         xhr.setRequestHeader("Access-Control-Allow-Origin", "*");                         xhr.setRequestHeader("Access-Control-Allow-Credentials", true);
I not really understand to where and what I need to send to get the content of the file that I get from the picker ?I need to add something special or what?
Thanks all !!

Hi @OriAmir:
If you are trying to download the file and use the contents of the file inside your JavaScript, then all you need to do is a simple GET on the @microsoft.graph.downloadUrl. No need to add the additional headers, allow authentication, etc.
There's an example using JQuery to open a picked file and use the contents inside the app here: https://github.com/OneDrive/onedrive-texteditor-js/blob/master/js/text-edit.picker.js#L41
Without JQuery, you would use similar code:
var selectedFile = files.value[0];
var downloadLink =<EMAIL_ADDRESS>var xhr = new XMLHttpRequest();
xhr.open("GET", downloadLink, true);
xhr.onreadystatechange = function () {
        if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
            // do something with the responseText, which is if the file
            console.log(xhr.responseText);
        }
    };
xhr.send();

Great , I don't think it's so simple! Thank you very much !


PostUrl in Razor

In Luquid, I can write {% post_url my-post-name %} and get a link of the post. How I can do the same on Razor?

Sadly PostUrl isn't available on Razor side for now.
@shiftkey, @JakeGinnivan I propose to do with Tag that is already done for IFilter: add an ITag interface which will be used by engines and registered as Liquid Tag for LiquidEngine and with ExtensibleTemplate for Razor, which for example for PostUrl we will have:
Liquid:
{% post_url my-post-name %}

And for Razor:
@Filter.PostUrl("my-post-name")

Don't have an opinion on this, go nuts :)

PostUrl tag is now usable in Razor:
@Tag.PostUrl("my-post-name")


Custom signing key Section does not Mention acceptMappedClaims as an alternative

The document mentions that you must use a Custom Signing key, but doesn't mention that you can get around that limitation by simply editing the app manifest to set "acceptMappedClaims" to true. Not only is the latter option much easier to set up and to maintain, and makes ID token validation much easier to do, it is also much more secure because it does not require a symmetric key to be transferred (and possibly stored) on client devices, which seems to be a huge security concern. I think a lot of people are going to go down the wrong path and implement something that is insecure because they didn't realize there was a much easier and secure way to do it.

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

ID: 195c79a3-ccc5-8c6a-233e-95e344a9b4df
Version Independent ID: 401c7557-5817-bbd3-5bd8-8c97ef5a28cc
Content
Content Source
Service: active-directory

@chrisetler Thanks for the feedback! I have assigned the issue to the author to take a look and update the document as appropriate.

I have sent an email to the PM for some clarification.

@chrisetler I just wanted to let you know that first, we are in the process of updating this doc, so a future version should call out using acceptMappedClaims.  Second, I verified that it is okay to use acceptMappedClaims if it's an app that is configured on the tenant (as opposed to a multi-tenant app or SAML SP).  And if the client side code handles key rolls – since tokens will be signed with the AAD signing key which may roll at any time. If an app uses acceptMappedClaims, it must be careful to handle the issuer validation, to provide proper isolation between tenants (e.g., if tenant 1 sets up a claims mapping to issue UPN ==<EMAIL_ADDRESS>the app must be validating the issuer so that it doesn’t incorrectly provide access to tenant 2’s data).  Finally we don't use a symmetric key, it’s an assymmetric key (certificate), so the client just gets the public key, the same as tokens signed using the AAD global signing key.
At this point thank you again for bringing this up as it will help us improve the docs and unless there is anything else I will close this out later today.
Thanks!

#please-close

@amanarneja  please-close

I have an app registration with acceptMappedClaims set to true, I authenticate against it and I'm still getting:
Microsoft.Identity.Client.MsalServiceException: AADSTS50146: This application is required to be configured with an application-specific signing key.

Am I missing something? And when is the documentation going to get updated, it's been over a year and there is still no mention of acceptMappedClaims.


Sync with latest Prometheus upstream

Sync with latest Prometheus upstream (69edd8709ba7d4b2152eab5fb208a3d74b4a81e1). Significant changes include adding a context argument to the following:

tsdb DB.Delete
tsdb.IndexReader.Postings
storage.LabelQuerier.LabelNames
storage.LabelQuerier.LabelValues
storage.LabelQuerier.SortedLabelValues
storage.Querier.Select
storage.ChunkQuerier.Select

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.7 out of 10 committers have signed the CLA.:white_check_mark: roidelapluie:white_check_mark: bboreham:white_check_mark: fionaliao:white_check_mark: beorn7:white_check_mark: fridgepoet:white_check_mark: aknuds1:white_check_mark: zenador:x: juliusv:x: slashpai:x: pnachtYou have signed the CLA already but the status is still pending? Let us recheck it.

I looked all the changes over, don't see any problems. Most of the changes are to do with my adding context arguments to various functions, and storage.warnings being replaced with annotations.


Reproduce production memory growth with electrum client

Only the last two patches are relevant.

We can close this now that we have https://github.com/itchysats/itchysats/pull/3197.


Gabor/memcpy

Relevant: https://stackoverflow.com/questions/67068195/does-clang-provide-intrinsics-for-webassemblys-memory-fill-and-memory-copy

@nomeata the drun tests seem to fail. I cannot see enough log for linux, could you paste it? Thanks!
I have a Mac, and it looks like recent wasmtime releases need macOS 10.13, but nixpkgs don't support that version yet in the libraries universally. (I guess nixpkgs wants to support older Macs than that too.)

Does the replica already support bulk memory operations?
Anyways, for me the tests fail already with validating:
~ $ nix-build -E '(import (builtins.fetchTarball "https://github.com/dfinity/motoko/archive/gabor/memcpy.tar.gz") {}).tests.drun'
these derivations will be built:
  /nix/store/yk6vk49pclxl53228y1j3arfbpfs93hi-test-drun.drv
building '/nix/store/yk6vk49pclxl53228y1j3arfbpfs93hi-test-drun.drv'...
unpacking sources
unpacking source archive /nix/store/jchjlxrdbyww96vqr538c594hssx10xm-test-run-drun-src
source root is test-run-drun-src
running tests
patching script interpreter paths in .
./compare-perf.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./run.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./compare-wat.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./drun-wrapper.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./diff-stats.pl: interpreter directive changed from "#!/usr/bin/env perl" to "/nix/store/kpzx6f97583zbjyyd7b17rbv057l4vn2-perl-5.34.0/bin/perl"
./test-reproducibility.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./profile-report.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./ic-ref-run-wrapper.sh: interpreter directive changed from "#!/usr/bin/env bash" to "/nix/store/v1d8l3zqnia3hccqd0701szhlx22g54z-bash-5.1-p8/bin/bash"
./check-error-codes.py: interpreter directive changed from "#!/usr/bin/env python3" to "/nix/store/wl02plhc6zf84m6x9984l42wnnnbly5m-python3-3.9.6/bin/python3"
/nix/store/zb2ka4ls5ja7rih29ikxb7qcwjb4p001-moc/bin/moc
Motoko compiler (source zb2ka4ls-5ja7rih2-9ikxb7qc-wjb4p001)
make: Entering directory '/build/test-run-drun-src/run-drun'
../run.sh -d *.mo *.drun
WARNING: Could not run ic-ref-run, will skip some tests
AST-64: [tc] [run] [run-ir] [run-low]
AST-66: [tc] [run] [run-ir] [run-low] [comp] [comp-ref] [valid] [valid-ref] [drun-run]
--- AST-66.valid.ret (expected)
+++ AST-66.valid.ret (actual)
@@ -0,0 +1 @@
+Return code 1
--- AST-66.valid (expected)
+++ AST-66.valid (actual)
@@ -0,0 +1 @@
+0000bb3: error: unexpected opcode: 0xfc 0xa
--- AST-66.valid-ref.ret (expected)
+++ AST-66.valid-ref.ret (actual)
@@ -0,0 +1 @@
+Return code 1
--- AST-66.valid-ref (expected)
+++ AST-66.valid-ref (actual)
@@ -0,0 +1 @@
+0000bb3: error: unexpected opcode: 0xfc 0xa
GIT-843: [tc] [run] [run-ir] [run-low] [comp] [comp-ref] [valid] [valid-ref] [drun-run]
--- GIT-843.valid.ret (expected)
+++ GIT-843.valid.ret (actual)
@@ -0,0 +1 @@
+Return code 1

Does the replica already support bulk memory operations?

By @ulan's statement today, the replica (engine) should support them. Whether the byte code validator (parity?) allows them is another question.

The validator above is wasm-validate from I think wabt. Maybe it needs a flag or a bump.

Maybe it needs a flag or a bump.

Indeed, a flag did the trick! THX!

@nomeata next stop is ic-ref:
+← rejected (RC_CANISTER_ERROR): Parsing failed: getMathPrefix: illegal op 10

Looks like someone needs to implement bulk memory operations in winter :-)

Looks like someone needs to implement bulk memory operations in winter :-)

I have successfully nerd-sniped me into it: https://github.com/dfinity-side-projects/winter/pull/29

(This is where Andreas will point out that it’s not good to rely on that Wasm implementation here.)

Nope, we just have to improve on our own toolset.

Okay, the two easy bulk memory operations are now ready for review in https://github.com/dfinity-side-projects/winter/pull/29. @nomeata

Another fresh hell opening up:
       > /nix/store/4xnsw7gdv4b3zvrb3dq8pq70db3bsnxy-moc/bin/moc
       > Motoko compiler (source 4xnsw7gd-v4b3zvrb-3dq8pq70-db3bsnxy)
       > /nix/store/rj0nm1wfpdg495myc6lj2g49dyj3800x-drun/bin/drun
       > ic standalone interface
       > Profiling assetstorage...
       > Error: UnknownOpcode(252)
       For full logs, run 'nix log /nix/store/rckfadrcb77350bdk941z8z90wm9mn4z-test-profiling-graphs.drv'.
error (ignored): error: cannot unlink '/tmp/nix-build-test-drun-compacting-gc.drv-0/test-run-drun-src/run-drun/ok': Directory not empty

@nomeata I guess I once again need the tests.drun traces or the tests.ic-ref-run ones, whichever is the failing one. I cannot see the relevant parts in the error logs.

@nomeata I guess I once again need the tests.drun traces or the tests.ic-ref-run ones, whichever is the failing one. I cannot see the relevant parts in the error logs.

https://github.com/dfinity/motoko/pull/3019 should get us the logs we need

Just doing some repo cleanup for better focussing on active work:
Closing PR as it seems inactive for a longer time. Please re-open if it is still relevant and after it has been updated with latest master changes.


Compaction Time for Large Document Counts is Excessive

We have a new customer use case that not only increases the number of documents synchronized to and held on an offline mobile device, but which also generates a large number of image captures on device. Images are initially captured in a high-resolution format, synchronized as soon as possible, and then back-end processed to archive these images. Once processed, the attachments are removed in favor of a remote URL on the JSON document.
We need to perform a regular compaction to recover mobile storage associated with the deleted attachments. Unfortunately, Android compaction takes in excess of 3 minutes, compared to less than 20 seconds on iOS for the same operations. These long compaction times are a show-stopper for us, because the app is effectively locked without meaningful feedback. We would like to know how to minimize the impact of this process on our mobile clients. Ideally this would be a non-blocking operation that could be run in the background with some kind of progress feedback (even allowing operations to progress).
For more insight, two test devices (Nexus 4, CBLite v1.1.0, iPad 3, CBLite v1.0.1) replicated 16,000 documents with attachments ranging in size from 50kb to 2mb. A server side change was made to a single document’s attachments so the _attachments hash no longer contained a reference to a single attachment. Across 5 executions, the Nexus 4 took an average of 3 minutes and 20 seconds to finish compacting; the overall runtime time did not change between each execution. At completion, the attachment was successfully removed from disk, though an issue has been opened (GitHub #685) that details how client-side attachment compaction on Android seems to be nonfunctional. The iPad 3 finished this compaction process in an average of 15 seconds. It showed the same behavior of compact times remaining equal between executions.
As stated before, these compactions  need to be run frequently, and doing so is a best practice from [https://groups.google.com/d/msg/mobile-couchbase/OAAW8IABtaw/0DyobmddkmsJ]. Our application must remain responsive and on-demand for our customers, and we cannot ask that our customers sit through a three-minute wait, even a scheduled one, before they can continue use. How can we best move forward on improving this with the Android library?

This should be resolved in 1.2, but we'll test for it.

Related: https://github.com/couchbase/couchbase-lite-java-core/issues/301

I will close this ticket as couchbase/couchbase-lite-java-core#301 is addressed.


new: usr: Implement connection pooling to reduce impact of multiple q…

…ueries to same server.
Implement exponential back-off to help with handling rate limiting.
User-Agent string reflects version of whoisit library.

This makes a number of design assumptions, so feel free to reject if it's not in-line with the vision you have for the library.
This change implements connection pooling. This does offer some performance improvements for the client library (probably not noticeable under normal use). The big benefit is for the server side, and hopefully this will reduce impact when used by many clients.
This change also incorporates the version of whoisit in the User-Agent.
Also also, exponential back-off should make it easier for your users, so that they don't have to catch the 429 and sort out a retry strategy.

This generally looks fine to me. I can see why connection pooling would be a desirable default if you're using whoisit in certain longer running deployments. You've added pretty much were I would have added it so no issues with the structure of it. The user agent version is pretty hacky, but what I'll probably do is just merge this as it is then give it a tweak before a next release.
Thanks for the PR!


Emoji Error

If it try to put in my own emoji's, that are available on my server, into the config.txt file the bot will just write the text down for example: :hype:
Can this be fixed? It would be amazing!

:hype: gets replaced by your discord client to their internal structure thats used. Just use their internal format for custom emotes <:name:id>.
Add an a before the first colon if your emote is animated.

@sanduhr32 can you give an example, I do not know how to do it! And thx for the answer

@Sanduhr32 can you give an example, I do not know how to do it! And thx for the answer
@LogischerJonasHD
For my emote called :jackAyaya: here is what I would use:
success = "<:jackAyaya:530317492371980289>"
For my animated emote :IllyaFreakout: I would add an a beforehand, like this:
warning = "<a:IllyaFreakout:627591954137350175>"
You need to get the id number of the emote in question using the developer tools inspector or something, google it.

Enabling developer mode or opening the image link of the emote in the browser also works.

You can easily see the full text of the emote by typing \:emote: and copying everything that prints out. You need to include this full text in the config, in quotes, as shown in a previous comment.


Add C++ Solution for Problem Of The Day | 29 January 2023

Comment below if you're interested in working on this issue and would like to be assigned to it.

Shall I work on this issue?