MA-1772 Refresh access token on 401

Addresses https://openedx.atlassian.net/browse/MA-1772
@mikekatz @aleffert Pleez Review. Tests will come later, I've had enough iOS for the time being.

First pass done. This is pretty close. Just needs a little cleanup - and of course tests.

Easier to review with https://github.com/edx/edx-app-ios/pull/732/files?w=0

@aleffert @mikekatz Why are the tests failing?

When in doubt about test failures, rebase. There was a flaky recently that I think got resolved.

@aleffert Ready for another pass

@aleffert Ready for final pass 💃

@BenjiLee a couple nitpicks, but it looks good! wooo

@aleffert Your last edx review?

Dear Ghost of @aleffert :)
Else: @mikekatz Could you review?

👍

@mikekatz @aleffert I forgot to squash! I'm such a noob


Can't seem to use keyboard shortcuts in firefox, or find how to change the shortcut.

Describe the bug
问题描述
Attempting to use the Ctrl-B shortcut opens up my bookmarks tab in firefox, and doesnt open the summarize page option as listed in instructions.
To Reproduce
如何复现
Steps to reproduce the behavior:
Press Ctrl-b in firefox browser
Expected behavior
期望行为
page summary option should be invoked
Screenshots
截图说明
-none-
Please complete the following information):
请补全以下内容

OS: Windows 11
Browser: Firefox 111.0.1
Extension Version: 2.2.3, update to 2.2.4 isnt happening automatically yet, even after updating extenensions.

Additional context
其他
-none-


WinGetSvc-Validation (Manifest Content Validation) fails

Hi,
#1445 fails reaching the timeout (1500m) at Manifest Content Validation / Installers Scan.
I can't understand why, I can't find anything wrong in my manifest.
I am not a super expert but I have already submitted two other programs which have been accepted.

You may try a force push in order to trigger the build process again. To do so, switch to your branch and run
git commit --amend

save unchanged and then, run
git push --force

Thanks, but before I could do anything a Microsoft employee has forced the bot for me.


Install as a service Windows 2012+

Would it be possible to have the ability to install this as a service added to the road map?

@Lukiido You may try to use NSSM which is capable of running any app as a service (I'm using it for running nginx on Windows, works great).


Update UG and correct bug regarding commas in monetary amount.

Included a ToC, updated Ui image, corrected grammer and standardised instructions throughout the document.
Amount inputs will allow commas as per validation regex, however, when being stored, the commas will be omitted.

Codecov Report

Merging #142 (2b69b37) into master (cfdf051) will not change coverage.
The diff coverage is 50.00%.

@@            Coverage Diff            @@
##             master     #142   +/-   ##
=========================================
  Coverage     58.04%   58.04%
  Complexity      501      501
=========================================
  Files           101      101
  Lines          1914     1914
  Branches        222      222
=========================================
  Hits           1111     1111
  Misses          740      740
  Partials         63       63

Impacted Files
Coverage Δ

.../java/seedu/address/model/person/PersonAmount.java
0.00% <0.00%> (ø)

.../main/java/seedu/address/model/expense/Amount.java
88.88% <100.00%> (ø)

Continue to review full report at Codecov.

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


In C/C++ hardening guide discuss instrumented test code vs production code

There seems to be a confusion between instrumented test code and production code.
When running software in production, you should use production code.
However, when testing, it is sometimes more complex. You typically want to test the production code, so that what you test is what you ship. However, if you only test the production code, you may miss some important problems. So it is often helpful to also generate executables that are especially introduced to warn about problems that would not be obvious in the production code version. I think that is the basis of some of the odd comments that some options shouldn't be used in production because they will make production code more reliable. Of course you want production code to be reliable!
I suggest adding a short section to describe the distinctions between these 2 kinds of executives. that will set up explaining the different options for the different situations.

On 2023-11-22 there was agreement in principle, need to work out text.

I've tried to focus on this issue and formalize some of the differences between production and test code.
I think at these two kind of production code :

Compiled binaries distributed as final product (closed source)
Tarball distributed as an archive for installation (ready to be compiled by end-users -> open source or restricted source): source + makefile

Production codes are projects already published: Already tested in previous phases (source code validation, benchmark, etc.) :

Open source or restricted source : Makefile includes only finals compilation flags: Security features to be included in final binaries (source code validation is out of scope, as already performed in previous testing phases).
Compiled binaries: No compilation flags required and binary analysis already performed in previous testing phases (bugs/crash during production are mainly reported to maintainers/packagers for them to open a testing phase).

A production code have these main characteristics:

Availability must reach 100% of production time.
Requested processing must deliver expected performance (close to benchmark results).
Certified confidentiality: User data must be protected against theft (leaks).
Guaranteed integrity of requested processing: The result is in line with expectations.
Clear and definitive safety features in the final binary with minimal impact on expected specifications:

The binary must ensure sanitization of inputs from the user context (direct inputs, input files, system interrupts [user-controlled device: usb stick, remote device (bluetooth, wifi, etc...), etc...], etc...).
Ensure execution control flow.
Detect memory corruption.
etc.

Security features can be added to binaries during the compilation process (stack protection, access rights to memory segments, address space randomization/code position independence, etc.). I hope to add more details about it in a next post.
Regards,
Florian


Handle response with no content-type header

Hi,
I am a developer for the MozTrap project. When we use this middleware with TastyPie, the DELETE request will cause a 500 server error.
The DELETE request should return 204 No Content, which should not have a content-type in the response, so I use get to handle this situation, otherwise it will throw a KeyError.
Thanks!

Thanks!


init

add mglo-devtestlab vm

good

great !

@iloveck , this PR is not clear. What's the contribution? Can you please update it to clearly define it?

my bad, was planned to  PR in my fork repo, revert now


Upgrading to 2.7 issue

Hi team,
We have upgraded the harvester to 2.7 by replacing our WAR file in apache tomcat on our secure server and local test environment. Also tested generating our own WAR file using the master branch.
The harvester application does launch however we are getting an error on the top right 'Unable to access tasks information' (screenshot attached) . The harvester logs are clean, however our tomcat9-stderr logs (Attached logs) are displaying
Caused by: org.h2.jdbc.JdbcSQLNonTransientException: General error: "The write format 1 is smaller than the supported format 2 [2.1.210/5]" [50000-210]
We have been using 2.6.5 without issue. Any advise is appreciated.
Thanks,
Daniel

tomcat9-stderr.2023-06-21.log

hi, this is due to the internal h2 database (used to store the broker and task definitions) being upgraded in 2.7.0. Please set a different location for the h2 database by updating jdbc.url in /harvester/WEB-INF/classes/config/hrv.properties.
for example: jdbc.url=jdbc:h2:~/harvester_270

Thank you Marten, this is resolved now.


feat: add Dockerfile, compose, update some dependencies

The changes in this MR have been fixed in the MR #8.
Thank you @hauserkristof for your support and help!


Fix curveEditorPopover overwriting existing curve

Fixes #148

@AriaMinaei I caught and fixed a few additional things:

I realized TextInputMode was not necessary, it is removed. Code is simpler now.
My logic for reacting to changes to the input was incorrect (the callback looked at the previously bound value of inputValue instead of e.target.value.
When selecting an item in the grid it getting unselected.
One or two other very minor things.


Code testing for existence environment variables halts validation, even when those variables are passed

Please use GitHub issues only to report bugs. To ask a general question or request assistance/support, please use the Claudia.js Gitter Chat instead.
To report a bug or a problem, please fill in the sections below. The more you provide, the better we'll be able to help.

Expected behaviour:

When deploying with environment variables (using --set-env or --set-env-from-json ) , I expect those variables to be considered in the validation process.

What actually happens:

During package validation, any code that tests for the existence of environment variables throws an error -- so the validation and the deployment fails.

Link to a minimal, executable project that demonstrates the problem:

https://github.com/jkeefe/claudia-env-trouble-demo

Steps to install the project:

Download or clone
run npm install

Steps to reproduce the problem:

Run:
claudia create --handler lambda.handler --set-env WIT_SERVER_ACCESS_TOKEN=ABC123 --deploy-proxy-api --region us-east-1 --name claudia-test

My error looks like this:
validating package
Error: No wit.ai API token specified
    at module.exports (/private/var/folders/bc/pnjfps4j3rsgg6lc638p8nw80000gn/T/24cee1de-8e32-4348-a219-a6b6840fc571/node_modules/botkit-middleware-witai/src/botkit-middleware-witai.js:6:15)
    at Object.<anonymous> (/private/var/folders/bc/pnjfps4j3rsgg6lc638p8nw80000gn/T/24cee1de-8e32-4348-a219-a6b6840fc571/answerbot/index.js:1:107)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/private/var/folders/bc/pnjfps4j3rsgg6lc638p8nw80000gn/T/24cee1de-8e32-4348-a219-a6b6840fc571/server.js:4:17)
cannot require ./lambda after clean installation. Check your dependencies.

The wit-ai package (and several packages I use) tests to make sure variables are passed. If they don't exist, or are null, they throw an error. These errors are getting thrown in the Claudia validation process even when I set them.
To get it to deploy, I had to add "fake" variables throughout my code to pass the not-null tests for the environment variable. So adding || "temp" on the erroring line clears the validation:
var wit = require('botkit-middleware-witai')({
    token: process.env.WIT_SERVER_ACCESS_TOKEN || "temp"
});

Your suggestion sounds as a nice idea how to solve this. Would you like to try to give this a shot? I could guide you where to implement the changes.

I can certainly try! Would love the challenge.

the code change is most likely to go here, just before the require call for the API Module:
https://github.com/claudiajs/claudia/blob/786603b140be8909a8db6dd5bbc17202e09aa1f3/src/tasks/validate-package.js#L15
you should use this utility to read out the env vars from the options: https://github.com/claudiajs/claudia/blob/master/src/util/read-env-vars-from-options.js - this will return an object containing {Variables: <your vars as a hash map>}.
After that, it should be just a matter of setting process.env from the options.
You should add a test to https://github.com/claudiajs/claudia/blob/master/spec/validate-package-spec.js proving that the new code works as expected. I suggest creating a simple project in spec/test-projects that throws an exception if some env var isn't defined, then proving that it loads with the vars set in options, and that it throws an exception without the vars set in options. Just follow the examples for the other test projects there.
I suggest you create another util function in the /src/util directory that will load up the environment vars (using the other utility function) and populate process.ENV. Then you can create a nice separate test for that function and run it in isolation.
The full test package takes about 2 hours, so don't bother running everything, but please run at least the specs for validatePackage, and your new utility function before creating a pull request. The contributors guide explains how to run just selected tests

this is now on NPM as 2.8.0


Fixed bug that frame action may be miss

Resubmit for https://github.com/jiborobot/pixi-animate/pull/70

Could you pr this?


Want ArmnnConverter to run on desktop

Hi
I want ArmnnConverter to run on desktop.  Want to know if that is feasible.
I feel it will be advantage to have ArmnnConverter as desktop app as it can help in serialization with out need of mobile.
When I build it with out cross compilation. I am facing this error.
Linking CXX executable ArmnnConverter
/usr/bin/ld: cannot find -llog

Hi @avanilkumar Hope you were able to solve the problem. Do we need to change our documentation to help others avoid this?


(fix): fix signin and signup rspec tests

Fixes #
Now we fetch string from string resource of I18n , for tests same shall be done
Describe the changes you have made in this PR -
user I18n in rspec tests
Screenshots of the changes (If any) -
Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

Fixed in https://github.com/CircuitVerse/CircuitVerse/commit/36a93f774d65119629e1ecb46c2666d3110b865e


preventDefault & blur on blaze dispatch

Blaze dispatch helper is nice, but unfortunately, we still need to preventDefault and unfocus the clicked button - which forces us to go back to defining events. Is there any way around it?

It does have preventDefault and stopImmediatePropagation:
https://github.com/worona/meteorflux/blob/devel/packages/dispatcher-helper/client/dispatcher-helper.js#L30-L31
If you need anything else make a PR and I will accept it :+1:

Ooooookay, you definitely need to update the docs - I had no idea this package exists. The README only mentions blaze-utils, and that was what I used...

My bad, dispatcher helper is for the old non-reactive dispatcher.
Anyway, the new helpers are similar:
https://github.com/worona/meteorflux/blob/devel/packages/blaze-utils/lib/meteorflux-blaze-events.js#L26-L27


Procedural Texture Proxy

I think an el-cheapo way of generating normal maps or depth maps would be a good addition, because it lowers the hurdle for game development newbies.
Easy textures like cobblestone, asphalt, brick walls (which can easily be found on the internet usually as image texture, but not as depth or normal texture) can be improved a lot by adding a depth map (or specular texture) that is based on the original texture. Usually a combination of difference-of-gaussian, desaturating, gaussian blur and/or a simple value mapping (log, exp, 1/x, ...) produces great results.
While this can be done with gimp, it would greatly simplify the workflow (also when changing textures afterwards) if Godot could do that on its own.
To generalize even further, I propose the following additions:

a Procedural Texture Proxy that takes a Texture as input, and can apply operations like the above (or arbitrary shaders, actually.)
A user-friendly assistant for generating a depth map using that feature. E.g. the user clicks "auto depth map", causing the depth map texture being assigned automatically to a newly generated ProceduralTextureProxy, and causing its GUI to be opened. In that GUI, they can tinker with 4-5 sliders setting the parameters of the predefined stack of DoG + blur + valuemapping. This can lead to visually pleasing results in under one minute.

What do you think, would this be a useful feature (and a good way to implement it)?

Feature and improvement proposals for the Godot Engine are now being discussed and reviewed in a dedicated Godot Improvement Proposals (GIP) (godotengine/godot-proposals) issue tracker. The GIP tracker has a detailed issue template designed so that proposals include all the relevant information to start a productive discussion and help the community assess the validity of the proposal for the engine.
The main (godotengine/godot) tracker is now solely dedicated to bug reports and Pull Requests, enabling contributors to have a better focus on bug fixing work. Therefore, we are now closing all older feature proposals on the main issue tracker.
If you are interested in this feature proposal, please open a new proposal on the GIP tracker following the given issue template (after checking that it doesn't exist already). Be sure to reference this closed issue if it includes any relevant discussion (which you are also encouraged to summarize in the new proposal). Thanks in advance!
Note: This is partly implemented in NoiseTexture.


Audit and make documentation for command GETSET consistent

The documentation of the command [GETSET](https://dicedb.io/commands/getset/) present in the docs could have become stale. We need your help to ensure that the documentation is complete, correct, and consistent.  Completing this issue will give you much-needed exposure to how the command is implemented and the different parameters it accepts. Hence, this is a great way to build a good understanding of the project and its functionality. While still making a significant contribution. Here's what you need to do:

Go through the documentation of the command and run all the examples, making sure they all work as expected
If the same command is present in Redis, then the expected output of the DiceDB command is the same as the Redis output
If the command is not in Redis, then as per your judgment, raise an issue with this template or fix the documentation and raise a pull request.
The documentation should contain the following sections in the following order

short and concise introduction paragraph about the command covering what it does
Syntax
Parameters: List all the parameters the command accepts, and ignore the section if there are no parameters
Return values: List all possible return values and under what condition
Behaviour: Describe the behavior of the command, what it does, how it does it, some internal specifics if any
Errors: List all possible errors the command can throw and under what condition
Examples: List all possible examples of the command and the expected output. Assume CLI implementation

Note: The title of the sections should be the exact strings mentioned above, like "Examples", "Return values", etc.
Note: The description of the command in Frontmatter of the command.md file is the first paragraph (introduction) of the command.
Go through the DiceDB/dice repository and explore the command implementation

to understand all possible return values
to understand all possible error values and conditions
to understand different parameters the command accepts

Please use the documentation of the SET command as the reference point and structure the
documentation of this command in a very similar way, including the following points

if you see any "Conclusion" section, remove it
the headers (h1, h2, h3) should be appropriately used
the CLI prompt should be <IP_ADDRESS>:7379> and not anything else
Use markdown tables for parameters and return values (ref SET command documentation)
wrap any command or paramter in backticks (`) to highlight them
the section header should be capitalize as used in the SET command documentation

If you find any inconsistencies, please fix the documentation and raise the PR.
The core idea of this exercise is to ensure that the documentation is consistent, correct, and complete.
Make sure you comment on the other issues you created (if any) as a comment on this issue and also any PR (if any) that you created.
Thank you for picking this up and contributing to the DiceDB. It means a ton.

Hi @arpitbbhayani - moved over the PR and linked to this issue. Please assign the issue back to me and close post PR merge.
Thankyou.

@sashpawar11 assigned, thanks for contributing.


Actions workflow syntax: if without expression syntax ${{ }} can result in YAML syntax error

Code of Conduct

[X] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?
Anything that uses reusables.actions.expression-syntax-if, which states:

When you use expressions in an if conditional, you may omit the expression syntax (${{ }}) because GitHub automatically evaluates the if conditional as an expression.

So, at least the following:

https://docs.github.com/en/actions/learn-github-actions/expressions
https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idif

What changes are you suggesting?
These articles suggest that ${{ }} can always be omitted from an if conditional. However, that is not the case since this results in a YAML syntax error (evidence):
if: !false || false

Wrapping it in ${{ }} allows the expression to be evaluated properly (evidence):
if: ${{ !false || false }}

I suggest changing the wording to highlight this limitation.
Additional information
No response

@victorlin Thanks so much for opening an issue! I'll triage this for the team to take a look :eyes:

Thanks for opening this issue, @victorlin!
Yep, as you discovered in your comment, you can't begin YAML values with some special characters unless you quote them.
This applies to all YAML values, not just for GitHub Actions or the if key, so a doc update probably isn't required here.


🌱 calculate wrapped object GVR from the wrapped object.

removed the requirement to get wrapped object GVR from transport interface

Summary
Related issue(s)
Fixes #

/cc @vMaroon
/cc @shmuelk


Getting LinkedAuthorizationFailed Error During Cross Tenant VNET Peering

Hello Team,
I am working with armnetwork/v4 module and while performing cross tenant VNET peering I am getting LinkedAuthorizationFailed error.
I am using azidentity module to for authentication with AdditionallyAllowedTenants param.
I have owner access in both the Tenant Subscriptions.
### My masked code snippet -
		cred, err := azidentity.NewDefaultAzureCredential(&azidentity.DefaultAzureCredentialOptions{TenantID: "ParentTenantId", AdditionallyAllowedTenants: []string{"1XXXXX_XXX_X_X_X_XXXX"}})

		if err != nil {
			log.Default().Fatal(err)
		}
		clientFactory, err := armnetwork.NewClientFactory("SubscriptionId", cred, nil)
		if err != nil {
			log.Default().Fatal(err)
		}

		poller, err := clientFactory.NewVirtualNetworkPeeringsClient().BeginCreateOrUpdate(ctx, "ResourceGroup", "VNETName", "peeringName", armnetwork.VirtualNetworkPeering{
					Properties: &armnetwork.VirtualNetworkPeeringPropertiesFormat{
						AllowForwardedTraffic:     to.Ptr(true),
						AllowVirtualNetworkAccess: to.Ptr(true),
						AllowGatewayTransit:       to.Ptr(false),
						UseRemoteGateways:         to.Ptr(false),
						RemoteVirtualNetwork: &armnetwork.SubResource{
							ID: to.Ptr("RemoteVirtualNetwork"),
						},
					},
				}, nil)
				if err != nil {
					log.Fatalf("failed to finish the request: %v", err)
				}

RESPONSE 403: 403 Forbidden
ERROR CODE: LinkedAuthorizationFailed
{
"error": {
"code": "LinkedAuthorizationFailed",
"message": "The client has permission to perform action 'Microsoft.Network/virtualNetworks/peer/action' on scope '/subscriptions/dXXXX-XXXXX-XXXXX-XXXX/resourceGroups/azure-rony-poc/providers/Microsoft.Network/virtualNetworks/azure-rony-poc-vnet/virtualNetworkPeerings/azure-rony-poc-vnet-peering',
however the current tenant 'ParentTenantId' is not authorized to access linked subscription 'Remote SubscriptionID."
}
}
Is this issue already documented or known?
Any insights you can provide on this matter would be greatly appreciated.
looping @chlowell as he helped me with https://github.com/Azure/azure-sdk-for-go/issues/21539
ThanKs

After some investigation, I've found a solution to the problem described in this issue.
I fixed the issue by updating clientFactory object initialisation by -
clientFactory, err := armnetwork.NewClientFactory(network.SubscriptionId, cred, &arm.ClientOptions{AuxiliaryTenants: []{"AuxiliaryTenants"}})
Hence, Closing this issue
Thanks


WP: add option for users to edit FAQ

Suggestion for improvement
(What is working not well? What we need to do in order to implement this feature?)

https://github.com/swaponline/MultiCurrencyWallet/issues/3878

it makes the site more flexible if users can predefine their own FAQ


ERC721 metadata subgraph

There is a bit more metadata on OpenSea you might want to add: https://docs.opensea.io/docs/metadata-standards#metadata-structure

Some minor comments, otherwise looks all good!

Seems like there are two subgraph folders. Probably should clean that up.

Sorry to forget to cleanup in the repository after changing folder name locally. Corrected it in 95b99a6

Great work!


Using both startAdvertising and startAdvertisingIBeacon

First off, I want to state that I love bleno! I'm using it on my raspberry pi3 and it was so easy to get going.
I have a use case where I want to advertise both an iBeacon and a service with a write characteristic. I then have an app on the phone that when the phone gets in close enough proximity it connects and writes a message to the write characteristic.
It had been working perfectly until I tested this on a Samsung S6. I'm currently advertising theI recently ran into an issue when testing my app on Galaxy S6 where it would find the beacon, but could not connect to the pi. If I stop advertising the iBeacon then it can connect without issue.
Simplified bleno code:
	if(state == 'poweredOn') {
		bleno.startAdvertising('echo', [serviceuuid]);

		bleno.startAdvertisingIBeacon(uuid, major, minor, measuredPower, function (error) {
			console.log('on -> advertisingIBeaconStart: ' + (error ? 'error ' + error : 'success'));
		});
	}
	else {
		bleno.stopAdvertising();
	}

The reason why I'm posting this is because if I simply advertise the service and then use a shell script to advertise the iBeacon it works fine. Below is the main part of the shell script:
sudo /usr/bin/hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 $UUID $MAJOR $MINOR C5 00
sudo /bin/hciconfig hci0 leadv
I'd ideally like to advertise both the service and beacon through bleno without the use of the shell script. Any ideas why it is not working?
Thanks in advance!

@evaz1279 thanks for the positive feedback!

I'd ideally like to advertise both the service and beacon through bleno without the use of the shell script. Any ideas why it is not working?

The last advertising call will most likely win. bleno isn't setup to do both, although you could use a timer to alternate ....


Starter config for Jekyll static site

This PR should be updated with relevant comments before publishing, but I wanted to get a placeholder started for someone who has requested this.
Also, @bchavet , I noticed our setup for Tugboat's Jekyll site includes an 'httpd.conf' file - do we need to offer this for Jekyll static site builds on Tugboat, or is that particular to our setup?

do we need to offer this for Jekyll static site builds on Tugboat, or is that particular to our setup?

This is particular to our setup. We are enabling mod_rewrite and .htaccess support for our repo

do we need to offer this for Jekyll static site builds on Tugboat, or is that particular to our setup?

This is particular to our setup. We are enabling mod_rewrite and .htaccess support for our repo

Just a wild guess, but does that mean this line in the Tugboat config can go away, or should be something different?
cp "${TUGBOAT_ROOT}"/.tugboat/httpd.conf /usr/local/apache2/conf/httpd.conf


Maybe this will help for epk unpack research

https://github.com/kurikomoe/FSNr_tools
I dumped the code from ida. It could decrypt most epks.
during my reverse engineering, some code runs into dec function with "17:32:24" as key, I think them are related to database or something, as the vtable shows.

I looked into EPK files briefly, but didn't get very far. This is what I know currently:
struct epk_file
{
    char data[]; // variable length
    char unknown[0x20];
    char md5[0x10];
};

The MD5 hash is computed from data with the ASCII string 8FE9D249BD2689BB4B70F5AE88A9E645 appended. Blowfish encryption seems to be used for data, and the key is the name of the EPK file without its extension.
That's about as far as I got.


Is it possible to release the stable version 2.0 at the end of this year?

@pzatorski  any news?

hey @gaodeng
this is the stable roadmap https://github.com/react-navigation/stack/issues/162#issue-468234892
any news you can see there


image zoom level

It would be nice to have a zoom feature. When handling large images, a way to zoom out or in can be helpful to position the image correctly.

Or simply just to actually display the proper full image, instead of a small portion.

@l3all
With CSS it would be possible to apply a zoom (CSS Transform using scale), and I'm sure the plugin could include a property in the front matter like banners_zoom: 0.2 to enable it.
src: https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale
@Gewerd-Strauss
This can usually be achieved by changing the way images "cover" the space. giving direct access to users might be useful but could also increase non-technical users having many questions..)
src https://developer.mozilla.org/en-US/docs/Web/CSS/background-size
So the challenge to me seems to be enabling the Obsidian properties in some way and providing it to the frontmatter..

I also need this. Is this acknowledged?


country formatting is different than libphonenumber

Hi,
I am just using the demo and noticed that when I input this Brazilian phone number:<PHONE_NUMBER>0; there is no formatting working. When I use the libphonenumber demo:
https://rawgit.com/googlei18n/libphonenumber/master/javascript/i18n/phonenumbers/demo-compiled.html
it correctly formats.
Why is that? Don't you use libphonenumber for formatting?
Thanks

The issue happens only in the demo.  Installed the addon and it works.  Thanks

In case anyone else may have the same questions, the demo is running fine.
The first input box demonstrated the use of this plugin without the utilities script, thus no auto formatting supported.
The properties binding example, on the other hand, can demonstrate most of the usage.

oops.  My bad.  Thanks.
Em ter, 24 de nov de 2015 às 06:35, Justin Lau<EMAIL_ADDRESS>escreveu:

In case anyone else may have the same questions, the demo is running fine.
The first input box demonstrated the use of this plugin without the
utilities script, thus no auto formatting supported.
The properties binding example
http://justin-lau.github.io/ember-intl-tel-input/#properties-binding,
on the other hand, can demonstrate most of the usage.
—
Reply to this email directly or view it on GitHub
https://github.com/justin-lau/ember-intl-tel-input/issues/9#issuecomment-159195495
.

--
Fred Guth


Update the kokoro build version in gcloud command

****************************************************************

libgrpc.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

****************************************************************

libgrpc++.so

     VM SIZE        FILE SIZE
 ++++++++++++++  ++++++++++++++

  [ = ]       0        0  [ = ]

[trickle] No significant performance differences

[microbenchmarks] No significant performance differences

@yihuazhang   I'm 99% sure that this PR doesn't break ALTS interop tests - the test probably started failing on master for a different reason  and it's a pure coincidence that this PR was merged around that time. Did we check if there were any changes on the Go side by the time the ALTS tests started failing?

@jtattermusch,
I just re-triggered the tests, and the broken tests dropped from 95 to 2. The problem seems to be at ALTS Go stack, and we are investigating it now.


[giflib] Add export CMake

Describe the pull request

What does your PR fix?
Fixes #26833, add export CMake and fix Release mode depends on Debug lib.
Usage have test pass.

Why not to set GIF_LIBRARIES to GIF::GIF:
This creates problems (i.e. requires patching) in export of downstream CMake config. The regular value of GIF_LIBRARIES can be exported directly, but GIF::GIF needs find_dependency(GIF).
So please use the select_library_configurations pattern, as we do in zlib etc.

Any chance this might be completed?

Any chance this might be completed?

I will continue to fix this in the next week.

Closed as duplicate of #27369.


Update kafka-clients, kafka-streams, ... to 3.5.0

About this PR
📦 Updates

org.apache.kafka:kafka-clients
org.apache.kafka:kafka-streams
org.apache.kafka:kafka-streams-scala
org.apache.kafka:kafka-streams-test-utils

from 3.2.3 to 3.5.0
Usage
✅ Please merge!
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

⚙ Adjust future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.apache.kafka" } ]

Or, add this to slow down future updates of this dependency:
dependencyOverrides = [{
  pullRequests = { frequency = "30 days" },
  dependency = { groupId = "org.apache.kafka" }
}]

labels: library-update, early-semver-minor, semver-spec-minor, commit-count:1

Superseded by #384.


Implement resource hierarchy, closes #123

Codecov Report
Attention: 50 lines in your changes are missing coverage. Please review.

Comparison is base (805accd) 97.03% compared to head (f35ee25) 94.20%.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@             Coverage Diff              @@
##               main     #124      +/-   ##
============================================
- Coverage     97.03%   94.20%   -2.84%
- Complexity      664      667       +3
============================================
  Files           177      179       +2
  Lines          1484     1570      +86
  Branches         49       51       +2
============================================
+ Hits           1440     1479      +39
- Misses           37       83      +46
- Partials          7        8       +1

Files
Coverage Δ

.../saynotobugs/confidence/quality/iterable/Each.java
100.00% <100.00%> (ø)

...tobugs/confidence/quality/number/HasLongValue.java
100.00% <100.00%> (ø)

...nfidence/junit5/engine/assertion/WithResource.java
80.95% <100.00%> (ø)

...confidence/junit5/engine/quality/ResourceThat.java
100.00% <100.00%> (ø)

...ugs/confidence/junit5/engine/resource/Derived.java
100.00% <100.00%> (ø)

...confidence/junit5/engine/resource/Initialized.java
100.00% <100.00%> (ø)

...s/confidence/junit5/engine/resource/SystemOut.java
100.00% <100.00%> (ø)

...testengine/testdescriptor/FieldTestDescriptor.java
88.23% <ø> (+11.56%)
:arrow_up:

...onfidence/junit5/engine/resource/LazyResource.java
85.18% <82.60%> (-0.53%)
:arrow_down:

.../junit5/engine/quality/DelegatingResourceThat.java
38.66% <38.66%> (ø)

... and 1 file with indirect coverage changes

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


Address_Discovery static node type does not work

Environment

Application Services Version: 3.40.0
BIG-IP Version: BIG-IP v<IP_ADDRESS> (Build 0.0.28)

Summary
When the Class Address_Discovery is used with addressDiscovery property "static", the declaration either fails, or is accepted and a '200 OK' is returned, but no nodes are added into the configuration.
Steps To Reproduce
Steps to reproduce the behavior:
Issue 1: Declaration fails

Submit the following declaration:

{
	"$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/latest/as3-schema.json",
	"class": "AS3",
	"action": "deploy",
	"persist": true,
	"declaration": {
		"class": "ADC",
		"schemaVersion": "3.40.0",
		"id": "Pool",
		"TEST": {
			"class": "Tenant",
			"Shared": {
				"class": "Application",
				"template": "shared",
				"Test-AD1": {
					"class": "Address_Discovery",
					"addressDiscovery": "static",
					"servers": [
						{
							"name": "myNode3.example.com",
							"address": "<IP_ADDRESS>"
						}
					]
				}
			}
		}
	}
}

Observe the following error response:

	"results": [
		{
			"message": "Cannot read property 'map' of undefined",
			"host": "localhost",
			"tenant": "TEST",
			"code": 422
		}
	],

Issue 2: Declaration passes but no config is added

Submit the following declaration:

{
	"$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/latest/as3-schema.json",
	"class": "AS3",
	"action": "deploy",
	"persist": true,
	"declaration": {
		"class": "ADC",
		"schemaVersion": "3.40.0",
		"id": "Pool",
		"TEST": {
			"class": "Tenant",
			"TESTAPP": {
				"class": "Application",
				"Test-AD2": {
					"class": "Address_Discovery",
					"addressDiscovery": "static",
					"serverAddresses": [
						"<IP_ADDRESS>"
					],
					"shareNodes": true
				},
				"My_pool": {
					"class": "Pool",
					"members": [
						{
							"servicePort": 8080,
							"addressDiscovery": {
								"use": "Test-AD2"
							}
						}
					]
				}
			}
		}
	}
}

Observe the following OK response:

	"results": [
		{
			"code": 200,
			"message": "success",
			"lineCount": 17,
			"host": "localhost",
			"tenant": "TEST",
			"runTime": 1347
		}

However, when checking configuration - no node is added, and the My_pool pool has no members.

Expected Behavior
According to the API Specification, in Address_Discovery there should be the ability to add a static node with either the serverAddresses or servers property and this should populate the 'Nodes' on the LTM - either in the partition given, or in /Common if the "shareNodes" option is included.
Actual Behavior
Either the declaration fails, or the declaration appears to succeed but no configuration is created.
The LTM starts streaming out the following log in the restnoded.log:
Mon, 17 Oct 2022 14:29:49 GMT - info: [f5-service-discovery: Task.js] Task ~TEST~7eAU4SMxiiKuv90R2vDmkeShPea~H2yhIjjD6RAT4ak3D failed: The following nodes are not on the BIG-IP: [{"id":"<IP_ADDRESS>"}]
Mon, 17 Oct 2022 14:29:49 GMT - fine: [f5-service-discovery: Task.js] Error: The following nodes are not on the BIG-IP: [{"id":"<IP_ADDRESS>"}]
    at executeCommand.then (/var/config/rest/iapps/f5-service-discovery/lib/TmshUtil.js:426:35)
    at tryCatcher (/usr/share/rest/node/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/usr/share/rest/node/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/usr/share/rest/node/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/usr/share/rest/node/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/usr/share/rest/node/node_modules/bluebird/js/release/promise.js:693:18)
    at Async._drainQueue (/usr/share/rest/node/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/usr/share/rest/node/node_modules/bluebird/js/release/async.js:143:10)
    at Immediate.Async.drainQueues (/usr/share/rest/node/node_modules/bluebird/js/release/async.js:17:14)
    at runCallback (timers.js:794:20)
    at tryOnImmediate (timers.js:752:5)
    at processImmediate [as _immediateCallback] (timers.js:729:5)

However, if the addressDiscovery static is used within the 'Pool' configuration, everything works fine for both serverAddresses and servers property options - example below:
{
	"$schema": "https://raw.githubusercontent.com/F5Networks/f5-appsvcs-extension/master/schema/latest/as3-schema.json",
	"class": "AS3",
	"action": "deploy",
	"persist": true,
	"declaration": {
		"class": "ADC",
		"schemaVersion": "3.40.0",
		"id": "Pool",
		"TEST": {
			"class": "Tenant",
			"Shared": {
				"class": "Application",
				"template": "shared",
				"My_pool": {
					"class": "Pool",
					"members": [
						{
							"servicePort": 8080,
							"addressDiscovery": "static",
							"serverAddresses": [
								"<IP_ADDRESS>"
							],
							"servers": [
								{
									"name": "myNode1.example.com",
									"address": "<IP_ADDRESS>"
								}
							]
						}
					]
				}
			}
		}
	}
}

is there any update on this? It's a pretty critical bug which means the address discovery static option is not available currently

@antonywm 3.44.0-1 Build available that resolves this issue.

confirmed all working perfectly now for both scenarios shown above - thanks very much for this fix as it removes a manual step now in our deployment ❤


Can repo_name and project_name be the same thing?

I was intending project name to be human readable (SELFIE or Service Year) so it can be written into README and other files. The repo name would then default to a slugified version appropriate for parent directory and GitHub repo name.

Looks like this isn't possible regardless. Closing.


Authenticate against ghcr.io

This change adds a login step that authenticates the runner to ghcr.io. This allows whomever triggers the action to use github packages as a destination for the container images.
An example run can be seen here:
https://github.com/gabriel-samfira/containerd/runs/4395940700?check_suite_focus=true
The resulting images can be viewed here:
https://github.com/gabriel-samfira?repo_name=containerd&tab=packages
Signed-off-by: Gabriel Adrian Samfira<EMAIL_ADDRESS>

I added explicit permissions to the workflow. It seems that if they are not explicitly specified, the GITHUB_TOKEN is granted the same permissions as the person that triggered it. The latest commit only grants write access to packages and read access to metadata.


network policies for certmanager

As architect we need proper network policies for certmanager

Linking to lsc-sde/lsc-sde#38


Add a "rotation" feature to the line meter

A few weeks ago I started designing a GUI where I wanted to have a couple of line meters displaying parameters like speed, pressure and/or temperature. To better organize the information I would like to dispose said meters as 90 degrees arcs in the four corners of the rectangular display.
Unfortunately the line meter object does not expose any way to achieve such result. I submitted this request to the forum (https://forum.littlevgl.com/t/how-to-display-a-rotated-line-meter/1064/2) and I've been told to bring it here.
As I suspected the feature is extremely easy to implement. All I had to do was add a rotation field to the lv_lmeter_ext_t, set it with an ad-hoc function and then take it into account when drawing the lines:
diff --git a/src/lv_objx/lv_lmeter.c b/src/lv_objx/lv_lmeter.c
index 78f7a8e6..b7721100 100644
--- a/src/lv_objx/lv_lmeter.c
+++ b/src/lv_objx/lv_lmeter.c
@@ -168,6 +168,21 @@ void lv_lmeter_set_scale(lv_obj_t * lmeter, uint16_t angle, uint8_t line_cnt)
     lv_obj_invalidate(lmeter);
 }

+/**
+ * Set the rotation settings of a line meter
+ * @param lmeter pointer to a line meter object
+ * @param angle angle of rotation (relative to the northen axis)
+ */
+void lv_lmeter_set_rotation(lv_obj_t * lmeter, uint16_t angle)
+{
+    lv_lmeter_ext_t * ext = lv_obj_get_ext_attr(lmeter);
+    if(ext->rotation == angle) return;
+
+    ext->rotation = angle;
+
+    lv_obj_invalidate(lmeter);
+}
+
 /*=====================
  * Getter functions
  *====================*/
@@ -268,7 +283,7 @@ static bool lv_lmeter_design(lv_obj_t * lmeter, const lv_area_t * mask, lv_desig

         lv_coord_t x_ofs  = lv_obj_get_width(lmeter) / 2 + lmeter->coords.x1;
         lv_coord_t y_ofs  = lv_obj_get_height(lmeter) / 2 + lmeter->coords.y1;
-        int16_t angle_ofs = 90 + (360 - ext->scale_angle) / 2;
+        int16_t angle_ofs = ext->rotation + 90 + (360 - ext->scale_angle) / 2;
         int16_t level =
             (int32_t)((int32_t)(ext->cur_value - ext->min_value) * ext->line_cnt) / (ext->max_value - ext->min_value);
         uint8_t i;

This way I can have two line meters side by side and displaying different values, like in this screenshot:

It's a very simple feature, and by adding a new function (lv_lmeter_set_rotation) it does not even break the API. Would it be possible to add it?

Hi,
Thank you for this feature! Can you send it in a Pull Request?

Certainly!

#1264 is merged so I close this issue.
Thank you for your contribution!


Enable creating or uploading files or folders in sub folders within Project files and /data

Description
Currently, user can only upload/create files or folders to Project files, but not its sub-folder, or /data.
This PR makes it possible for users to create/upload files or folders to the last selected (sub) folder, within Project files and /data.
Checklist

[x] The PR branch is set up to merge into dev instead of master.

What do you think of moving the file manager views into its own module in services/orchest-webserver/app/app/views?

What do you think of moving the file manager views into its own module in services/orchest-webserver/app/app/views? It would be a great chance to add a top-level docstring that maps out what's happening.

Blueprint seems like the "Flask" way of organizing views. Yet, I probably would do it in another refactoring PR.
Currently, orchest-webserver is pretty much UI-driven, e.g. /async/file-picker-tree. We probably would want to decouple the endpoint design with the UI. I would give more thought into it since it's hard to choose the right level of abstraction for BFF (because BFF itself doesn't own any resource and is constantly being changed due to the change of FE).

Touching some Python code I see. I love it!
I made a few additional comments, like about the docstrings, so you can get familiar with how we do things :+1:

I'm getting some errors related to file extension validation on nested files:

So just for clarity, the pipeline sits at the root of the project and I'm dragging in a notebook from <root>/test/abc.ipynb.

@ricklamers  Could you be more specific?

So just for clarity, the pipeline sits at the root of the project and I'm dragging in a notebook from /test/abc.ipynb.

I'm assuming that you're dragging  <root>/test/abc.ipynb into "the canvas", and I can reproduce it. If not, please elaborate the issue that you encountered.

Also got this after dragging that file out

This confuses me. Do you mean dragging a file out to <root> ? If yes, then I cannot reproduce it.

I'm assuming that you're dragging /test/abc.ipynb into "the canvas", and I can reproduce it, but this issue is already
in dev. If not, please elaborate the issue that you encountered.

Correct.

This confuses me. Do you mean dragging a file out to  ? If yes, then I cannot reproduce it.

I just meant I also got that error after performing the "drag file to canvas" operation. Sorry for the unclear language.

I found one more issue :smile:
https://www.tella.tv/video/cl1gj7xl5000009l6fp4pdiwd/view
Could be a simple line change.

tldv; when you have selected file in the file manager and you click and drag another file without holding a modifier key instead of just selecting the new file it holds the selection on the previously selected file causing multiple files to become part of the drag operation.

Thanks for catching this :-), I created a separate issue #857 for it.

@ricklamers  Added the fix for #857 .


LTC not showing in wallet

Hi I purchased ltc through simplex and it’s not reflecting in my wallet. My balance still shows zero. They said it was registered on the block chain, and it should be shown.(created from Zendesk ticket #3149) gz#3149

Agent comment from Paul Martinelli in Zendesk ticket #3149:Hi so my balance is reflecting now. But it’s not letting me send LTC to another wallet for payment. I get to the point where it says transaction will take 2.5 to 5 min, but they it just brings me back to the payment screen after I hit send.
Sent from my iPhone

On Jan 2, 2023, at 2:01 PM, Jim Flanagan (Litewallet Support<EMAIL_ADDRESS>wrote:
°°°

Agent comment from Jim Flanagan in Zendesk ticket #3149:Request #3157 "Can’t send my LTC anywhere" was closed and merged into this request. Last comment in request #3157:
Hello Paul,
I have sent your other Ticket to the Devs to see if we can troubleshoot this issue.
Please be patient.B9C69AE1-6F02-4DA1-B533-3D2581A1003F.pngC1A4AD96-EEDA-440A-860C-083F64F6B3CB.png
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:Hi Paul,
Will you tell us:

device type (Android or iOS)
Model
Litewallet version you are running.
Which country are you using Litewallet
Have you tried changing internet sources?

Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:-I'm using ios.

Iphone 14 pro max

-I've uninstalled and reinstalled the latest version
-I've synced to the blockchain twice
-I'm using litewallet from America
-I've tried cellular connection and 3 separate internet connections
At this point I'm just trying to send the crypto to my Robinhood account, and it wont even let me do that. Same thing happens. If you could help it would greatly appreciated.
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:Thanks, Paul.

Did you ever send Litecoin from the first wallet?
Did you save the 12 words from the first download?

Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:No, i was having the same problem with the first wallet. Yes i saved the 12 words from the first wallet. My balance still shows, it synced back in. I just cant send the ltc to any other wallet.
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:Well, one interesting fact is crypto wallets don't store crypto (they store keys).  You can make a clone where both devices have the same seed.
So , if you have a friend or family that has an Android or iOS device , you can just restore the 12  words there.  Just have them download Litewallet, restore using the same 12 words.
Can you do that?
Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:Hi so I downloaded it on my girlfriends iphone. The same exact thing is happening. The balance is reflecting but I can’t send it anywhere. I don’t know what the next step is.
Sent from Yahoo Mail for iPhone
On Tuesday, January 3, 2023, 4:33 PM, Kerry Washington (Litewallet Support<EMAIL_ADDRESS>wrote:
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:
So now your cloned phone doesn't work?  That's really strange.
If there is any issue with sending, its fixed by just re-syncing.
We dont have servers. Litewallet syncs directly with the Litecoin network.  So, if your phone is not syncing it means your phone database (a copy of the transactions) could be corrupted.
As I mentioned, Litewallet doesn't store Litecoin. it just keeps a copy of your seed.  The transactions you have made are a snapshot of  the history.  Sending Litecoin is you signing a transaction with your seed.
Will you send screenshots of the original and the cloned phone(s)?
Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:I only downloaded this app for a singular transaction. I already made the transaction with another source since this wouldn’t work. I only want to convert it back to cash now. It will not let me send it anywhere. On the cloned phone or this phone. When I click send, it just reverts back to the screen where you type in where you’re sending it, and nothing happens. I’ve attached the screenshots.
Sent from Yahoo Mail for iPhone
On Wednesday, January 4, 2023, 11:00 AM, Kerry Washington (Litewallet Support<EMAIL_ADDRESS>wrote:
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:

Sent from Yahoo Mail for iPhone
On Wednesday, January 4, 2023, 11:32 AM, Paul Martinelli<EMAIL_ADDRESS>wrote:IMG_0570.PNGIMG_0571.PNGIMG_0572.PNGIMG_0573.PNG
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:Is there anything that can be done at this point?
Sent from Yahoo Mail for iPhone
On Wednesday, January 4, 2023, 11:34 AM, Paul Martinelli<EMAIL_ADDRESS>wrote:IMG_0571.PNGIMG_0570.PNGIMG_0572.PNGIMG_0573.PNG
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:Hi so is anyone able to help me or is my money just lost at this point?
Sent from Yahoo Mail for iPhone
On Wednesday, January 4, 2023, 3:20 PM, Paul Martinelli<EMAIL_ADDRESS>wrote:IMG_0570.PNGIMG_0572.PNGIMG_0573.PNGIMG_0571.PNG
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:Hi Paul,
We are getting reports of an issue with the balance and are investigating.
Will you let me know:

What was your local currency?
Can you try go to Settings and change it to another currency and see if the display is still incorrect?

Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Paul Martinelli in Zendesk ticket #3149:The version of Litewallet is v.3.10.1(420). My currency is USD and I went to settings to try to change the currency to photons, lites, and LTC. It won’t send on any of them.
Sent from Yahoo Mail for iPhone
On Thursday, January 5, 2023, 1:01 PM, Kerry Washington (Litewallet Support<EMAIL_ADDRESS>wrote:
°°°

Resolved.

Agent comment from Kerry Washington in Zendesk ticket #3149:Hi Paul,
We think your issue is resolved as we saw issues with our price lookup (which is now fixed)
I'll close this ticket in the meantime.
Best!
Kerry Washington
Litewallet Team Manager
°°°

Agent comment from Kerry Washington in Zendesk ticket #3149:Hi Paul,
We think your issue is resolved as we saw issues with our price lookup (which is now fixed)
I'll close this ticket in the meantime.
Best!
Kerry Washington
Litewallet Team Manager
°°°


Update ansible operator conditions

Description of the change:
Given it is possible for a custom resource to be in error / failed state while a new reconcile process is ongoing, it is unnecessary to mark the status of previous Failure conditions to False while the reconcile loop is still running.
The failure condition will be removed when the custom resource is successfully deployed as it works today.
Motivation for the change:
The failure conditions have timestamps and are accurate as at the time of reporting. Therefore, it would be unnecessary and misleading to set the failure condition status to False before the custom resource is successfully deployed.
Checklist
If the pull request includes user-facing changes, extra documentation is required:

[x] Add a new changelog fragment in changelog/fragments (see changelog/fragments/00-template.yaml)
[ ] Add or update relevant sections of the docs website in website/content/en/docs

Closes #6560

@OchiengEd How do you feel about moving this PR to the new repository for the ansible operator logic?: https://github.com/operator-framework/ansible-operator-plugins
My thinking here is that since we are actively working to remove the ansible logic from this repository and import the new plugin library (I'm working on this in #6583) it would prevent duplication of work to transplant this to the new repo.

@everettraven Sure, we can move the PR. Don't have an opinion per se where the merge is done.
I can create a new PR in the new repo. Leaving this here until I do so

Issue has been moved to the ansible-operator-plugins repo. See https://github.com/operator-framework/ansible-operator-plugins/pull/14


set_mediaSpendName when having multiple features for one channel but only one spend

Expected Behavior
Say I have records for Facebook_clicks,Facebook_impresisons,google_clicks and google_impressions i.e
set_mediaVarName <- c("facebook_clicks","facebook_impressions","google_clicks","google_impressions").
As far as I understand, set_mediaSpendName is the spend for each record in mediaVarName, but since we get only one bill for each channel i.e one for Facebook and one for Google, we cannot divide our spend for facebook into spend for clicks and spend for impressions. Do we then just set
set_mediaSpendName <- c("facebook_spend", "facebook_spend", "google_spend","google_spend")
or how is this issue handled?

Hi, you should pick either imps or clicks, not both. They're both caused by the same spend, thus there's probably impossible or makes no sense to split the spend towards imps and clicks.
Regarding how to choose between imps and clicks, a simple matrix against your dependant variable helps

Thanks a bunch


Add monochrome tray icons

Made some quick monochrome icons and updated the module file (tray-module.ts) to point to the new icons.

Fits better overall on eOS7 than the color version.

De-crustified the monochrome read icon.


Duplicated logs when using buffer

What version of Serilog.Sinks.Elasticsearch is affected?
8.0.0
What is the target framework and operating system?

[x] 4.6.2

Current behavior?
Logs sent to Elasticsearch cluster are duplicated (triplicated or more).
Expected behavior?
Should be saved one log only per entry. Same buffer settings are working fine with version 7.1.0
Steps to reproduce the issue and if possible a minimal demo of the problem
This is my current code:
private static ILogger GetLogger()
{
    string indexName = "buffertest";

    var loggerConfig = new LoggerConfiguration()
        .MinimumLevel.Debug()
        .WriteTo.Console();

    var esSink = new ElasticsearchSinkOptions(new Uri("https://myelasticdomain.com:9200"))
    {
        AutoRegisterTemplate = true,
        AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7,
        TemplateName = indexName,
        IndexFormat = indexName + "-{0:yyyy.MM.dd}",
        ModifyConnectionSettings = c => c.BasicAuthentication("myuser", "****"),
        CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true)
    };

    // buffer
    esSink.BufferBaseFilename = $@"C:\logs\ElasticSeriLog\buffer-{indexName}";
    esSink.SingleEventSizePostingLimit = null;
    esSink.BufferFileSizeLimitBytes = 1000 * 1000 * 100; // 100 MB
    esSink.BufferFileCountLimit = 50;

    loggerConfig.WriteTo.Elasticsearch(esSink);

    return loggerConfig.CreateLogger();
}

static void Main(string[] args)
{
    Log.Logger = GetLogger();

    for (int i = 0; i < 500; i++)
    {
        var lineNumer = i + 1;
        var msgToLog = GetTextToLog();
        Log.Information("{Line}{Message}", lineNumer, msgToLog);
    }

    Console.WriteLine("Press any key to continue...");
    Console.ReadKey();

    Console.WriteLine("Flushing...");
    Log.CloseAndFlush();
}`

I have this problem too.
@gjfonte is there a way to enable a workaround in the meanwhile?

Have this problem too, only with buffer.

i've installed this think from github repository and from nuget 8.1.0-alpha0002, and didn't notice this problem. i guess we need to use until it'll fixed in next stable release.

I have this problem as well, with Elasticsearch 7.4, Serilog.Sinks.Elasticsearch 8.0.0 and Serilog 2.8.0.
I also noticed that often the logs will not get sent to ES for a while, and when they eventually get sent, each one will appear repeated several times in ES.

I have this problem as well, with Elasticsearch 7.4, Serilog.Sinks.Elasticsearch 8.0.0, Serilog 2.8.0, and .NET Core 2.2.
I also noticed that often the logs will not get sent to ES for a while, and when they eventually get sent, each one will appear repeated several times in ES.

https://www.nuget.org/packages/Serilog.Sinks.ElasticSearch/8.1.0-alpha0002
So i guess we should wait for realease with this fix

Hello,
I upgraded to the lastest version 8.1.0-alpha006, it seems the issue is still present. Anybody knows when this issue will be fix?
The number of items in the buffer file is correct, however Elastic receives the items several times for some of them.
Regards,

Same problem here. Logs not sent and/or duplicates in Elastic. Downgraded to version 7.1.0

Yap.. Same problem. Also downgraded to version 7.1.0


Update OutExample.cs with C# 7 improvement

The old existing syntax that supports out parameters should be replaced with the new improved syntax in C# 7.
Title
Update OutExample.cs in with C# 7 improvement syntax
Summary
The old existing syntax that supports out parameters is replaced with the new improved syntax in C# 7.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

The text preceding this example is:

An output parameter is used for output parameter passing. An output parameter is similar to a reference parameter except that the initial value of the caller-provided argument is unimportant. An output parameter is declared with the out modifier. The following example shows the use of out parameters.

Considering that it doesn't make sense to talk about the "initial value" with the new syntax (since there can't possibly be one), should the text be updated? Though I'm not sure what exactly should the new text say, especially considering that this is "Tour of C#", so the text should be short.

@svick, sorry I didn't see your comment when I approved this PR, but the text does need to be changed. I'll address it in a separate PR.


IllegalArgumentException: Unable to load native library

Hi,
I'm trying to run this code on my old Asus phone (Android 6.0.1). App window immediately closes, logcat shows this:
07-17 18:13:46.638 10951 10951 D AndroidRuntime: Shutting down VM
07-17 18:13:46.638 10951 10951 E AndroidRuntime: FATAL EXCEPTION: main
07-17 18:13:46.638 10951 10951 E AndroidRuntime: Process: org.yourorg.cnfgtest, PID: 10951
07-17 18:13:46.638 10951 10951 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{org.yourorg.cn
fgtest/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app/org.yourorg.cnfgt
est-1/lib/arm/libcnfgtest.so
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:24
35)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:249
5)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread.access$900(ActivityThread.java:154)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1348)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:153)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5472)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.j
ava:726)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-17 18:13:46.638 10951 10951 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Unable to load native library: /da
ta/app/org.yourorg.cnfgtest-1/lib/arm/libcnfgtest.so
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.NativeActivity.onCreate(NativeActivity.java:182)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:6323)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1
108)
07-17 18:13:46.638 10951 10951 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:23
88)

My setup:
export ANDROID_HOME=~/android/android-sdk-linux
export NDK=~/android/android-ndk-r21d

Can you check if this file exists on your phone /data/app/org.yourorg.cnfgt est-1/lib/arm/libcnfgtest.so via Android Studio's DeviceFile Explorer or adb shell? It probably doesn't, maybe the build logs can shed some light on why that is.

Unfortunately my phone is not rooted. I cannot access to  /data/app directory.
I installed the same package on my other phone running Android 8.0.0, and demo app run perfectly. Weird.

Unfortunately my phone is not rooted. I cannot access to /data/app directory.

Neither is mine, but I still can access the data directories, at least of the apps I built and installed from source. Maybe this is different in Android versions, but be aware that you might still be able to got to your target even if ls gives you a Permission denied for /data and /data/app.

I installed the same package on my other phone running Android 8.0.0, and demo app run perfectly. Weird.

That could be explained by different ABIs (processor architectures), there are 4 currently supported and 3 more deprecated so it's quite possible your two phones don't have the same. Given your phone models it should be possible to research what ABIs you need and maybe find the reason it fails for the Asus.
Please post the output of your make command. Probably best to do a make clean first to be sure we see the whole build.

For x86 and x86_64 you'd need to edit these lines: https://github.com/cnlohr/rawdrawandroid/blob/master/Makefile#L93-L97

Build log:
mkdir -p makecapk/lib/arm64-v8a
/home/arek/android/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android29-clang -ffunction-sections -Os -fdata-sections -Wall -fvisibility=hidden -Os -DANDROID -DAPPNAME=\"cnfgtest\" -I./rawdraw -I/home/arek/android/android-ndk-r21d/sysroot/u
sr/include -I/home/arek/android/android-ndk-r21d/sysroot/usr/include/android -fPIC -I. -DANDROIDVERSION=29 -m64 -o makecapk/lib/arm64-v8a/libcnfgtest.so test.c android_native_app_glue.c -L/home/arek/android/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/sysroot/
usr/lib/aarch64-linux-android/29 -Wl,--gc-sections -s -lm -lGLESv3 -lEGL -landroid -llog -shared -uANativeActivity_onCreate
test.c:32:7: warning: 'ASensorManager_getInstance' is deprecated [-Wdeprecated-declarations]
        sm = ASensorManager_getInstance();
             ^
/home/arek/android/android-ndk-r21d/sysroot/usr/include/android/sensor.h:557:17: note: 'ASensorManager_getInstance' has been explicitly marked deprecated here
__attribute__ ((deprecated)) ASensorManager* ASensorManager_getInstance();
                ^
1 warning generated.
mkdir -p makecapk/lib/armeabi-v7a
/home/arek/android/android-ndk-r21d/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi29-clang -ffunction-sections -Os -fdata-sections -Wall -fvisibility=hidden -Os -DANDROID -DAPPNAME=\"cnfgtest\" -I./rawdraw -I/home/arek/android/android-ndk-r21d/sysroo
t/usr/include -I/home/arek/android/android-ndk-r21d/sysroot/usr/include/android -fPIC -I. -DANDROIDVERSION=29 -mfloat-abi=softfp -m32 -o makecapk/lib/armeabi-v7a/libcnfgtest.so test.c android_native_app_glue.c -L/home/arek/android/android-ndk-r21d/toolchains/llvm/prebui
lt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/29 -Wl,--gc-sections -s -lm -lGLESv3 -lEGL -landroid -llog -shared -uANativeActivity_onCreate
test.c:32:7: warning: 'ASensorManager_getInstance' is deprecated [-Wdeprecated-declarations]
        sm = ASensorManager_getInstance();
             ^
/home/arek/android/android-ndk-r21d/sysroot/usr/include/android/sensor.h:557:17: note: 'ASensorManager_getInstance' has been explicitly marked deprecated here
__attribute__ ((deprecated)) ASensorManager* ASensorManager_getInstance();
                ^
1 warning generated.
mkdir -p makecapk/assets
echo "Test asset file" > makecapk/assets/asset.txt
rm -rf temp.apk
/home/arek/android/android-sdk-linux/build-tools/24.0.0/aapt package -f -F temp.apk -I /home/arek/android/android-sdk-linux/platforms/android-29/android.jar -M AndroidManifest.xml -S Sources/res -A makecapk/assets -v --target-sdk-version 29
Found 1 custom asset file in makecapk/assets
Configurations:
 (default)

Files:
  assets/asset.txt
    Src: () makecapk/assets/asset.txt
  mipmap/icon.png
    Src: () Sources/res/mipmap/icon.png
  values/strings.xml
    Src: () Sources/res/values/strings.xml
  AndroidManifest.xml
    Src: () AndroidManifest.xml

Resource Dirs:
  Type mipmap
    mipmap/icon.png
      Src: () Sources/res/mipmap/icon.png
  Type values
    values/strings.xml
      Src: () Sources/res/values/strings.xml
Including resources from package: /home/arek/android/android-sdk-linux/platforms/android-29/android.jar
applyFileOverlay for drawable
applyFileOverlay for layout
applyFileOverlay for anim
applyFileOverlay for animator
applyFileOverlay for interpolator
applyFileOverlay for transition
applyFileOverlay for xml
applyFileOverlay for raw
applyFileOverlay for color
applyFileOverlay for menu
applyFileOverlay for mipmap
Processing image: Sources/res/mipmap/icon.png
    (processed image Sources/res/mipmap/icon.png: 100% size of source)
    (new resource id icon from mipmap/icon.png #generated)
Creating 'temp.apk'
Writing all files...
      'AndroidManifest.xml' (compressed 63%)
      'assets/asset.txt' (not compressed)
      'res/mipmap/icon.png' (not compressed)
      'resources.arsc' (not compressed)
Generated 4 files
Included 0 files from jar/zip files.
Checking for deleted files
Done!
unzip -o temp.apk -d makecapk
Archive:  temp.apk
  inflating: makecapk/AndroidManifest.xml
 extracting: makecapk/assets/asset.txt
 extracting: makecapk/res/mipmap/icon.png
 extracting: makecapk/resources.arsc
rm -rf makecapk.apk
cd makecapk && zip -D9r ../makecapk.apk .
  adding: res/mipmap/icon.png (deflated 8%)
  adding: resources.arsc (deflated 72%)
  adding: assets/asset.txt (stored 0%)
  adding: AndroidManifest.xml (deflated 63%)
  adding: lib/armeabi-v7a/libcnfgtest.so (deflated 53%)
  adding: lib/arm64-v8a/libcnfgtest.so (deflated 59%)
jarsigner -sigalg SHA1withRSA -digestalg SHA1 -verbose -keystore my-release-key.keystore -storepass password makecapk.apk standkey
   adding: META-INF/MANIFEST.MF
   adding: META-INF/STANDKEY.SF
   adding: META-INF/STANDKEY.RSA
  signing: res/mipmap/icon.png
  signing: resources.arsc
  signing: assets/asset.txt
  signing: AndroidManifest.xml
  signing: lib/armeabi-v7a/libcnfgtest.so
  signing: lib/arm64-v8a/libcnfgtest.so
>>> Signer
    X.509, CN=example.com, OU=ID, O=Example, L=Doe, ST=John, C=GB
    [trusted certificate]

jar signed.

Warning:
The signer's certificate is self-signed.
rm -rf cnfgtest.apk
/home/arek/android/android-sdk-linux/build-tools/24.0.0/zipalign -v 4 makecapk.apk cnfgtest.apk
Verifying alignment of cnfgtest.apk (4)...
      50 META-INF/MANIFEST.MF (OK - compressed)
     446 META-INF/STANDKEY.SF (OK - compressed)
     910 META-INF/STANDKEY.RSA (OK - compressed)
    2082 res/mipmap/icon.png (OK - compressed)
    2239 resources.arsc (OK - compressed)
    2596 assets/asset.txt (OK)
    2685 AndroidManifest.xml (OK - compressed)
    3600 lib/armeabi-v7a/libcnfgtest.so (OK - compressed)
   19869 lib/arm64-v8a/libcnfgtest.so (OK - compressed)
Verification succesful
rm -rf temp.apk
rm -rf makecapk.apk
-rw-rw-r-- 1 arek arek 36445 lip 14 21:01 cnfgtest.apk

The build log looks good to me, not sure if I can remote-debug this any further. You may not have the latest version of rawdrawandroid and and Android sdk/ndk tools, so you might want to try updating that. I don't have high hopes here though.

Feel free to reopen, sorry I couldn't help any more here.


failing test for issue "Nullable properties not seen as nullable by TypeReflector"

This contains a failing test to highlight the issue when checking a class with a nullable property that was mapped by TypeReflector

Thanks! I added a fix for it in your branch before merging :)


Can I use this plugin to call createClient

I want to use the supabase functionality to do authentication.
The tutorial on supabase site was for react, I thought it could directly work for gatsby as well. But I believe the npm package  @supabase/supabase-js, does not work for a gatsby project.
I realise this issue might be unrelated to the project, but wanted to check if you could provide a solution. Thanks.

Hi @vedant14! Can you tell me more about your use case and what you have tried so far?

Hi @vedant14 , are your routes client only? Check this out:
https://www.gatsbyjs.com/docs/how-to/routing/client-only-routes-and-user-authentication/

Thanks for your interest in this project. This plugin is moving into the Gatsby User Collective and this repo will be archived. Please open an issue in that repository, submit a PR if you'd like to see this implemented, or Join us on Discord if you have questions!


feat(generator): reflective accessor generation

This PR aims to create type-safe reflective (MethodHandle-based) accessors to NMS classes, just like NMSMapper.
Plans
Generation logic should be placed into a generator-accessor module, which can generate both Java and Kotlin code using JavaPoet and KotlinPoet + their interop module. An annotation processor for the interface-annotation approach should use this logic. Runtime parts, like reflection and methodhandles, should be in module generator-accessor-runtime, which generated code will depend on.
No custom version specification should be possible, all names will be matched against the newest available version for that specific class/member - you can't define a method accessor that was named x in version y.
Every approach should leave raw MethodHandles easily accessible to allow for manual optimization on hot paths - no wrapper creation.
Interface-annotation approach
Users can define an interface with an annotation defining:

the namespace, with a default value that looks up names based on the friendliness index
the class name
the static members (method, fields)
the constructors

Methods can be annotated with a special annotation defining:

the namespace, with a default value that looks up names based on the friendliness index
the name, with the default value being the name of the annotated method
whether it is a getter/setter (for binding to record, normal getters/setters and fields)

Special annotations:

for binding a getter for the wrapped NMS object

All annotated classes should have an implementation generated using an annotation processor, static members and constructors must be accessed through the raw generated type, but methods and fields should be further referenced by the defined interface. Only annotated methods should be overridden in the implementation, so accessor consumers can create default sugar methods in the interface.

is it worth to abstract this once again for a Java and KSP annotation processor?

Kotlin supports Java annotation processors via kapt, however it's in maintenance mode - future is uncertain

Gradle plugin/CLI approach (just like NMSMapper, uncertain)
Class wrappers will be defined in the Gradle buildscript/a configuration file and subsequently generated. Not sure whether this will be implemented, since an annotation processor is more versatile.

I'd personaly love to see version-specific requests, since without it there will be methods/fields/classes which won't be possible to match. (therefore, we won't be able to use this in SLib)
Also specifying the version can lead to more consistent behaviours when new mapping is added (I remember few times a new method with same name like some old method has broken the generated accessors)

as per our conversation on Discord, I'll hold off on version-specific mapping declarations until a case where it is definitely necessary arises - I don't think it's necessary due to the nature of the new matching algorithm


nsc: 2.10.1 -> 2.10.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/nats-io/nsc/releases.
meta.description for nsc is: Tool for creating NATS account and user access configurations
meta.homepage for nsc is: https://github.com/nats-io/nsc
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 2.10.2 with grep in /nix/store/yimsj1dk014s0mnmp22q0slmx3gmglwr-nsc-2.10.2
found 2.10.2 in filename of file in /nix/store/yimsj1dk014s0mnmp22q0slmx3gmglwr-nsc-2.10.2

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

nsc

Instructions to test this update (click to expand)

Either download from the cache:
nix-store -r /nix/store/yimsj1dk014s0mnmp22q0slmx3gmglwr-nsc-2.10.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nixpkgs-update-cache.nix-community.org/' \
  --option trusted-public-keys '
  nixpkgs-update-cache.nix-community.org-1:U8d6wiQecHUPJFSqHN9GSSmNkmdiFW7GW7WNAnHW0SM=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The nixpkgs-update cache is only trusted for this store-path realization.)
For the cached download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A nsc https://github.com/r-ryantm/nixpkgs/archive/83c72c7305c29d6ea6d023568484e8a51d77ecdf.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/83c72c7305c29d6ea6d023568484e8a51d77ecdf#nsc

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/yimsj1dk014s0mnmp22q0slmx3gmglwr-nsc-2.10.2
ls -la /nix/store/yimsj1dk014s0mnmp22q0slmx3gmglwr-nsc-2.10.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review

x86_64-linux

:white_check_mark: 1 package built:

nsc

Maintainer pings
cc @cbrewster for testing.

[!TIP]
As a maintainer, if your package is located under pkgs/by-name/*, you can comment @NixOS/nixpkgs-merge-bot merge to automatically merge this update using the nixpkgs-merge-bot.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 368009

aarch64-darwin

:white_check_mark: 1 package built:

nsc


Singleton support

Add a singleton wrapper class and use this for global mutexes

This is an alternative and more generic version of #2051

@mbed-bot: TEST
HOST_OSES=ALL
BUILD_TOOLCHAINS=ALL
TARGETS=KL25Z,LCP1768,K64F

Don't merge yet, I need to test this more tomorrow.

@mbed-bot: TEST
HOST_OSES=ALL
BUILD_TOOLCHAINS=ALL
TARGETS=KL25Z,LCP1768,K64F

This patch is ready to go from my side

CC: @geky, @0xc0170

Looks good to me :+1:
Will be useful for working around static c++ shenanigans.

@mbed-bot: TEST
HOST_OSES=ALL
BUILD_TOOLCHAINS=ALL
TARGETS=KL25Z,LCP1768,K64F

@sg-: LGTM : D

@sg-, @0xc0170: LGTM?

@mbed-bot: TEST
HOST_OSES=Windows
BUILD_TOOLCHAINS=ALL
TARGETS=KL25Z,LCP1768,K64F

@mbed-bot: TEST
HOST_OSES=windows
BUILD_TOOLCHAINS=ALL
TARGETS=KL25Z,LCP1768,K64F

LGTM

@bogdanm review pls

@c1728p9 Please can you provide answers (update the commit message), to clarify why this class shall be POD, and thus can't be RAII class, as asked above.
How it is intended to be used, what problems does it solve (use in the global scope, linker elimination of global objects, etc). What;s the intention for singleton_mutex, can I use it for my own classes?

Sorry if I'm missing something, but it looks to me like in this PR SingletonPtr is used to protect from concurent calls to PlatformMutex's constructor. That I understand. What I don't understand is why you don't protect the constructor of PlatformMutex directly. My worry is that if you start doing SingletonPtr<SomethingThatIsNotPlatformMutex> you're likely to run into race conditions, since you're using a single mutex to protect all possible singletion instantiations.

Hi @bogdanm, thanks for the detailed review.
The SingletonPtr class does the following:

Allow global classes to be garbage collected if they are unused
Protect global objects from being created twice due to a race condition on the first access

The PlatformMutex class could be protected directly, and this was done in #2051.  That PR has been closed and replaced by this singleton PR since it solves the problem in a more generic way - singletons can be created for any class using the SingletonPtr class.
There is not a race condition when creating objects other than mutexes,.  Furthermore this is an intended use case.  For example this is planned to be used for LWIP - https://github.com/ARMmbed/mbed-os/pull/429.  Using a single mutex to protect everything does not lead to race conditions.  It could lead to lock contention if two threads try to access a singleton for the first time at the same time.  This is not a big concern though, since any subsequent accesses would bypass this mutex.

It probably works if you manage to constrain it to be used only on global objects. What about something like this:
struct B {};
struct A {
    A() {
        _b = get_B();
    }
    B *_b;
};

A *get_a() {
    static SingletonPtr<A> local;
    return local->get();
}

B *get_b() {
    static SingletonPtr<B> local;
    return local->get();
}

Wouldn't this lead to lock contention?

There would only be lock contention if two threads where trying to access A and/or B at the same time.  Assuming this happened, the thread that was able to acquire the singleton lock first would be responsible for initializing the object it was trying to access. The other thread would need to wait for this to complete before it could get a handle to the same object.  All subsequent accesses would bypass the mutex and there would be no contention.
Also, since mutexes can be recursively acquired, there is no possibility of deadlock in your example.  If a thread calls get_a() for the first time and locks it, it will hold the lock until both A and B are fully initialized.

Thanks for the explanation. I wasn't aware that RTX mutexes are recursive by default (it's not easy to find that information),, hence the confusion. I believe this will work.

This PR is ready from my end
cc @sg-, @0xc0170


Inconsistent date format of createdAt and lastSignedInAt at UserMetadata between firebase-admin and function-trigger data

My environment

Operating System version: irrelevant
Firebase SDK version: check below
Firebase Product: auth, functions
Node.js version: 14.18.1
NPM version: 6.14.15

"firebase": "^9.2.0",
"firebase-admin": "^9.12.0",
"firebase-functions": "^3.15.7",

The problem
The UserMetadata class defines the type of creationTime and lastSignInTime as a UTC string. However, the actual date format returned by the admin SDK differs from the format returned by the cloud function onCreate date format, even though both claim to implement the same interface.
The Admin SDK seems to use the RFC7231 format (Thu, 28 Oct 2021 08:53:26 GMT), where as the Firebase Functions use the ISO format (2016-12-15T19:37:37.059Z).
The Functions Specs mention that they use the same UserRecord as the Firebase Admin SDK
https://firebase.google.com/docs/reference/functions/providers_auth.userbuilder#user:-userrecord
=> https://firebase.google.com/docs/reference/functions/providers_auth#userrecord

The UserRecord passed to Cloud Functions is the same UserRecord that is returned by the Firebase Admin SDK.

and the Admin SDK defines the date as an UTC string: https://github.com/firebase/firebase-admin-node/blob/master/src/auth/user-record.ts#L300
This is also reflected in the test suites:
Admin SDK: https://github.com/firebase/firebase-admin-node/blob/master/test/integration/auth.spec.ts#L240
Firebase Functions: https://github.com/firebase/firebase-functions/blob/master/spec/v1/providers/auth.spec.ts#L179
I am kindly requesting this to be unified, since it is very confusing to use. Preferably with the ISO format.
Relevant Code:
Admin SDK:
const user = await admin.auth().getUser(uid)
console.log(user.metadata.creationTime)
// Thu, 01 Jan 1970 00:00:00 UTC

Firebase Authentication trigger:
exports.test = functions.auth.user().onCreate((user) => {
console.log(user.metadata.creationTime)})
// 2017-02-02T23:06:26.124Z

@bojeil-google WDYT?
firebase-functions implement our UserMetadata interface, but doesn't use the same timestamp format that we use in the Admin SDK. Where should we fix this?

Hey @hiranya911, I wasn't aware of this. We should reach out to the cloud functions folks (I don't have visibility to their side of things). They receive the data from us but I am not sure how they reformat (or whether they use it as is).

They seem to be using it as is. @lahirumaramba @inlined can you take a look?

The Admin SDK exposes timestamps in UTC date strings and this is consistent across the existing Admin APIs. Taking a quick glance at the functions code it looks like firebase-functions usually expose timestamps in ISO format. I think it might help if both SDKs align on the same date formatting.
@inlined @taeold do you know where we handle the date strings in functions code?

Looks like this is the LOC you're looking for. Firebase Auth is sending a google.protobuf.Timestamp down the wire, which is encoded as an ISO string in JSON. We simply expose this directly. I agree this is a bug, and we can add some ugly date logic here to fix.
The only gotcha is that I'm not sure if this fix should be held back for a major revision since it could be a pretty breaking change.


Further document RestoreSources

The current documentation for adding "packageSources" wasn't helpful for our .net core 2.1 project.
It looks like the way to go is by adding the following key to the csproj
<RestoreSources> $(RestoreSources);https://newUrl/ </RestoreSources>
Would it be possible to update this documentation directly or link to an existing page explaining this solution?
FWIW here are a couple of existing projects on github that have already adopted the RestoreSources csproj solution

https://github.com/PankajPatro/dotnetcoreblazorexp/blob/master/Blazor-dev/src/Microsoft.AspNetCore.Blazor.Templates/content/BlazorContent.CSharp/BlazorContent.CSharp.csproj
https://github.com/logikuma1024/Konomi/blob/master/Konomi/Konomi.Server/Konomi.Server.csproj
https://github.com/kristapsstrals/restaurant-kata/blob/master/Restaurant/Restaurant.csproj
https://github.com/bjorndaniel/cloudbattleships/blob/master/Battleships.BlazorUI/Battleships.BlazorUI/Battleships.BlazorUI.csproj
https://github.com/mkfilipiuk/2048/blob/master/game2048.Client/game2048.Client.csproj

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

ID: 0ea1390e-db36-6759-3095-ebab9d546fdb
Version Independent ID: ca88d8c6-0515-a267-aac3-a508c54157ab
Content: nuget.config File Reference
Content Source: docs/reference/nuget-config-file.md
Product: nuget
GitHub Login: @karann-msft
Microsoft Alias: karann

Not eligible for docs-day.

@nkolev92 Is there any source code or further explanation of RestoreSources?
Semicolon-delimited list of package sources.
Best I can find is a few related items:
https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#restore-properties
https://github.com/NuGet/Home/issues/6045
Is this just a property to define a source in a .csproj rather than nuget.config?

Is this just a property to define a source in a .csproj rather than nuget.config?

Yes, pretty much.
This takes precedence over NuGet.Config.
It's also how dotnet restore --source works.


Strange behaviour from the EVP_PKEY_decrypt function

I recently made a script that encrypts and decrypts data with RSA with the EVP API.
It consists of 2 major functions : encryption and decryption (key pair are generated each run).
The encryption part works fine, but it is when i use the decryption part that the EVP_PKEY_decrypt function have a strange behaviour  : The parameter outlen is set to 0 after the function call.
According to the function manual page :

[...] The data to be decrypted is specified using the in and inlen parameters. If out is NULL then the minimum required size of the output buffer is written to the *outlen parameter.

Here is the decryption function that i'm using :
int RSADecrypt(
    EVP_PKEY * pkey,
    char * ciphertext,
    char ** buffer,
    unsigned int modulus){

    EVP_PKEY_CTX * ctx;
    char * decoded_buffer;
    size_t output_length;

    if (!(ctx = EVP_PKEY_CTX_new(pkey, NULL)))
        return ERROR_CTX_CREATION;
    if (!EVP_PKEY_encrypt_init(ctx))
        return ERROR_CTX_INIT;

    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_padding_mode", "oaep");
    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_oaep_md", "sha256");
    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_mgf1_md", "sha256");

    decoded_buffer = OPENSSL_malloc(modulus + 1);

    if(!decoded_buffer){
        EVP_PKEY_CTX_free(ctx);

        return -1;
    }

    // Base64 decoding
    if (EVP_DecodeBlock((unsigned char *) decoded_buffer, ciphertext, modulus) <= 0){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return ERROR_BASE64_ENCODE;
    }

    // Get the final output length first
    if (!EVP_PKEY_decrypt(ctx, NULL, &output_length, decoded_buffer, modulus)){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return ERROR_CTX_DECRYPTION;
    }

    printf("%i\n", output_length); // Displays 0

    *buffer = OPENSSL_malloc(output_length + 1);

    if (*buffer == NULL){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return -1;
    }

    if (EVP_PKEY_decrypt(ctx, *buffer, &output_length, decoded_buffer, modulus) <= 0){
        OPENSSL_free(*buffer);
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return ERROR_CTX_DECRYPTION;
    }

    *buffer[output_length] = '\0';

    OPENSSL_free(decoded_buffer);
    EVP_PKEY_CTX_free(ctx);

    return 0;
}

The main function :
int main(void){
        EVP_PKEY * pkey = EVP_RSA_gen(2048);

	char string[] = "HelloWorld";
	char * encrypted_buff;
	char * decrypted_buff;

        // ... The encryption part, working fine ...
        // The encrypted, base64 encoded string is in encrypted_buff

	// This is the decryption part

        int retval = RSADecrypt(pkey, encrypted_buff, &decrypted_buff, 256);

       if (retval != 0){
            free(encrypted_buff);
            free(decrypted_buff);
            printf("retval : %i\n", retval);
            return -1;
       }

	free(encrypted_buff);
        free(decrypted_buff);

	return 0;
}

I am certainly doing something wrong here, but i'll be looking forward for fixes.
Thanks in advance for your answers.

I expect that the problem is that you initialized the context for an encrypt operation rather than a decrypt operation.  Doing so sets the ctx->operation value to EVP_PKEY_OP_ENCRYPT.  When you then call EVP_PKEY_decrypt, it compares the set operation to EVP_PKEY_OP_DECRYPT, and, when it doesn't match, returns -1.
The documentation for EVP_PKEY_decrypt:
https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_decrypt.html
Indicates that a failure causes the function to return either 0 or a negative value, but you only check for zero in the code above.  As such you skip your error condition, and continue on as if things had worked properly.
I imagine that if you change the call to EVP_PKEY_encrypt_init to be EVP_PKEY_decrypt_init, things will work better.
Hope that helps!

I successfully managed to fix my errors with a different approach.
I will not post the final function since it is now irrelevant to the issue. But if someone encounter the same problems as me, i'm posting here the fixes i brought to the RSADecrypt() function from the first message:
int RSADecrypt(
    EVP_PKEY * pkey,
    char * ciphertext,
    char ** buffer,
    unsigned int * out_len,
    unsigned int modulus){

    EVP_PKEY_CTX * ctx;
    char * decoded_buffer;
    size_t output_length;

    if (!(ctx = EVP_PKEY_CTX_new(pkey, NULL)))
        return -1;
    if (!EVP_PKEY_decrypt_init(ctx))
        return -2;

    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_padding_mode", "oaep");
    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_oaep_md", "sha256");
    EVP_PKEY_CTX_ctrl_str(ctx, "rsa_mgf1_md", "sha256");

    decoded_buffer = OPENSSL_malloc(modulus + 1);

    if(!decoded_buffer){
        EVP_PKEY_CTX_free(ctx);

        return -3;
    }

    // Base64 decoding
    if (EVP_DecodeBlock((unsigned char *) decoded_buffer, ciphertext, modulus) <= 0){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return -4;
    }

    // Get the final output length first
    if (!EVP_PKEY_decrypt(ctx, NULL, &output_length, decoded_buffer, modulus)){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return -5;
    }

    *buffer = OPENSSL_malloc(output_length + 1);

    if (*buffer == NULL){
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return -3;
    }

    if (EVP_PKEY_decrypt(ctx, *buffer, &output_length, decoded_buffer, modulus) <= 0){
        OPENSSL_free(*buffer);
        OPENSSL_free(decoded_buffer);
        EVP_PKEY_CTX_free(ctx);

        return -5;
    }

    *out_len = output_length;

    OPENSSL_free(decoded_buffer);
    EVP_PKEY_CTX_free(ctx);

    return 0;
}

New main function instructions :
int main(void){
        EVP_PKEY * pkey = EVP_RSA_gen(2048);

	char string[] = "HelloWorld";
	char * decrypted_buff;
        unsigned int decrypt_size = 0;
        int retval = 0;

        // ... Encryption part.
        // encrypted_buffer is a buffer containing the encrypted data.

        retval = RSADecrypt(pkey, encrypted_buffer, &decrypted_buffer, &decrypt_size, 2048 / 8);
	decrypted_buffer[decrypt_size] = '\0';

        if (retval != 0){
            free(decrypted_buff);

            printf("RSADecrypt failed with : %i\n", retval);
            return -1;
        }

        printf("> %s (%i characters were written)\n", decrypted_buffer, decrypt_size);

        free(decrypted_buff);

	return 0;
}

Note that i did not included the encryption part for simplicity matters, and since it ships base64 decoding in the process it may not be suitable for every implementations.

I expect that the problem is that you initialized the context for an encrypt operation rather than a decrypt operation. Doing so sets the ctx->operation value to EVP_PKEY_OP_ENCRYPT. When you then call EVP_PKEY_decrypt, it compares the set operation to EVP_PKEY_OP_DECRYPT, and, when it doesn't match, returns -1.
The documentation for EVP_PKEY_decrypt: https://www.openssl.org/docs/manmaster/man3/EVP_PKEY_decrypt.html Indicates that a failure causes the function to return either 0 or a negative value, but you only check for zero in the code above. As such you skip your error condition, and continue on as if things had worked properly.
I imagine that if you change the call to EVP_PKEY_encrypt_init to be EVP_PKEY_decrypt_init, things will work better.
Hope that helps!

Thank you for your answer, i used a different approach on my side as described in my message.


status_emoji: Add accessibility attribute to emoji element.

Fixes: #19821
After reading through the conversation on this issue in PR #20138, I decided to try a difference approach. This PR adds html attributes that includes the name of the emoji to the template for rendering status emoji. These attributes add accessibility tooltips that show the name of the emoji when there is a mouseover event. This is consistent with how the emoji label is technically implemented for emoji inside of messages.
The benefits to this approach are the accessibility consideration, consistency, and being relatively simple. The downside is limited control over the rendering of the tooltip itself.

Screenshots and screen captures:

Self-review checklist

[x] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[x] Explains differences from previous plans (e.g., issue description).
[x] Highlights technical choices and bugs encountered.
[x] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[x] Each commit is a coherent idea.
[x] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[x] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[x] Strings and tooltips.
[x] End-to-end functionality of buttons, interactions and flows.
[x] Corner cases, error conditions, and easily imagined bugs.

@manila thanks for working on this!  I appreciate the clean commit message.
I think there's an open question of whether we want to go with an HTML title, which this does correctly, or something else. My current thinking is a bit subtle:

If we implement one of the proposed settings to show statuses inline in the right sidebar, it's possible that we'll want something like this; but it feels really awkward to have hovering over an emoji display two tooltips with different styling in the right sidebar.

I think we need to talk as a community in #design about a plan that makes sense here; so possibly you should work on other issues in the meantime.

I agree that this would be an awkward UX (tooltip in a tooltip) and not ideal. I'll look for and claim another issue in the meantime as suggested. Thanks!

Closing in favor of #24976.


Worker#stop

Currently calling redis.close doesn't break redis.blpop.

Solved with redis.client_unblock


Feature/vs2961/backend category

Tracking Info
Resolves #21 and #15
Changes
What changes did you make?
We made two new routes (get by category name, get by visualization name) and their corresponding services.
Testing
Called endpoints using Postman to test whether the category and the visualizations returned properly
Confirmation of Change
Call the endpoints using any method to get the data!

Will leave off on user's service layer for now, as that will be added and tuned in the backend-auth branch.