Barber Shop

Hey buddy, how's one of my favorite addon authors doing?! So I noticed a bug with the new patch that I wanted to make you aware of. When you go to the barbershop, the buttons on the right where you select your attributes, are like shifted down and covering the button to buy/apply the changes. Here's an image with and without Drift turned on:
https://ibb.co/x19Hfr4
https://ibb.co/bJtJPFy
Hope you can fix it soon! Thanks again!

Hi, Dave! Thanks for letting me know about this bug! I'm starting to look into it.

I'm unable to reproduce the bug. I tried with and without Drift, and I tried with and without ElvUI.
Do you have the latest version of Drift and ElvUI downloaded?
Have you tried reloading the interface?
Is this reproduceable on more than one character?
Could you try running "/driftreset" and seeing if that fixes the issue?
Thanks!

When I tried doing "/driftreset" it didn't fix it. But when I went into the addon's options and clicked the actual "Reset Frames" button (where it pops up a confirmation box) that fixed it! So I'm not sure if the slash command it bugged (so maybe I found a different bug?) or maybe it was just a fluke. But either way, all good now... thanks again! :)

I was finally able to reproduce the issue. It turns out the "BarberShopFrame" was re-implemented to take up the whole screen in the pre-patch (the same frame only used to occupy a very small space). As a result, right-clicking and dragging anywhere while in the Barber Shop interface caused everything to scale. Once scaled up, the buttons would disappear (since it was essentially zooming in on a piece of the interface). It took me a while to find because I have scaling locked, and once I unlocked scaling the issue became apparent.
That's odd with the "/driftreset" behavior. I'm not really sure what could be causing that because they use the same function call. Does "/driftreset" usually work for you?
I just released a new version of the addon on CurseForge. In this update, I removed support for Barber Shop, which should fix the button disappearing issue (it fixed the issue for me when I did a quick test). Can you download this update and verify it solves the issue?
Thanks again for reporting this bug.

To be honest, once I had everything setup I never used the /driftreset before, so I can't say if it's worked in the past. After doing the reset yesterday all seemed to be working well, but I just updated Drift and hopped into a Barbershop again and all seems to be working well. But if anything else funky goes on I'll be sure to let you know! Thanks for being so responsive btw! 💯


Arguments with '()' break parsing of functions for PHP

I'm aware of this bug which also exists in the original version.
As long as there's no support for recursive patterns in JavaScript RegExp this may not be fixed.

Finally fixed - v0.9.0


Token min and max width calculations wrong with non-ASCII characters

The calculation for padding and truncation of label tokens is inconsistent. For max-width it counts the number of unicode characters while for min-width it counts the number of bytes. This falls apart if the token text contains non-ASCII.
We should always use unicode codepoints for min and max-width
Discussed in https://github.com/polybar/polybar/discussions/3069

Originally posted by nymver January  4, 2024
So I have a module that displays the artist and title of current playing song. I have specified tokens (minimum and maximum width) (label = %output:-45:45%). If there are no Cyrillic letters in the text, everything is fine, but if there are, for some reason the width of the label is reduced.
Module:
[module/running_string]
type = custom/script
exec = $HOME/.config/polybar/scripts/running_string
tail = true
format = <label>
label = %output:-45:45%

Fixed in #3090. This is not on master yet, it will be in the 3.7.2 release


example 6 on image() reference page is broken because laDefense50.png is missing

Most appropriate sections of the p5.js website?
Reference
What is your operating system?
Windows
Web browser and version
Firefox 108.0.1
Actual Behavior
https://p5js.org/reference/#/p5/image
The 6th example for image() tries to loadImage( 'assets/laDefense50.png' ) which does not exist in the directory /src/templates/pages/reference/assets
Expected Behavior
The 6th example should have an sketch.
Steps to reproduce
visit https://p5js.org/reference/#/p5/image
Scroll down to the 6th example and there is no example sketch.
Would you like to work on the issue?
yes, but if anyone wants to take this on they can.

@takyano You can go ahead with a fix. Thanks!


run coverage testing

see
https://coverage.abaplint.org
https://github.com/abaplint/abaplint/blob/main/.github/workflows/coverage.yml

try https://github.com/bcoe/c8 ?


how to share the data in multiple tabs, but also need clear after closing the browser

Hello,
I found if I used localstorage, the data will always be saved even though I closed the browser.
Buf if I use sessionstorage, the data won't be shared in multiple tabs.
Could you please give me some suggestion?
Thanks

You can detect the JS onunload and onbeforeunload events, and then fire a localStorageService clear call.
http://stackoverflow.com/questions/30345446/how-to-trigger-a-function-on-window-close-using-angularjs has more details for this.


settings fs: Adding support for csi_save_start/end handlers

Prevents repeated flushing and writing of file during settings_save.
Should increase performance and reduce write cycles  when used with littlefs and other fs. #34554
Note i have not tested the compression feature of this fix. I'm using modified version of this module without the compression.

@optical-o, thanks for providing the PR.
IMO by keeping the file open it is no longer guarantee that when a settings_save_one() is succesfully finished that the data is stored. A power interrupt will create a loss of data.

Yes you are correct.
Then i find very strange the api for csi.
	int (*csi_save_start)(struct settings_store *cs); 	/**< Handler called before an export operation. 	 * 	 * Parameters: 	 *  - cs - Corresponding backend handler node 	 */
However i think that is a problem with the implementation of the settings_store api. The redundant writes created by this implementation are in my opinion quite serious because 14s ->200ms when saving around 200 settings options will create enormous amount of erases and writes on the flash. Which will rapidly degrade its life time.

Yes you are correct. The current proposed implementation will break when used with settings_save_one(). This indeed needs to be addressed. Then i find very strange the api for csi.
	int (*csi_save_start)(struct settings_store *cs);
	/**< Handler called before an export operation.
	 *
	 * Parameters:
	 *  - cs - Corresponding backend handler node
	 */

However i think that is a problem with the implementation of the settings_store api. The redundant writes created by this implementation are in my opinion quite serious because 14s ->200ms when saving around 200 settings options will create enormous amount of erases and writes on the flash. Which will rapidly degrade its life time.
The implementation of settings_save_one should be propably surrounded by:
		cs->cs_itf->csi_save_start(cs);
...
		cs->cs_itf->csi_save_end(cs);

Same as the settings_save.

Yes we could use the csi_save_start(cs) and csi_save_end(cs) to open and close the file. And this would also make sense, we know that an export will be doing a lot of writes. At the moment I don't think there is a backend that uses these routines. These routines could also be used for something completely different like changing where to store, ... (let your imagination work).
Another way to utilize these routines would be to set a boolean that avoids opening/closing the file when a settings_save_one() is called.
The extensive time savings you report would however only apply when a export is performed.
Anyhow, as it is I don't think it is an acceptable proposal.

@optical-o, thanks for providing the PR.

IMO by keeping the file open it is no longer guarantee that when a settings_save_one() is succesfully finished that the data is stored. A power interrupt will create a loss of data.

fs_sync() can be used for mitigating this - for littlefs there will be no timing cost as it is strict-write FS.

@optical-o, thanks for providing the PR.

IMO by keeping the file open it is no longer guarantee that when a settings_save_one() is succesfully finished that the data is stored. A power interrupt will create a loss of data.

fs_sync() can be used for mitigating this - for littlefs there will be no timing cost as it is strict-write FS.

If fs_sync() is used I don't mind keeping the file open to avoid opening and closing the file. There is no need to use the csi_save_start() and csi_save_end, it is just the file backend that needs to be modified to keep the file open. I don't exactly know what is causing the slow behavior.

@nvlsianpu I will correct the code and prepare it for merging when the final implementation course will be clear.

Just to clarify the full scope of this PR. I have an issue with settings_save having very poor performance when dealing with larger number of setting entries.
As of writing this i these issues which should be resolved:

Inconsistency of csi_save_start/end usage inside settings_store.c These should be according to documentation called always when value is about to be exported. The save_settings_one does not call these, which is a issue. At least by the my opinion. Or atleas the API should then say: "these are called only when" which is always a bad design if the function is not named properly.

The actual issue regarding poor performance of the settings_fs module. Is connected to excessive file flushing of the exported values. This happens in two cases. Firstly by opening and closing the file for every exported value. Secondly by seeking to the end of the file each time a value is written into the file.

I think that proper way of solving this is to utilize the csi_save_start and csi_save_end callback for opening and closing/syncing the file. For this however the issue no. 1 must be resolved due to the settings_save_one not utilizing the csi_save_start/end callbacks.
@Laczen I think that other solution would require still need modification of the settings_store.c to signal the csi that there will be additional export after this one to prevent the immediate flushing/syncing. In case of settings_save()

Just to clarify the full scope of this PR. I have an issue with settings_save having very poor performance when dealing with larger number of setting entries.
As of writing this i see these issues which should be resolved:

Inconsistency of csi_save_start/end usage inside settings_store.c These should be according to documentation called always when value is about to be exported. The save_settings_one does not call these, which is a issue. At least by the my opinion. Or atleast the API should then say: "these are called only when" which is always a bad design if the function is not named properly.

There is a difference between exporting and calling settings_save_one(). At the moment there is no backend registering the csi_save_start() and csi_save_end() routines. The naming is indeed not good,
they should be called csi_export_start() and csi_export_end().

The actual issue regarding poor performance of the settings_fs module. Is connected to excessive file flushing of the exported values. This happens in two cases. Firstly by opening and closing the file for every exported value. Secondly by seeking to the end of the file each time a value is written into the file. (@nvlsianpu Reason behind removing the fs_seek. The file is already at the end. There is no need to seek again.)

This is the real issue and we should focus on this. It is possible (as your PR proposes) to avoid opening and closing the settings (write) file, I am still wondering what is causing the speedup, it is not the opening and closing of the files (as this is done to check for duplicate values anyhow). It could be the fs_seek that can be avoided by keeping the file open (and definitively does not need to be called twice), or the flushing to flash (that will be need to be inserted anyhow for settings_save_one).

I think that proper way of solving this is to utilize the csi_save_start and csi_save_end callback for opening and closing/syncing the file. For this however the issue no. 1 must be resolved due to the settings_save_one not utilizing the csi_save_start/end callbacks.
@Laczen I think that other solution would still require modification of the settings_store.c to signal the csi that there will be additional export after this one to prevent the immediate flushing/syncing. In case of settings_save()

What about using the csi_save_start() to disable the flushing (do not call fs_sync()) and csi_save_end() to flush and reenable the flushing.

@Laczen If the naming should be changed. It that case your solution appears to be the best one.
I can implement it this way if you agree.

I have added @Laczen basic implementation which i will need to test. Currently it is untested. However you can see the implementation using state variable syncing exactly as you proposed. Could you verify that i implemented it as you intended ?

I have added @Laczen basic implementation which i will need to test. Currently it is untested. However you can see the implementation using state variable syncing exactly as you proposed. Could you verify that i implemented it as you intended ?

Yes, this is how I intended.
I am still wondering if the proposed change still gives the drastic improvement from 14s to 200ms?
You should anyhow still register the csi_save_start() and csi_save_end() routines as they would not be called otherwise.

And i have close the issue by mistake.

I'm swtiching between my branch with older zephyr to this one and missing some lines. sorry about that. Yes this gives the still the drastic improvement.

I have a problem understanding this, since every write does a sync the fs_close should be almost a nop, the opening and closing of a file (without writing) is not the problem since this was done for the read anyhow. There is some magic going on.

fs_close

The issue only occurs when settings_save is called. The is an large amount of writes into the file and every single one was flushed either by closing the file or in case of little fs fs_seek(END) the little fs in seek operation flushes the buffer.
Now when the syncing flag is off and the file is opened all the time and syncing occurs only at the end of the settings_save so the little fs can utilize its caching capability. Otherwise it would flush around ~4 time for each settings write due to the nature of settings_line write handling (for fs_seek), with the seek fixed(changed to FS_APPEND) it would flush only once per entry. However that is still inefficient when calling settings_save.

I would expect that settings_file_save_end() should call fs_sync() .

Yes, you are correct i made a mistake i had the sync inside start() instead of end. My mistake.
I fixed it now.

@optical-o, I am still feeling like the change is only getting a speedup from using cache. While this is allowed and would be a good addition from the settings_save() it should not be done for the settings_save_one(). If this is valid (this removes the magic) a different approach to the PR should be taken. Indeed the csi_save_start() and csi_save_end() should be used to disable any flushing in the settings_save_one() but there is no need to keep the file open during the settings_save_one(). The speedup should then only be for the case where settings_save() is called, which is in line with my expectations.

@optical-o, why are you closing this PR?


add generateUniqueId option and use it for tests

Make the _generateUniqueID function private, and exposed via an option to override it for testing and other purposes, instead of being public and hot-patched in the tests.
This will also allow library users to change the way unique IDs are generated.
notes:

old IDs were always prefixed by an underscore before use (it isn't clear why this was, but possibly because some ID providers don't like IDs starting with a number?). Now the underscore is included in the generation function, so if mimicking the built-in generateUniqueId function be sure to include a leading underscore in the function provided as the option value.
because of this, the length of IDs generated is now checked to be 21, instead of 20, in the test.
Changed name of now-private method to generateUniqueId to be consistent with other naming (note lowercase d in Id)

@autopulated you wrote:

old IDs were always prefixed by an underscore before use (it isn't clear why this was, but possibly because some ID providers don't like IDs starting with a number?)

FWIW, reason is probably that those values are used in places where expected type is xs:ID which ”mimic” XML DTD ID which means that value cannot start with the number. Old generator produced hex values which might start with number. If some RP uses validating XML parser (i.e. validates e.g. incoming SAML messages against SAML’s schema) prior to consuming it it would not accept message due XML document level validation error.
For additional requirements related to SAML protocol/assertion identifiers see e.g.:
https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf chapter ”1.3.4 ID and ID Reference Values”


Daother 8060

Summary of Changes:
https://rcsbpdb.atlassian.net/browse/DAOTHER-8060

[ ] Moved content type and file extension configuration settings to a separate built-in class called Definitions.py
[ ] Created separate client.yml configuration file with trimmed-down set of settings needed for client-end usage
[ ] Moved ClientUtils.py to separate directory branch, rcsb/app/client (and rcsb/app/test-client)
[ ] ....
[ ] ....

Screenshot of Changes (or test)
(where applicable)
Checklist:

[ ] I followed the code style guidelines
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have tested the code / Added unit test(s)

Hi James, thanks for all the commits. Reviewing the code, I had a couple questions:

For the ClientUtils and testClientUtils, why did you find it necessary to set the configFilePath to the config.yml instead of the more trimmed-down client.yml config file? I'm not sure I understand why the other parameters are necessary from the client-end perspective. If it was in order to get the "REPOSITORY_DIR_PATH" in testClientUtils, I think that should just be set explicitly as opposed to extracted from the configuration file.
The client.py file—is that just for the front-end testing? If so, that's OK, but maybe put those files in a separate sub-directory, perhaps rcsb/app/client/fe (for 'front-end')
Are all the packages imported by requirements.txt actually used? If not, are you able to remove (or comment out) any packages that aren't needed anymore?

Also, there are a few other more stylistic things that we try to keep consistent with all of our packages. If possible, can you please try to standardize them?:

Use logger.info or logger.error statements instead of print statements (e.g., in testClientUtils)
All methods should be named with camelCasing (i.e., in testClientUtils, test_simple_upload should be testSimpleUpload)
All quotes should be double-quotes (unless it's a quote inside a quote, which would necessitate the single quote)

Dennis, I don't have the 'client.yml' file on branch DAOTHER-8060, or any branch. Those files threw an error. That's the reason that I changed it to 'config.yml'. Regarding the client.py file, yes, it's front end, but ... I wouldn't say that the ClientUtils file is back end, so what's wrong with having all of them in the same folder? In fact, I have gui.py and client.py using the ClientUtils file. Regarding the other suggestions, I will do a pip freeze and try to fix the stylistic details.

@j-s-135 Whoops, I guess I forgot to add that file. Sorry about that. I've just added it now, so please pull the latest and check it out. I think we should point the ClientUtils and testClientUtils to using that file instead (rcsb/app/config/client.yml).
For the directory organization, it doesn't really matter in terms of functionality, but for all of our other py-rcsb_* repos, we try to keep the directory trees as clean as possible to contain only the files necessary for the package. So, I think it's better to keep them separate from the core-package functionalities.

Client.py does not work with the repository at this time. We would have to rewrite the tests, and it's not clear whether it's possible. The issue is - where to put the test data? The unit tests post data to the endpoints themselves, and those are just configured to write data to the repository archive or deposit folders, so it's hard to reconfigure them to write data to the test folders. It's able to read from the test folders, so we create sample data files there dynamically. However, for download tests, we also need to dynamically create the deposit or archive files that it will read, so we need the full config.yml file that includes the paths. Also, for tear down, we would like to remove the files that have been created. So, the tests need most of the information in config.yml. The next problem is - how to prevent the tests from removing production files during tear down? I have made a new repository type for tests - rather than 'archive' or 'deposit' folders, it writes to a 'unit-test' folder, and also allows the names 'test', 'tests', 'unit-tests'. They're in the new Definitions file. If those are used, tests are safe even if used on the production server. We just need to provide very clear instructions to test writers.

Hmm, I see your points. I think adding those other methods to Definitions.py is a good idea; however, I don't think we should add 'test' etc. to those definitions. I think the tests themselves can just use the 'archive' or 'deposit' folders, and declare that explicitly in the testClientUtils.py file, just as was being done as if it was reading config.yml.
The end goal we want to achieve here is a testClientUtils.py file that contains test which simulate the same usage that a user of the repo would do in a real environment—i.e., having to explicitly state what repositoryType, depId, milestone etc. that they want to use for uploading their file. If you'd like me to try taking a stab at this, let me know.

I agree - "tests which simulate the same usage that a user of the repo would do in a real environment—i.e., having to explicitly state what repositoryType", but that's exactly what's happening. The repositoryType parameter has a value of 'unit-test', which is in the Definitions file so it passes validation, so a folder named 'unit-test' is formed and the files are saved there. For tear down, the entire unit-test folder is simply removed. We wouldn't want to remove the archive folder on tear down, so a test folder seems like a good alternative.

Thanks @j-s-135. I see the complication and your reasoning. Since you've gotten everything passing now, I'll go ahead and merge this.
Eventually I think we'll want to use real respositoryType parameters for the unit tests and remove the "test" values from the Definitions.py file, but that's a lower priority for now.


[added] install.py

run 'install.py' to copy the 'api2.py' file automatically to the scripts folder.
will add support for UserObjects in the same file soon.

closing this, since it is not relevant / applicable anymore.


alphaMask with atlas image doesn't work in Chrome (but works Firefox/Edge)

code comment is the easiest way to explain it
http://phaser.io/sandbox/tQdvKSjE/play
but in brief..

load atlas sprite texture into bitmapdata
create a fill
mask fill with bitmapdata

doesn't work in Chrome on Windows. (if it's not an atlas frame it does work)
thanks
j

this can be resolved in Chrome for that example by setting height of the masked bitmap data to h*2,
maskedBMD = game.make.bitmapData(w,h*2); // fix for chrome: h*2, not h
var srcRect = {x:0, y:h/2, width:w , height:h};
maskedBMD.alphaMask(fillBMD,maskBMD, srcRect);

if anyone can explain why though, that'd be great thanks!

This must have been Chrome version specific, because it works fine now (thanks Google).

confirmed... working for me in latest Chrome. thanks


Roadmap & Depreciated functions

This is just an issue to track the roadmap and depreciated functions that are going to be removed in 5.1 when 5.0 is released. This will be consistently updated and then merged with the final documentation.
Depreciated functions so far:

$adldap->adldap_schema()

Roadmap:
Above 5.1 (most likely in another major release), I'm most likely going to be looking at changing the class names and namespaces of the whole repository.

Actually, since class names and namespace are case insensitive, I should be able to make the package PSR compatible without breaking changes. Does anyone have any input on if this change would cause issue? Unfortunately I'm away from my computer so I'm unable to test, for example:
Changing namespace adLDAP to namespace Adldap

Could it possibly be an issue for people not using the Composer autoloader? I'm not sure.

I think that's the only issue here, since the require() function is using the native file-system case sensitivity. Though support for requiring only one file has been dropped in 5.0, so if users are not using an auto-loader, they'll have to require the files manually anyway.
I'm going to experiment here and see if there are any issues with making namespaces and class names PSR compatible.

Ok, after lots of testing, we've reached PSR-4 compatibility, and it's good to go. I've only re-cased the namespaces and class names from adLDAP to Adldap. I've also renamed the organization and the package to follow the re-casing of the name to keep absolute consistency.

Great Job!

Yes, this is terrific :)

Thanks! I'm almost finished with modifications to the package, once that's done, I'll be finishing up with testing, then comes documentation and release.

@stevebauman Namespaces and classnames may be case-insensitive as far as PHP is concerned, but it will also depend on your auto-loader and what OS you're running. Windows is case-insensitive by default, so it wouldn't matter there. But on Linux, changing the case would cause the auto-loader to fail to lookup the files correctly. Though it's probably a necessary evil in order to fix the mess.

Yea your right, unfortunately I only develop on Windows so I'm unable to test on linux (besides using Travis-CI of course).
And yea your right, Adldap v4 is literally a complete mess, there's no getting around it, and developers planning to move from v4 to v5 will definitely have to re-write some things, but the majority of the API will stay in-tact. Though we are doing a complete version jump here, so developers who are versed in semver will already know this version will have incompatibilities.
If anyone has any comments or feedback of API changes and additions, this is a great time to be vocal since once v5.0 is released, it's API will be in place for quite some time.

All infoCollection() functions on classes (as well as all Collection classes) are now depreciated (not removed). The majority of frameworks contain extendable Collection classes. Developers can wrap the returned arrays into their own object collections. I feel like this is the necessary way to go to keep framework agnosticism, however I'd definitely appreciate some feedback if anyone has any other suggestions, thanks! :)

I'm still struggling a bit with the consistency of the public API and general interfaces. For example:
We have Users and User.
When I do a Users::find() I would expect to get an array of User objects (aka. User[]). Instead I get one single User object. So, maybe we should introduce findOne(), findMany() or similar. find() shouldn't return a single object. Changing find() would break existing APIs, though.
Moreover, the find() method uses ANR, which is good, but can deliver multiple results. find() just blindly returns the first result. If I search for 'thomas' and there are more person objects in the AD, I'll get just any one of them (perhaps alphabetically).
That's quite unpredictable. If I expect a single result and my search gets more than one, an Exception should be thrown.
Additionally, lots of the method's DocBlocks just hint array as return value, which sometimes is just wrong, and sometimes should be replaced with the name of the object with square brackets ([]) appended.
It's also unnecessary to return raw attribute values, when we have an appropriate object and could return that instead. for example: if I have a User object and want to get the groups the User is a member of, I would like to get an array of Group (Group[]) and not an array of raw DN strings (ugh).
That would mean we have to inject the current Adldap instance to perform (lazy) queries for the DNs of the groups. Some refactoring is required for that and it also changes the API: Instead of the Connection, the Adldap instance has to be passed to Entry.
Those are just suggestions and of course open for discussion. I'd be happy to do some of the refactoring, but first we should decide which way to go and if we want to change the public API again.
Those changes would lead to the direction that people using this library don't have to know too much about LDAP and it's structures. I think, that's the way this library should go.
I'll use this library for some projects and would have to write a wrapper for above issues to get a fluent coding experience, so why don't incorporate the changes directly to this library?
So, what to do? Just fix stuff that doesn't change the API, like DocBlocks, Exceptions, additional methos and postpone BCs to v6.0.0 or incorporate some of the changes right away?
Thanks!

Hi @trinet-at, I'll respond to each of your concerns.
find() returning one result instead of an array
I personally believe this is the right way to go. Calling a find method should always return one result. Developers are free to use get() when they need more than one. Though I understand filtering users by specific attributes isn't possible with the classes right now, but I'm working on it. Introducing a findMany() would cause confusion, as it would essentially be returning a get().
find() uses ANR
I also believe this is the right way to go. Users can enter in any unique field that a user has (such as sAMaccountname). If developers are blindly asking for a user named thomas, then yes, they will receive the first result, but it's up to them to make sure they're querying a unique value. They're also free to use $ad->search()->findByDn($dn) which find a single record with the exact specified DN. But yes, this needs to be worked into the Users class as well.
Docblocks are wrong
Yes, sometimes they might be. You have to consider that I'm working on this single-handedly on my own free time and partly work time, not to mention it's still in beta. Notice an issue in a doc block? Send a PR.
Raw attribute values being returned
In your specific use case of group DN's being returned on a User object, performing a lazy load of groups could be very resource intensive. If an AD instance has a ton of nested groups, then we have to query recursive groups of groups, and instead of one query, we now have exponential depending on the number of groups a user is a member of. Not to mention, if a developer requests all users, do we request all groups on every single User instance? On a large enterprise, this could lead to hundreds of queries on one request.
I don't disagree that this should be done, but something needs to be in place to prevent mass queries taking place, maybe a with('groups') system like Laravel has to load relations.
Users not familiar with LDAP should use Adldap
I completely agree with this, and I'm really striving for a nice, easy to use API that anyone can start querying their server. I'm trying my best to make sure this is the case.
Break or not to break?
I think we still have a lot of room to make API changes, but definitely not large ones. Breaking changes should be done now in my opinion.
I appreciate you taking the time to write down your comments and concerns. I really enjoy working with a group of people to figure out which is the best way and to get something done. Any input anyone can provide is great.
If you have any PR's to send, definitely start firing them off!

Steve

Hi!
Thanks for your comments!
First of all, I don't know if it came out wrong, but I really don't want to blame you for any flaws in the code. I know that you just adopted the library and really appreciate the work you put into it the last days. Lots of the code is "legacy" stuff and refactoring sometimes leads to wrong DocBlocks and as I said, I'm really happy to fix that things.
I just wanted to get a feeling of which way you want to go, so I won't submit a bunch of PRs which don't comply to your roadmap and would have to reject.
Regarding find(): You're totally right. find() should return one single result (Doctrine does that, too), and there are lots of options if one wants to search for multiple results (I'm still not that familiar with the code...)
Is it okay for you if, in such cases, I add a comment to the DocBlock of the method for clarification? I.e. add to the find() method, that it returns one single object, even if there's more than one result.
What do you think about convenience methods? For example in the HasMemberOfTrait:
/**
 *  Returns an array of "pretty" group names, instead of DNs
 *
 * @return array
 */
function getGroupNames() {
    $memberOf = $this->getMemberOf();

    if (!$memberOf || empty($memberOf)) {
        return [];
    }

    unset ($memberOf['count']);
    $groupNames = [];

    foreach ($memberOf as $group) {
        $exploded = Utilities::explodeDn($group);
        $groupNames[] = Utilities::unescape($exploded[0]);
    }

    sort($groupNames, SORT_NATURAL);

    return $groupNames;
}

Thanks for your time!

@trinet-at That's no problem, I didn't take your comments as any offense at all!
I completely understand about submitting PR's, and I agree with your suggested HasMemberOfTrait, you can send a PR and I'll put it through. I'm all for convenience methods. Anything that helps the developer get the information they need is fine with me.


Support for grouped notifications

Haven't looked into this much, but it looks like I just need to check if there are more than one notification with the same group and only display one of them. Not sure how to identify groups.

Duplicate of #31


feat(server): archivedWf name search using LIKE operator. Fixes #6743

Fixes #6743

Tips:

Maybe add you organization to USERS.md.
Your PR needs to pass the required checks before it can be approved. If the check is not required (e.g. E2E tests) it does not need to pass
Sign-off your commits to pass the DCO check: git commit --signoff.
Run make pre-commit -B to fix codegen or lint problems.
Say how how you tested your changes. If you changed the UI, attach screenshots.
If changes were requested, and you've made them, then dismis the review to get it looked at again.
You can ask for help!

we don't have index on name
current indexes
    "argo_archived_workflows_pkey" PRIMARY KEY, btree (clustername, uid)
    "argo_archived_workflows_i1" btree (clustername, instanceid, namespace)
    "argo_archived_workflows_i2" btree (clustername, instanceid, finishedat)

would you recommend to
add (clustername, instanceid, name) index,
default the search bar behaviour to find through prefix matching,
and remove the exact match

would you recommend to add (clustername, instanceid, name) index,

yes. what about the labels table?

Hi @alexec , any further comments?


Bug in Chrome 55: content jumps back a bit after scrolling with touch gesture

I have a Samsung Galaxy S7 Edge and recently noticed a bug there: when i scroll a menu down and after the scroll is done, content scrolls back a bit.
I've looked around the code, did some debugging and found that this is caused by easing functionality. Basically, it should continue scrolling, but in my case it did so in the opposite direction. After some further investigation it turned out to be caused by new Pointer Events addition to Chrome 55:
https://www.chromestatus.com/feature/4504699138998272
http://caniuse.com/#feat=pointer
Now touchMove event gets triggered twice and pageX, pageY values are different in each event case. I'm not sure why, but in the Pointer event they are rounded. Here is the result of scrolling straight down:

DifferenceY should always be negative, but because of rounding and other logic it becomes positive after Pointer event. And because it's triggered last, the easing function thinks we are scrolling up and eases up, when in fact it should ease further down.

PR merged


"SyntaxError: Unexpected token '.' " in old Chrome versions.

Attach (recommended) or Link to PDF file here:
Configuration:

Web browser and its version: Chrome 74.0.3729.136 mobile.
Operating system and its version: Android 9
PDF.js version: 2.10.377
Is a browser extension: No

Steps to reproduce the problem:

Run the pdfjs in chrome 74 (mobile android).
Observe that it can't work due to a "sintax" error.

What is the expected behavior? (add screenshot)
Work without these kind of errors.
What went wrong? (add screenshot)
Line 2437 of builded pdf.js file (or Line 1359 in /display/api.js file):
sintax error because of ?. piece of code in old chrome versions.
async getXfa() {
    return this._transport._htmlForXfa?.children[this._pageIndex] || null;
  }

Note: this error stopped execution at the mentioned point, meaning that I dont know if there is any other error like this one.

Link to a viewer (if hosted on a site other than mozilla.github.io/pdf.js or as Firefox/Chrome extension):
The bug can be reproduced in mozilla.github.io/pdf.js website.

When using the PDF.js library in older environments/browsers without e.g. optional chaining support, you'll need to use a legacy-build instead; please note the two types of builds listed e.g. at https://mozilla.github.io/pdf.js/getting_started/#download


List of URLs, add time delay argument between requests.

Is it possible to add an argument to time delay requests when using a list of URLs to archive? i.e. after a successful request, wait 3-12 seconds before starting the next archive upload?
I have a problem where even when I use an argument to limit to a single thread for tasks, the script is still sending the archive requests too fast, and after 4 successful uploads, the remaining requests errors out and times out.

Ran into similar issue, added extra sleep 60 just at start of capture() function
https://github.com/overcast07/wayback-machine-spn-scripts/blob/4cc1641e4d31bab7ca90e92b53d4b595bbc9b21b/spn.sh#L258-L259
Then used script with ./spn.sh -n -p 1 urls.txt

Should running the script with the p 1 -w 60 entirely prevent from being rate-limited? I waited for around 12 hours, started my capture task again.
[Request failed] https://example.com/
You have already reached the limit of active Save Page Now sessions. Please wait for a minute and then try again.


Failing tests:

I pulled the repo (MacOS), installed the requirements using poetry, and ran poetry run pytest. That produces these errors, which are unfamiliar to me:
poetry run pytest                                                                                [7/02/23 | 5:02:53]
========================================================================================= test session starts ==========================================================================================
platform darwin -- Python 3.10.9, pytest-6.2.5, py-1.11.0, pluggy-1.0.0
rootdir: /Users/sboisen/git/sillsdev/machine.py, configfile: pyproject.toml, testpaths: tests
plugins: mockito-0.0.4, typeguard-2.13.3
collected 233 items / 2 errors / 231 selected

================================================================================================ ERRORS ================================================================================================
_____________________________________________________________________ ERROR collecting tests/corpora/test_parallel_text_corpus.py ______________________________________________________________________
tests/corpora/test_parallel_text_corpus.py:4: in <module>
    import pandas as pd
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/__init__.py:30: in <module>
    from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/_libs/__init__.py:13: in <module>
    from pandas._libs.interval import Interval
pandas/_libs/interval.pyx:1: in init pandas._libs.interval
    ???
E   ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
__________________________________________________________________ ERROR collecting tests/webapi/test_clearml_nmt_engine_build_job.py __________________________________________________________________
tests/webapi/test_clearml_nmt_engine_build_job.py:22: in <module>
    from machine.webapi.clearml_nmt_engine_build_job import ClearMLNmtEngineBuildJob
machine/webapi/clearml_nmt_engine_build_job.py:6: in <module>
    from clearml import Task
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/__init__.py:5: in <module>
    from .task import Task
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/task.py:45: in <module>
    from .backend_interface.metrics import Metrics
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/backend_interface/__init__.py:2: in <module>
    from .task import Task
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/backend_interface/task/__init__.py:1: in <module>
    from .task import Task
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/backend_interface/task/task.py:32: in <module>
    from ...binding.artifacts import Artifacts
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/binding/artifacts.py:23: in <module>
    from ..backend_interface.metrics.events import UploadEvent
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/backend_interface/metrics/__init__.py:3: in <module>
    from .reporter import Reporter
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/backend_interface/metrics/reporter.py:19: in <module>
    from ...utilities.plotly_reporter import (
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/clearml/utilities/plotly_reporter.py:8: in <module>
    import pandas as pd
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/__init__.py:30: in <module>
    from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/_libs/__init__.py:13: in <module>
    from pandas._libs.interval import Interval
pandas/_libs/interval.pyx:1: in init pandas._libs.interval
    ???
E   ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
=========================================================================================== warnings summary ===========================================================================================
../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:10
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:10: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _nlv = LooseVersion(_np_version)

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:11
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:11: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _np_version_under1p16 = _nlv < LooseVersion("1.16")

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:12
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:12: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _np_version_under1p17 = _nlv < LooseVersion("1.17")

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:13
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:13: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _np_version_under1p18 = _nlv < LooseVersion("1.18")

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:14
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:14: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _np_version_under1p19 = _nlv < LooseVersion("1.19")

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:15
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/compat/numpy/__init__.py:15: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    _np_version_under1p20 = _nlv < LooseVersion("1.20")

../../../Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/setuptools/_distutils/version.py:345
  /Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/setuptools/_distutils/version.py:345: DeprecationWarning: distutils Version classes are deprecated. Use packaging.version instead.
    other = LooseVersion(other)

-- Docs: https://docs.pytest.org/en/stable/warnings.html
======================================================================================= short test summary info ========================================================================================
ERROR tests/corpora/test_parallel_text_corpus.py - ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
ERROR tests/webapi/test_clearml_nmt_engine_build_job.py - ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
==================================================================================== 7 warnings, 2 errors in 2.84s =====================================================================================
.-(~/git/sillsdev/machine.py)-------------------------------------------------------------------------------------------------------------------------------------------------------(sboisen@Seans-MBP)-

Since it appears to be a pandas/numpy issue, i tried just starting Python and importing pandas, and got a similar error:
`--> poetry run python                                                                                [7/02/23 | 5:03:05]
Python 3.10.9 (main, Dec 15 2022, 18:18:30) [Clang 14.0.0 (clang-14<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/__init__.py", line 30, in <module>
    from pandas._libs import hashtable as _hashtable, lib as _lib, tslib as _tslib
  File "/Users/sboisen/Library/Caches/pypoetry/virtualenvs/sil-machine-oQa04tko-py3.10/lib/python3.10/site-packages/pandas/_libs/__init__.py", line 13, in <module>
    from pandas._libs.interval import Interval
  File "pandas/_libs/interval.pyx", line 1, in init pandas._libs.interval
ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject
>>>

Any insight into what might be going on here, or how i might address it?

I updated pandas in the main branch. Can you try it out and see if that fixes the problem? Thanks.

As of today, the pandas problem is fixed 👏🏻
There's another testing error, but i'll open a new issue for that (after i look into it a bit)


Update JSON schema to match Data Model v2

https://github.com/scitran/core/wiki/Data-Model,-v2
Changes:

[x] Rename all metadata fields to info

[x] Rename info variable in placer.py and upload.py to file_attrs to avoid confusion between field and variable. metadata now only refers to data sent by client as part of upload process, info refers to the file object field representing a key-value store, file_attrs refers to the python variable that passes file object attributes persisted to the DB

[x] Remove acquisition instrument and measurement fields
[x]  file.instrument becomes file.modality
[x] Ensure all italicized fields are returned in all GET requests (list and singular)
[x] Return entire permissions list for admin GET requests that return lists

@nagem
Does this encompass the DB schema update work? If not, is there a separate existing ticket to track that? Thanks.

@ryansanford IMO it does, but we could split it out into a generic schema upgrade framework ticket if that would be better for visibility.

@nagem can you notify me/Dan when this is complete so we can switch how information icons are viewed on UI?

There is a PR open and finished that needs to be rebased but this change is breaking so work can begin on https://github.com/flywheel-io/frontend/issues/230 targeting this branch.


preview feature of an applications requires authentication.

since 62765cc a user cannot preview it's application anymore.

I referenced the wrong issue in the commit message.
https://github.com/cross-solution/YAWIK/commit/465be711242ffb80282d2e07b7809d5826daa06b fixes this issue.
@TiSiE : please review

Well done! ;)


Missing PSWSman module in the custom runtime

I tied using the sample code and modified it to run some commands in the remote computer using invoke-web request. Test Inoke throws the following error
{
"errorType": "PSRemotingTransportException",
"errorMessage": "This parameter set requires WSMan, and no supported WSMan client library was found. WSMan is either not installed or unavailable for this system."
}
I tried a workaround following this post https://blueleader07.medium.com/lambda-powershell-layer-15c0ec6f6d4a to replace the PSWSMan library libmi.so. I still get the same error. Does the custom runtime have all commands available like the regular Powershell version?
@julianwood @austoonz
Thanks for looking into the issue.

To confirm, you say you were trying to use Invoke-WebRequest, did you mean Invoke-Command?
Are you able to post a sample of your code so we can see and aim to reproduce what you were trying to do?

Sorry, I was using invoke-command.
PS> Invoke-Command -ScriptBlock { hostname } -ComputerName WEBSRV1 WEBSRV1
Copy
I am using something like this.
On Wed, Jul 26, 2023 at 4:56 PM Andrew Pearce @.***>
wrote:

To confirm, you say you were trying to use Invoke-WebRequest, did you
mean Invoke-Command?
Are you able to post a sample of your code so we can see and aim to
reproduce what you were trying to do?
—
Reply to this email directly, view it on GitHub
https://github.com/awslabs/aws-lambda-powershell-runtime/issues/22#issuecomment-1652650818,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AMSZVRWZGGAELKESQSBG53DXSGOA7ANCNFSM6AAAAAA2ZEXAZI
.
You are receiving this because you authored the thread.Message ID:
@.***>

I haven't had time to deep dive into this recently, however the previous guidance I've given is to focus on using Systems Manager Run Command (ie ssm:SendCommand) rather than trying to use Invoke-Command.
In previous testing (a few years back), no matter what I tried I was unable to make this work as I'd expect it to, or want it do.

@austoonz is correct to use Systems Manager Run Command (ie ssm:SendCommand) rather than trying to use Invoke-Command.
However, if you want to test and try get Invoke-Command working, use an Amazon Linux 2 instance, or WSL. This doesn't seem a Lambda specific problem, but rather how Invoke-Command works on Linux.

SSM is not sufficient for everything because it does not provide a way to have fine-grained control in the OS in a way that allows for delegation of permission. You can set the SSM agent to run as a specific user in the OS, but it does not offer the level of control that you could get with JEA, which is my use case.
FWIW I have gotten PowerShell remoting and JEA working from Lambda to Windows, using this runtime as a base.
It requires more than just PSWSMan (though it requires that too), so it was a bit of work to get going, and it does balloon the image size by quite a bit.
Since it requires system components, I am using it as a container-based Lambda only; I'm not sure if it's feasible to do it with layers and ZIP-based.

@briantist very cool!
Would be happy to include an example, or some flags to help deploy a function that supports PS remoting if you're able to share the details.

@austoonz sure, I've put up a PR with more information :)

https://github.com/awslabs/aws-lambda-powershell-runtime/pull/32


handle multiple requests concurrently within a batch request

Hi CAP team,
I am using CAP Java to develop my application. As we know that $batch request can contain multiple requests in the payload, and the service handler will handle the request one by one. Is there anyway to enable the parallel processing for the $batch request. Then I can handler the request in the service handler concurrently.

Hi @Terry-Huang-00 ,
we're using this repository only for documentation-related issues. Please use one of the channels mention in our "Public Resources" to ask your question. Remember: If asked on the community, other users can benefit as well :)
Thanks,
René

Yes, I already raised this question there? Do you know does anyone can add more hints there :)
https://community.sap.com/t5/technology-q-a/handle-multiple-requests-concurrently-within-a-batch-request/qaq-p/12763343

Looking forward the answers, we are really need it! Thanks.


Upgrade to Cosmos SDK v0.40.0

Upgrade to final release of Stargate

Closed by #23

Closed by #23

Closed by #23

Closed by #23


Duplicate class in ListItem sample code

See the middle of the screenshot below: is-selected is-selected

I'm only seeing is-selected is-selectable which brings up the checkbox for a selectable item. I'm seeing the same in my local builds as well.

Closing, but please reopen if I've missed something.


samples: drivers: adc: Allow coverage calculation.

Sample must end to dump coverage data.

Can you help me understand what this change has to do with coverage

Sure ;)
Coverage data are dumped on console after main ends.
Sample must end to produce them so infinite loop is changed into finite one in coverage mode.

kind of ugly how this is being done but alright I am not going to fight about it right now


GHC 9+ hackage release

Current hackage release fails to build on GHC 9+ with error
src/Codec/Winery/Class.hs:260:30: error:
    View pattern in expression context: Term -> a
    |
260 |           (typeRep (Proxy @ (Term -> a)))
    |                              ^^^^^^^^^

which is fixed in master. Can you please update hackage version?

Thanks!


fix-macros-and-examples

Motivation for this request was errors like this:
...
          rust-lld: error: duplicate symbol: __wbindgen_describe___widl_f_resu
lt_DOMException
          >>> defined in C:\Users\Martin\Desktop\hellweb\martinkavik_seed\targ
et\wasm32-unknown-unknown\debug\deps\libweb_sys-ad04f3cde63937fc.rlib(web_sys-
ad04f3cde63937fc.web_sys.6uvz5zel-cgu.0.rcgu.o)
          >>> defined in C:\Users\Martin\Desktop\hellweb\martinkavik_seed\targ
et\wasm32-unknown-unknown\debug\deps\libweb_sys-2dea049ac97f1222.rlib(web_sys-
2dea049ac97f1222.web_sys.3c9d52pg-cgu.0.rcgu.o)

          rust-lld: error: too many errors emitted, stopping now (use -error-l
imit=0 to see all errors)

error: aborting due to previous error

error: Could not compile `counter`.

This error is probably caused by fighting between linker / wasm-pack / caching (don't know exactly). But the main reason for this specific error is "dependency leak" from log! macro - macro was using web_sys inside its definition, so it was necessary to add it in examples and then it causes dependency version conflicts between Seed web_sys and given example web_sys.
There were more errors like this and I saw them only when I changed something in code-base, saved it and then run cargo make verify. So I went through the whole code-base and was fixing leaks and removing unnecessary dependencies from examples step by step.
And I've also fixed / resolved some todos from shortcuts.rs.
This PR has been rebased on your gloo_timers changes and I fixed clippy settings + forward gloo_timers in orders example to local ones. So CI should pass now.

Great stuff!


chore(appium): automated tests on windows to include videos in report

What this PR does 📖

Set up ffmpeg on windows tests jobs from automated tests workflow, in order to save videos when running windows tests
Videos for failed tests will be attached to the Allure Report (only working for windows at the moment)
PR from testing-uplink repo: https://github.com/Satellite-im/testing-uplink/pull/440

Which issue(s) this PR fixes 🔨

Resolve #

Special notes for reviewers 🗒
Additional comments 🎤

very cool ✨


Web component: Card Link - card width and top alignment is not as per specs.

Detailed description
Issue :- On web component Card Link -

Card width is 420px but on 'react' its 320px
Card is aligned 48px from top, but on 'react' no spacing from top.

Additional information

The spacing you see on top is not from card-link, but from web-components storybook.


[User Story] Container Connectivity Resilience

[User Story]
Container Connectivity Resilience

Epic Title
#213

User Story Title
Container Connectivity Resilience

T-shirt size: S(mall), M(edium), L(arge)
L

Story Points - Fibonacci (1,2,3,5,8,13)
8

Description
Application components should monitor their connectivity to each other and reconnect if disconnected

Business Need (the why):
Chaos

Acceptance Criteria/Tests
in a running stable system, cause the connection between components to drop (kill processes?  disconnect?) and observe that system recovers to stable state.  the drop should be logged for future diagnosis.

Reverse Engineering Required
Sawtooth Core source

Questions/Clarifications

migrated to new tmobile/sawtooth-next-directory repo


AIX 7.1 + chef-client 12.5.1 Showing 404s in chef-client STDOUT/STDERR

AIX 7.1 with chefDK 0.10 is showing output like the following during bootstrapping, while the same version linux client does not. The 404s are the usual flags for "There is no node on the chef server for this node/client name" and "Could not communicate with a Reporting service" . The chef-client runs appear to be succeeding.
knife bootstrap p135n52.example.com.com -x root -P passwd
-N p135n52.example.com.com '-r recipe[aix-base-setup],recipe[ebs]' -y -V
I get 404 Object Not Found error on startup. I would like to find out what i am doing wrong to get this error.

See -V output below. Also included -VV output with attachment bug1.out.
OS AIX 7.1, chefdk 10.0. chef client 12.5.1

INFO: Using configuration from /chef-repo/.chef/knife.rb
INFO: HTTP Request Returned 404 Object Not Found: error
INFO: HTTP Request Returned 404 Object Not Found: error
Creating new client for p135n52.example.com.com
Creating new node for p135n52.example.com.com
INFO: HTTP Request Returned 404 Object Not Found: error
Connecting to p135n52.example.com.com
p135n52.example.com.com -----> Existing Chef installation detected
p135n52.example.com.com Starting the first Chef Client run...
p135n52.example.com.com Starting Chef Client, version 12.5.1

It looks like you're using the validatorless bootstrapping and you're passing -V to it so you're getting the INFO messages output  by the HTTP code when it hits the 404 on the client and node which triggers the creation of the client+node.  AIX has nothing to do with this, and on the Linux box you're either using a validation client or not passing -V.  The output is maybe a little unclean, but you did pass -V and the 404s won't appear without that -- and fixing that would be so messy and involve hacking around in the guts of Chef::HTTP and this is so cosmetic that the priority of this is below low, so just closing.


Issues 1

[x] 1. g_00060_06_compound.json: I get a non-orthogonal edge sometimes such as

[ ] 2. g_00040_09_compound.json: Why wouldn't the compaction get rid of the marked space to make it more compact in a left-

to-right compaction step?
[ ] 3. g_00070_07_compound.json: some nodes overlap with compounds that they aren't in:

The non-orthogonal edge occurs because it is a multi-edge. For this approach, there must not exist multiple edges between the same pair of nodes. The extra edge should be removed to solve this issue.

Can you provide a way to replicate this drawing? For example, this issue occurs at which run of the graph?

The layout returned from TSM does not ensure that the boundary of the compound will be in a rectangular shape. Those nodes are not initially inside the compound boundary, but when the compound nodes dimensions are translated into rectangular Cytoscape dimensions, they cause an overlap with non-children nodes.

Can you provide a way to replicate this drawing? For example, this issue occurs at which run of the graph?

As the layout changes each time, I cannot tell you how to reproduce really

The layout returned from TSM does not ensure that the boundary of the compound will be in a rectangular shape. Those nodes are not initially inside the compound boundary, but when the compound nodes dimensions are translated into rectangular Cytoscape dimensions, they cause an overlap with non-children nodes.

So this is a limitation of the algorithm. Should be mentioned somewhere (Limitations and Future Work section).

Can you provide a way to replicate this drawing? For example, this issue occurs at which run of the graph?

As the layout changes each time, I cannot tell you how to reproduce really

The extra space might be getting created because of the last step of compound boundary cropping. After the compaction has been performed, the extra space inside a compound node is removed from all four sides(top, bottom, left, right). This creates extra space inside the graph. Compound cropping can not be done before compaction, because it causes overlap of compound boundary nodes. This can be dealt with by another post-processing step of converting the graph into a simple graph again and applying compaction to it.

Can you provide a way to replicate this drawing? For example, this issue occurs at which run of the graph?

As the layout changes each time, I cannot tell you how to reproduce really

The extra space might be getting created because of the last step of compound boundary cropping. After the compaction has been performed, the extra space inside a compound node is removed from all four sides(top, bottom, left, right). This creates extra space inside the graph. Compound cropping can not be done before compaction, because it causes overlap of compound boundary nodes. This can be dealt with by another post-processing step of converting the graph into a simple graph again and applying compaction to it.

Again mention this as a limitation/future work


Add k8-crd external-service healthcheck

What does this PR do?

This PR Enables users of the kubernetesCRD provider to create healthchecks for externalNamedServices within HttpIngressRoutes Kubernetes Custom Resources and leverage them within mirrored, weighted, and serverloadbalanced scenarios.
Importantly to the reviewer, these changes are not backward-compatible as they are adding a new healthcheck field to several CRDs. This might be the most important design consideration for this PR.
Motivation

See Enhancement Proposal: https://github.com/traefik/traefik/issues/8541
More
Still need TODO: I don't suspect this will be a long-running task.

[ ] Added/updated tests
[ ] Added/updated documentation

Additional Notes

This is still in DRAFT status, placed in case any maintainers have initial suggestions or feedback. I will do the work to bring it up to merge-able status.
That said, I have tested this PR manually on my local machine, and things seem to work. I will certainly write new unit-tests/enhanced docs in the not-too-distant future.

Hey @StephanSalas, if you are still working on this, we would love to see where you are.  We are hoping to include it in Traefik Proxy 3.0.
Also, because the timing seems great, I wanted to let you know that we have a Hackathon coming up with some great prizes, in case you want to participate.
To learn more about the Traefik Proxy 3.0 Hackaethon, check out our blog post that covers the goals, rules, scoring criteria, and dates in detail.
To join us, sign-up here!

Hi @tfny I'm still interested in doing this on my own time, however I need to think about this general design. I think it would be great to contribute toward this effort. Thanks for the reminder~!

Thanks again @StephanSalas for this contribution, and sorry for the delay!
As https://github.com/traefik/traefik/pull/10467 is merged, I am closing this pull request.
Superseded by https://github.com/traefik/traefik/pull/10467


Cannot build Python C extensions on Windows

Describe the bug
The following standard build command for C extensions in Python fails for all Windows environments for all supported Python versions:
python setup.py build_ext --inplace

It appears that the appropriate versions of Microsoft Visual C++ are not installed/configured.
Please note that the correct MSVC++ version varies across Python versions; see here for specifics.
Virtual environments affected

[ ] macOS 10.14
[ ] Ubuntu 16.04 LTS
[ ] Ubuntu 18.04 LTS
[x] Windows Server 2016 R2
[x] Windows Server 2019

Expected behavior
It should be possible to build Python C extensions in Windows virtual environments. For a Python build/test pipeline, this means selecting the correct version to use for a given Python version.
Actual behavior
This should be reproducible for any Python library with any C (or Cython) components on Windows. I encountered the issue while attempting to configure Github Actions for such a library that I maintain. An example of a failed build log is https://github.com/pydata/bottleneck/runs/240915673

Use the workflow file found here: https://github.com/pydata/bottleneck/commit/630a39884f66a52a24c470ec83b986606aca844f#diff-fd3c00174dcaf7b8a36765f1a3de6791
Build will fail at C compilation step  as the appropriate version of MS Visual C++ is not installed.

When fixed, it should be possible to build Python C extensions on Windows.

This is specific for Python 3.5, since it lacks the code needed to find recent versions of VS properly.
https://bugs.python.org/issue30389.  I was able to make it work by monkey-patching distutils._msvccompiler with code from 3.7.

@elprans The example I gave has it failing on 2.7 as well

@qwhelan Yea, 2.7 is a different story. It requires a very specific version of the MSVC compiler.

Ho @qwhelan Is that bug still actual for you?

@miketimofeev I switched back to another provider for Windows-based testing due to this bug, so can't say. There doesn't seem to be anyone suggesting this is fixed.

@qwhelan Closing this for now in that case. Feel free to reopen if you have any concerns.
Thank you!


Update documentation for the dependencies and merge two definitions

Mention that dependencies key also applicable to the "es" format.
Just noticed. Is it OK to change type names in .d.ts file, because that types isn't public API?

@phpnode was the one that touched the .d.ts file last, so I'd like his opinion.


Add BRAM and URAM mapping for UltraScale[+]

Looks OK in general, modulo inline comments. The blackbox library needs a bit of discussion though (I think the simplest way would be to just merge all the blackbox libraries into single cells_xtra.v, and also merge *_brams_bb.v into it — IMO there's no reason for these to be a separate file). What do you think? cc @eddiehung on that.

Agreed. There should be no compatibility issues with overlapping blackboxes, however, if you use the wrong instantiation (a URAM) on a older arch it will still pass through the flow error free. Otherwise, macros?

@eddiehung by "macros" do you mean "`ifdef"? If so, I agree.  I can make the patch, but I'd rather avoid conflicting with this PR — if we agree that a merged file + ifdefs is the correct way forward, I'd suggest merging this PR as-is (modulo other comments), and then I'll make a new PR on top of the new master.

I would agree that we should have all older primitives available in cells_xtra; and merge the files to avoid duplication. `ifdef seems like as a good a solution as any.


feat: add treasury prime example

Description
Title

Testing required outside of automated testing?

[x] Not Applicable

Screenshots (if appropriate):

[x] Not Applicable

Rollback / Rollforward Procedure

[x] Roll Forward
[ ] Roll Back

Reviewer Checklist

[ ] Description of Change
[ ] Description of outside testing if applicable.
[ ] Description of Roll Forward / Backward Procedure
[ ] Documentation updated for Change

:tada: This PR is included in version 1.151.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


#41 Use datum and event instead of d and e

This change updates the expression parsing and codegen to use datum and event instead of d and e, fixing issue #41. The examples and tests are also updated.
Outstanding issues are the p and i variables. The item will become event.target, but that will require synthesizing event objects (we can't re-assign fields on event objects -- though it seems we can add new ones). The p variable will require some thought into a new way to calculate screen coordinates vs. vis coordinates.

Coverage decreased (-0.02%) to 73.46% when pulling be838513db192cad5523b0ccb796331887ece523 on ryan-rename-expression-globals into 8d895d45e989968504137a1d3f310b814f2b6a46 on v2.


Vendor variable in lockfile

This is a prerequisite PR to the hybrid mode, it sets the vendor variable on all packages that we intend to vendor.
I tried running it on opam-monorepo and while there is a denylist of packages in Config.base_packages it seems to still want to pull packages like ocaml-config. I wonder if this is correct or whether we'd need to add more exceptions to it (like when the package version is "base" for example).

@NathanReb The fact that I needed to adjust the parsing part unfortunately means that to accept the new lock files it has to include this code, so it is incompatible with older opam-monorepo versions. Which is a bit sad but given we're going for 0.3.0 anyway it shouldn't be much of an issue.

I took a look at this and I think it's not only about updating the base packages list. This list is complemented by a check that packages are not "virtual" in other places in the code. Virtual packages are packages that have no url.src field, i.e. packages only used for their metadata.
I think we probably want the same filtering here. This is more easily done on Opam.Package_summary.t values though so I'd suggest that Lockfile.Depends.t becomes a record that also embeds the vendor status. What do you think?

That's a good point, in the hybrid mode PR I had already converted Depends.t to a record, since I needed to track the vendor information on a per-package base. While going through this I also thought it would be good to convert from string/string to Name.t and Version.t respectively, to prevent accidental swaps (since versions and names are often handled in code in similar places) and make the signatures a bit more understandable.


"verifying installation" steam screen appears on every boot

I don't see this on my non-gamerOS Arch gaming machine which is set up nearly the same way as gamerOS.
The cause doesn't appear to be the fact that the root disk is read-only because the screen still appears even after running frzr-unlock to make the gamerOS install read-write.

I don't know what could be causing this. I note that this is also happening on another machine where I have a BTRFS filesystem present.

I recently installed GamerOS on a different machine which does not exhibit this. Perhaps it is some hardware issue.
I am closing this for now.


Sharing the same store with another Window

I have an iframe that I'd like to have re-use the parent window's store.
In my iframe, I have:

render(
        <Provider store={callerWindow.store}>
            <Popup />
        </Provider>,
        document.getElementById('root')
    )

Where callerWindow.store is the store created in the parent window.
However, when I change the state of something in the parent window store, the child/iframe does not re-render.   This makes sense to me as both windows have their own React instance... but I have no idea on how to somehow make React in the iframe get triggered/re-run (i.e., setState() called correctly) when the parent window's store changed.
I'm thinking the secret must be in connect.js: https://github.com/reactjs/react-redux/blob/master/src/components/connect.js
Still looking.  Any pointers would be appreciated!

I haven't figured it out, but I am thinking this is user error.    I'll update this if I find this does indeed work without any special work.

Yes it works as-is.  I just had to get the store from the parent window and pass it in as shown above.  My problem was that my iframe was being cached and I was getting some false negatives.

Hey @sethcall . I'm trying to do the same thing and struggling to reach the solution. Would you mind posting a gist?

Old post but I just solved this issue in my own app, which contains an iframe. The iframe then contains another react component). Both share the same store.
main react app sets a reference to the store on the window level:
if(document.getElementById('root')) {   **window.mystore = store**   render(     <Provider store={store}>       <App/>     </Provider>,     document.getElementById('root')   ) }
The when I initialize the react app within the iframe I simply reference the store on window.parent.mystore
if(document.getElementById('preview')) {   render(     <Provider store={**window.parent.mystore**}>       <Preview/>     </Provider>,     document.getElementById('preview')   ) }


zsh:1: permission denied: /tmp/tmux-buffer

When I enter the hotkey, zsh:1: permission denied: /tmp/tmux-buffer flashes by (and then immediately disappears).
aengelen@yinka ~ % ls -alFh /tmp/tmux-buffer
-rw------- 1 aengelen aengelen 305 Jan  5 17:41 /tmp/tmux-buffer

(this is on linux, if it matters :) )

Might be because I have neither urlview neither extract_url installed - a friendlier error message would then be nice though

(jep seems that was it :) )

Thanks for reporting, sorry for the late response on my part ;)


wrap namespace name in card container

Hi David!!
Issue:
https://issues.redhat.com/browse/AAH-165
I simply put flex-wrap on the .ns-card-container class. See cards.scss & namespace-card.tsx.

Seems to have done the trick.

@ShaiahWren Not sure why it worked for you but it didn't for me in Chrome.
This worked for me:
diff --git a/src/components/cards/cards.scss b/src/components/cards/cards.scss
index 65b03e3..fb356be 100644
--- a/src/components/cards/cards.scss
+++ b/src/components/cards/cards.scss
@@ -1,6 +1,6 @@
 .ns-card-container {
   width: 300px;
-  flex-wrap: wrap;
+  height: 280px;

   .title {
     font-weight: bold;
@@ -13,7 +13,10 @@
     width: 180px;
   }
 }
-
+.wrap {
+  width: 300px;
+  word-break: break-word;
+}
 .collection-card-container {
   width: 280px;
   // height: 340px;
diff --git a/src/components/cards/namespace-card.tsx b/src/components/cards/namespace-card.tsx
index b5914cc..66962cf 100644
--- a/src/components/cards/namespace-card.tsx
+++ b/src/components/cards/namespace-card.tsx
@@ -37,8 +37,8 @@ export class NamespaceCard extends React.Component<IProps, {}> {
             />
           </CardHeaderMain>
         </CardHeader>
-        <CardTitle>{company || name}</CardTitle>
-        <CardBody>{name}</CardBody>
+        <CardTitle className={"wrap"}>{company || name}</CardTitle>
+        <CardBody className={"wrap"}>{name}</CardBody>
         {namespaceURL && (
           <CardFooter>
             <Link to={namespaceURL}>View collections</Link>

Hi Zita!!
I implemented your changes and here is what I have... it addresses the overflow for the title but not the CardBody of CardFooter. Is this a concern?
David mentioned using a Tooltip + truncating method for the title. What do you think of that?
See photo:

And here is an edge case where a long long title completely overflows the card. Not a likely scenario, but the might have been what David was thinking when he thought of the Tooltip...

@ShaiahWren You can create a namespace with name that contains spaces, commas and dots? It didn't let me make the name longer than 64 chars.

hmm CardFooter should always be View Collections so it shouldn't be a problem. As for CardBody it should work with clasName={'wrap'}.
But truncating and having a Tooltip sounds like good idea too. Do you like that idea better?

I think Tooltip sounds like a good option.
Shall I do that for both the title and CardBody, or just one?

@ShaiahWren both :)

I'm using the same truncating method on both the CardTitle and CardBody, but of course the "length" of the two will appear differently on bolded vs plain size text, see screenshot. Is this and issue? If so I'll make two separate truncating methods. Thanks!

So.. I don't want to block this PR on this, since we're already using this elsewhere.
But truncating the text to N characters will never really work... both of these are exactly 32 characters:

Ideally, this should be fixed in css, using text-overflow: ellipsis

@ZitaNemeckova , I cleaned up the Tooltip so CardBody and CardTitle aren't in the 'content' attribute anymore. Also removed the className='wrap' from the footer. Not sure why I put that there in the first place, must have been from an earlier draft.
@himdel you have a great point. In the case that we put text-overflow: ellipsis on CardTitle & CardBody, the full name will simply not be visible on the card view until clicking on 'view collections'.
I'm happy to make the change. Lmk

Pr closed


test(test): remove .only from PathMerge test

:tada: This PR is included in version 1.11.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Type cast to MONEY fails if value is null

I'm querying a money field with raw SQL which might result in NULL.
Hypothetical scenario:
const value = await db.a.find(1).select({
    money: (q) => q.sql`NULL`.type((t) => t.money().nullable()),
});

It crashes with:
[redacted]\node_modules\pqb\src\columns\string.ts:321
      return parseFloat((input as string).replace(/,/g, '').replace(/\$/g, ''));

TypeError: Cannot read properties of null (reading 'replace')
    at Object.MoneyColumn.parseFn.Object.assign.hideFromCode ([redacted]\node_modules\pqb\src\columns\string.ts:321:43)
    at parseRecord ([redacted]\node_modules\pqb\src\queryMethods\then.ts:563:49)
    at then ([redacted]\node_modules\pqb\src\queryMethods\then.ts:236:22)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  cause: Error
      at Db.getThen ([redacted]\node_modules\pqb\src\queryMethods\then.ts:83:18)
      at seed ([redacted]\src\db\seed.ts:16:35)
      at runCommand ([redacted]\node_modules\rake-db\src\rakeDb.ts:155:11)

Other string types, such as date or time seem to work just fine

I actually notice now that money is discouraged by Postgres

While I'm at it, I tried using the numeric type for my money fields, but I can no longer call the sum aggregate function, typescript complains (redacted table names):
Argument of type '"amount"' is not assignable to parameter of type 'SelectableOrExpressionOfType<{ relations: { a: RelationQuery<BelongsToInfo<"a", "aId", true, BelongsToQuery<TableToDb<ATable, { b: RelationQuery<HasManyInfo<ATable, "b", { relations: { role: RelationQuery<BelongsToInfo<...>, BelongsToParams<...>, true, true>;

🤷♂

You can use this to have numeric in the database and numbers on the JS side:
money: () => t.numeric().encode((n: number) => String(n)).parse((s: string) => Number(s)).as(t.real()),

(or just use t.real() or t.doublePrecision() right away if you don't care about loss of precision).

@mordechaim:
For ad-hoc queries, this works:
const user = await db.user.find(1).select({
  money: q => q.sql`NULL`.type(t => t.real().nullable()),
})

console.log(user.money) // null (type is number | null)

For retrieving numbers from numeric table columns, use this:
class UserTable extends BaseTable {
  readonly table = "user"

  columns = this.setColumns(t => ({
    id: t.serial().primaryKey(),
    name: t.varchar(),
    // Convert from numbers to strings and back. Type as if it were a t.real() column.
    balance: t.numeric().encode((n: number) => String(n)).parse((s: string) => Number(s)).as(t.real()),
  }))
}

// Use numbers for values
await db.user.insertMany([
  { name: "Alice", balance: 10 },
  { name: "Bob", balance: 20 },
])

// Retrieve sum as a number
const sum = await db.user.all().sum("balance")
console.log(sum) // 30 (type is number | null)

That said, despite the workarounds, the original issue that you opened is still relevant and should be fixed.

Confirming a bug: money and array are currently failing at NULL values

Published a fix for money and also array types to not fail on nulls.


NETOBSERV-619: mark duplicate flows

When the Deduper is configured and the DEDUPER_JUSTMARK env var is set to true, it just detects duplicate flows and marks them with a new Duplicate boolean values, leaving only one of the duplicates as Duplicate: false.
It also adds deduplication to flows with same source/destination date but different direction. This means that flows between two pods in the same node will be now deduplicated, but flows between pods in different nodes will be still reported as duplicate (as there is no way to deduplicate flows that have been captured by different agents). Before this change, same ingress/egress flow in the same node was duplicate, and flows between two nodes were quadruplicate.
This PR does not complete the NETOBSERV-619 task. Still missing:

Encode the duplicate field in the FLP side.
Change the NOO to configure by default the deduper with the justmark flag (allow optional disable).
Change the console to ignore the duplicate flows in the rate calculations.

Codecov Report

Merging #66 (02683d6) into main (f684bc1) will increase coverage by 11.48%.
The diff coverage is 63.00%.

@@             Coverage Diff             @@
##             main      #66       +/-   ##
===========================================
+ Coverage   33.28%   44.77%   +11.48%
===========================================
  Files          22       25        +3
  Lines        1433     1512       +79
===========================================
+ Hits          477      677      +200
+ Misses        936      804      -132
- Partials       20       31       +11

Flag
Coverage Δ

unittests
44.77% <63.00%> (+11.48%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/flow/record.go
83.33% <ø> (ø)

pkg/agent/agent.go
47.50% <36.84%> (+33.27%)
:arrow_up:

pkg/exporter/proto.go
48.75% <50.00%> (+0.03%)
:arrow_up:

pkg/test/tracer_fake.go
67.85% <67.85%> (ø)

pkg/test/export_fake.go
81.25% <81.25%> (ø)

pkg/flow/deduper.go
100.00% <100.00%> (ø)

pkg/flow/limiter.go
51.51% <100.00%> (ø)

pkg/test/informer_fake.go
100.00% <100.00%> (ø)

pkg/ifaces/registerer.go
72.72% <0.00%> (+11.36%)
:arrow_up:

... and 3 more

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

@jotak yeah, you are right. Commit df196ca reverts back the Direction deduplication.

@mariomac , also, my understanding here, is that this PR address duplicate accross a single node, but does not address duplicate of flow reported by multiple agents, is that right?

@OlivierCazade exactly. Actually the whole NETOBSERV-619 is about deduplicating flows per node, not on a global basis.
In a flow going from node A to node B, it will be captured as egress flow in A and ingress flow in B. However, this is taken into account for the metrics calculation so it's fine to have it like that, at the moment.


Fix demo page

There are some problems with the demo page. Particularly the stuff with editable JSON. Formly has evolved beyond simple JSON. Many fields can be powered by JSON alone, but if you want anything that's more than simple, you need a real object. We're doing some things to make it work, but it's getting out of control.
We also need to split the demo out into several examples. It's starting to get fairly large. Would really like to simplify things a bit.

This is finished. Just need to add more examples.


Rust and WebAssembly Working Group Meeting #39

Our next meeting will be Thursday, April 4th at 17:00 UTC.
Add agenda items here: https://paper.dropbox.com/doc/RustWebAssembly-WG-dcXi5F7Bqlvg10zd7dKve
As usual, we'll be holding open office hours, so if you have any questions about Rust and WebAssembly, feel free to add a bullet point to the agenda!
We use Zoom for video meetings, so make sure you've downloaded the client! (It's free, but you have to sign up.) Here is our meeting room: https://zoom.us/j/715879536
Anyone interested in Rust and WebAssembly is invited to join! Yes, that includes you!

Starting in half an hour! See you soon :)

Thanks everyone!


Peering api 2021-06-01

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[x] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
When you expect to publish swagger? Please provide date, or month to public if date is not available yet. Upcoming Release
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No, no need to refresh for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[x] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
[x] Ensure to copy the existing version into new directory structure for first commit (including refactoring) and then push new changes including version updates in separate commits. This is required to review the changes efficiently.
Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

Thanks for copying older version in the first commit, It helped me review the changes efficiently. I reviewed the changes. Changes looks good, marking ARM_Signedoff.

Open API Hub comparison with 2021-01-01 peering.json

Approving for changes in readme.go.md

There is few Linter error about system data. do you have plan to support system data?

Hi @akning-ms , thanks for your review, the CheckServiceProviderAvailability was changed back so it is not a breaking change. We do not plan to support systemData for this API version, but we will plan for future API. @renuka-raju will reply with justification for the other breaking changes.

Correction: path CheckServiceProviderAvailability rename to checkServiceProviderAvailability is required, as it is s360 linting violation

Hi @akning-ms , for each breaking change here are the relevant s360 items:
Linter Error R3021
ROUNDTRIP_ADDITIONAL_PROPERTY
ROUNDTRIP_INCONSISTENT_PROPERTY
Expected impact is minimal on end-user experience (ReadOnly changes with no impact, and camel-case change for checkServiceProviderAvailability used mostly by internal code on Portal side).


fix(chunker): Fix chunk length calculation for unicode characters

What kind of change does this PR introduce?
Bug fix
What is the current behavior?
The length of cookies with URI escaped characters can exceed the valid cookie length of 4096, causing parts of the split cookies to be rejected by the browser.
What is the new behavior?
Chunked cookies after URI encoding now fit within the chunk size specified.
Additional context
The reason for this issue occurring is that we are chunking base on lengths before escaping. While we have some buffer in the MAX_CHUNK_SIZE for longer unicode characters, this does not always work.
For example ﷽ has a length in javascript of 1 as well as match /(.{1})/g.exec("﷽")  to be $1 = ﷽, but it will escape to %EF%B7%BD which is 9 characters long.
The current approach of chunking with a buffer for some unicode characters will never be "correct" unless we implement a buffer that accounts for every character being a maximum size unicode.
I've reimplemented the createChunks function to do the following:

Split the chunk after encoding it.
Ensure that chunks are split correctly between unicode characters instead of inside of it.
Not use regex as it is hard to determine what a "correct" unicode character boundary is in regex when it is escaped.

There are currently other related solutions and issues:
PRs

#680
#701

Issues

#707
#715

@SyntheticGoop
Hey! Your pull request was exactly what I wanted. However, when I forked and used it, a problem seemed to occur when deploying Vercel. The functions to make it work are presented above. The problem was a simple Typescript constraint.

@SyntheticGoop Hey! Your pull request was exactly what I wanted. However, when I forked and used it, a problem seemed to occur when deploying Vercel. The functions to make it work are presented above. The problem was a simple Typescript constraint.

I've updated the types so that the package build on my system with pnpm build.


How to move tests into different area?

I love the angularjs-requirejs seed, and have used it several times for a number of projects. For my current project, I'm required to move the tests OUT of the main code-base. I've tried a number of ways to add tests to a separate area, but then I get errors like this:
ERROR [karma]: Uncaught Error: Mismatched anonymous define() module: function (app) {
        describe('app.version module', function() {
                beforeEach(module('app.version'));

                describe('app-version directive', function() {
                        it('should print current version', function() {
                                module(function($provide) {
                                        $provide.value('version', 'TEST_VER');
                                });
                                inject(function($compile, $rootScope) {
                                        var element = $compile('<span app-version></span>')($rootScope);
                                        expect(element.text()).toEqual('TEST_VER');
                               });
                        });
                });
        });
}
http://requirejs.org/docs/errors.html#mismatch
at http://localhost:9876/absoluteC:/Users/zzz/zzz/node_modules/requirejs/require.js?3d820c829606b74b8680ffd0416fdb96d16ec957:141

I know that the project/test environment is correct, because when I move the tests back to their native folders, everything works okay. Here's a sample karma.conf (relevant parts):
    basePath : './public',

    files : [
        {pattern: 'libs/angular/angular.js', included: false},
        {pattern: 'libs/angular-mocks/angular-mocks.js', included: false},
        {pattern: 'libs/angular-translate/angular-translate.min.js', included: false},
        {pattern: 'libs/angular-bootstrap/ui-bootstrap.min.js', included: false},
        {pattern: 'libs/angular-ui-router/release/angular-ui-router.js', included: false},
        {pattern: 'libs/requirejs-text/text.js', included: false},
        {pattern: 'app/shared/version/*.js', included: false},
        {pattern: 'app/service/*.js', included: false},
        {pattern: 'app/model/*.js', included: false},
        {pattern: 'app.js', included: false},
        {pattern: 'test/*.js', included: true},
        'require-config.js'
    ],

Hi @sjl2024 , I have changed this project to use tests out side of main code base.You can check it from https://github.com/w3app-io/angular-starter.


FontCapitals enum .net framework versions missing

Originally reported by @wstaelens at https://github.com/dotnet/docs/issues/4333
https://docs.microsoft.com/nl-be/dotnet/api/system.windows.fontcapitals?view=netframework-4.7.1
vs.
https://msdn.microsoft.com/en-us/library/system.windows.fontcapitals(v=vs.110).aspx
.net framework version is available since 3.0 but on docs it only starts with "4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1". The 3.0 is not included. Which is important information.
(+ the msdn version has empty examples. 😄 )

From @mairaw:
Thanks @wstaelens for your feedback. I'll add @dend to this discussion to see if we could have the same behavior as in MSDN for the version info. The reason this happens is because on docs we're only showing the versions we're reflecting against vs. the whole history,
For the empty examples on MSDN, we won't fix that, since we'll be redirecting to docs pretty soon.

From @wstaelens:
well it is very very very useful to see when a function/class is initially supported. especially when customers do an upgrade and you get a crash that we directly see a possible reason 😄

This has now been addressed, as we introduced the older APIs to docs.