Register new devices on join

This is a feature request for the Backend.
Currently, only devices that are registered can be accepted when joining the network. This requires all devices to be known, including their DevEUI. This might not be practical in large scale deployments.
Therefore, it should be possible for devices to register on join. To avoid join challenges to be sent to all Handlers that registered the AppEUI with a Broker, there should be a first-come-first-serve registration of AppEUI. We might leverage the current unique registration of AppEUI/DevEUI but then with a blank DevEUI. If the Broker doesn't find a specific AppEUI/DevEUI combination for the join, it can challenge a Handler that has the AppEUI registered with a DevEUI as catchall.
On Security
When allowing any DevEUI to join for an AppEUI and the AppKey leaks, we basically enable spoofing of existing devices and registering new devices. This means that the application needs its own mechanism to identify the device. Many IoT platforms already support this with a device registry. Also, when introducing this feature, we should inform the application owners of the potential risk.
Also, we should restrict the AppEUIs that can register devices anonymously to a range in the Foundation's EUI block. Otherwise, people can abuse The Things Network to send conflicting join accepts for any join request as AppEUIs are public. We can configure the Brokers with an environment variable for a range.

Happy to see the request.
I hope it can be implemented soon.
rob

This is a proposal for an implementation of this:

User opt-in activation: The user activates the option through the console, with ttnctl, or directly with the API.

The user instructs the handler to allow on-join registration for a specific AppEUI. The handler stores this decision in the app (through db storage, in the current implementation). An AppKey called AppKey1 is either generated for those devices, or it is specified by the user.
The handler sends a new device registration request to its broker B1, for an app with a blank DevEUI.
The broker then retransmits this to the Network Server NS1 for storage.

First join request scenario: Considering a new device, with DevEUI and AppEUI.

When configuring the device, the user fills in the AppEUI with the right AppKey.
Router transmits to brokers the activation request, with the device's correct DevEUI and AppEUI.
The brokers interrogate their NS - B1 interrogates NS1. NS1 looks for devices in its storage that have the same AppEUI, and that have either the same DevEUI, or an empty DevEUI. It finds a registered device with a blank DevEUI. It thus generates a copy of that device, but with the correct DevEUI. This copy, called D1, is processed and sent to the broker, as if it was already registered.
The join procedure can then continue as usual.

The uplink and downlink procedure doesn't change, given that starting from the first join, the new device has been stored as a regular device.

Opt-out procedure: When the user opt-outs of this option, the handler asks for removal of the device of the app with the empty DevEUI. The devices generated in the meanwhile stay in the network server's storage.

One thing to take into account, if it isn't already implemented, will be to prevent users from registering devices with empty DevEUIs, to prevent them from activating this option by accident.
I'm going to start on this implementation, feel free to comment if anything seems off.

Hello.  I believe that what you said above does indeed address this case, but just to rephrase from the perspective of an app admin/developer.  (I get confused because "user" is something I call the person who is using our devices.):

The app admin/developer in this case implicitly acknowledges that they are prioritizing "ease of registration" over other factors, and implicitly acknowledges that they are going to diligently "device validity checking" at a higher level within their app.  For any device that becomes suspect at the app level, the app or its admin will use ttnctl or the api to disable that device.

The app admin/developer in this case explicitly indicates this by setting some checkbox in the console, ttnctl, or through the api.  I'll refer to this as the "Auto-Registration" flag.

Once, up-front, prior to device manufacturing, the app developer uses the ttn console to assign or fetch an AppEui+AppKey pair to be used for mass-manufactured devices.

Upon first and successive joins, the mass-manufactured devices present the tuple of (AppEui, AppKey, DevEui) to TTN.

When receiving this tuple for an unregistered device, provided that the app admin/developer had set that "Auto-Registration" flag, the device will self-register using that DevEui as the device ID.

I hope this makes sense.

This makes sense, thank you for rephrasing it from this perspective. There will probably be some pedagogy to do for the app administrators in the console, so that they are aware of the good practices revolving around this functionality (an explicit guide on how to use this function to register devices, that they should disable suspect devices...).

These are all very good points, Eric.
I've really just thought of the "enable/disable" feature as something that could be used by an app to put something into a questionable state while they evaluate the situation.  If a device were exhibiting DOS behavior it might be good to spare the mqqt or http integration the pain of dealing with the flood.
Not to get too far off-track, but the more I've thought about these issues, the more I keep coming to the conclusion that the following would be a reasonable architecture.  Forgive me if this is already what you'd been thinking about:

As today, devices would be mass-produced and join OTA with a hard-wired AppEui/AppKey burned into the firmware, using HwEui or some other Eui as a unique device ID.

An app written to TTN’s “suggested architectural guidelines” would dedicate an AppEui to unauthenticated devices – referred to herein as the “StagingAppEui” – and would create another AppEui for authenticated devices referred to as the “ProductionAppEui”.  Devices using the StagingAppEui (as is obvious in the UplinkMessage) might be given limited functionality as compared to those using the ProductionAppEui.

When it decides to shift that device into a more “trusted” state, the app would then generate, and use a TTN API to register, an AppKey and potentially even a new DevEui, to be used with the ProductionAppEui.  The app would call ttn.RegisterDevice(ProductionAppEui, AppKey, DevEui) to prepare TTN to accept an incoming device join.

Then, the app – in its own app protocol – would send the device that new tuple of (ProductionAppEui, AppKey, DevEui).  The device would store it into nvram and to be used for all future joins.

At any later time, based on questionable device behavior, the app could change its mind by using ttn.EnableDevice(AppEui, AppKey, DevEui, fEnabled) or ttn.DeregisterDevice(AppEui, AppKey, DevEui).  If behavior ever warranted, it could even send it a new re-registration tuple to move it to a “QuarrantineAppEui”.

Yes, if someone steals a device they can spoof themselves by using that device's identity tuple.  But this is an unavoidable attack vector: even with an integrated secure element if someone steals a device they can desolder and repurpose its microcontroller while maintaining authentication.
Just a thought.

I understand better what you meant regarding the "enable/disable" feature, and it makes sense as a first reaction feature before evaluating the situation for the app as a whole. @htdvisser @johanstokking, do you have any thoughts on this feature?
After reading your architecture proposition carefully, it seems to me like an interesting implementation architecture of a trust system in case of on-join registration. A such registration process would allow the app administrator to keep track of trusted devices based on their AppEUI - making a clear distinction between devices that have established a certain level of trust, and others. Elements that would require specific attention during this process, in my opinion, would be:

Using efficient encryption during the 3rd step, to avoid interception of the new AppKey.
An app with questionable behaviour might not execute the re-registration step evoked in the 5th step toward the QuarantineAppEUI, or even back to the StagingAppEUI. This should be assumed by the app administrator and developers, and kept track of - with a device registry, for example.

Agreed.
I'm thinking that this scheme would be even more useful if it went something like this:
A. Whenever creating a new app on the service, TTN would allow me to identify the app as an "Automatic Device Registration" app.  As part of this, TTN would secretly create, for its own use, a special "AutoAppKey" public/private key pair.
B. When first joining an app with that app's AppKey, the device would specify an AppKey of 0. This would tell TTN that the app is in an automatic registration mode.  TTN would auto-register the device, but would add a new flag to The UplinkMessage data structure called "Authenticated Device", set to false. All inbound traffic from any device presenting an AppKey of 0 on join would be perfectly valid but would have this flag set to false in uplink messages.
B. At its option, the app could then ask TTN, at its API, to generate: DevAppKey := TTN.GenerateDevAppKey(myApp, DevEui)
This app key would be generated by TTN by internally doing Encrypt(myApp.AutoAppKey.PrivateKey, Marshal(myApp.AppKey, DevEui, RandomSalt))
C. The app would then return this DevAppKey to the device on the downlink channel.  The device would save this in NVRAM.
D. The device would then rejoin TTN, using the same AppKey and DevEui that it had used previously, but using this DevAppKey instead of 0.
E. Any server throughout or even outside TTN, of course, can then validate the DevAppKey on the rejoin by using its own Decrypt(myApp.AutoAppKey.PublicKey, DevEui).  After the rejoin with this AppKey, the "AuthenticatedDevice" flag would be set to true.
F. If you were to support an Enable and Disable feature to an app, again it would be done as TTN.EnableDevice(myApp.AppKey, DevEui, fEnable).  Deregistration need not be implemented in TTN as this is better handled at the app level, given that it could always just auto-reregister.
The advantage to this scheme, as opposed to the one that I suggested above, is that it only requires a single AppKey to be managed by the app, has less network traffic, and is secure.

Thanks for the input gentlemen! If I understand correctly, there are two separate issues here; automatically registering new devices on join, and sending a new key to a device. I think we can implement the former simply, and see what the LoRa Alliance TC thinks about the latter.
For the simple implementation of this issue, I agree with the user flow as described by @rayozzie https://github.com/TheThingsNetwork/ttn/issues/425#issuecomment-289842102
In TTN, this would be implemented as follows:

The Handler registers the combination AppEUI + empty DevEUI on the Broker/NS. The combination of AppEUI and DevEUI is unique, so registering with an empty DevEUI is basically claiming the AppEUI. Remember you can add any AppEUI to your application on a first-come-first-serve basis

The Handler registers the combination of AppEUI + empty DevEUI in its own registry, with the common AppKey

Whenever a Broker receives a join, it first queries the NS whether there's a device with the AppEUI and DevEUI present. If so, follow current flow. If not, see if there's a registration with AppEUI and blank DevEUI present. If so, forward to the Handler as normal (including key check)

When the Handler receives a join with an empty DevEUI and it has the right key, it registers a new device on the Broker with the DevEUI, and registers the new device in its own registry with the DevEUI and AppKey, and completes the join as normal

Hi, I just tried to OTA my device with an DEV EUI of all zeros. Unfortunately it does not seem to work. So should this actually already work? If, so, it would be nice to mention it also here: https://www.thethingsnetwork.org/docs/devices/registration.html

An all-zero DevEUI is not a valid EUI (by definition), so you can not use that

ok, what would I need to use then to achieve the behaviour discussed here?

@vanthome please use ttnctl devices register on-join ...:
$ ttnctl devices register on-join --help
ttnctl devices register on-join can be used to register a device template for on-join registrations.

Usage:
  ttnctl devices register on-join [Device ID Prefix] [AppKey] [flags]

Hello @johanstokking ,
this doesen't seems to work:
PS C:\Users*\Downloads> .\ttnctl-windows-amd64.exe devices register on-join demo B78906******
CA1FDD9**********
INFO Using Application                        AppEUI=70B3D57****** AppID=*****
WARN On-join registration does not follow LoRaWAN best practices. Unless you implement additional security
WARN measures, it may corrupt your entire application if even one of your devices gets compromised.
INFO Discovering Handler...                   Handler=ttn-handler-eu
INFO Connecting with Handler...               Handler=eu.thethings.network:1904
FATAL Could not register Device                error=Could not set device on Handler: Invalid Device: Invalid Device: Invalid LoRaWANDevice: DevEUI not valid: can not be empty source=Wrap: /go/src/github.com/TheThingsNetwork/ttn/utils/errors/errors.go:222
PS C:\Users****\Downloads>
Why?
Thank You.

Hi @neolinux, you already reported this in #702.


add datasetter for date and fourier

Addresses #400

:books: Documentation preview :books:: https://pymc-marketing--405.org.readthedocs.build/en/405/

WIP. Will add some tests for the different scenarios that were described

Also think that this is still missing the preprocess call

Still working through the tests as removing the mixins requires a lot of changes 😢 However, the new interface should be somewhat stable.
I can keep the mixins and just use the transformers that are within to support new data if that is more desirable. I'd appreciate any feedback and requests

Will continue this off of the branch that @cetagostini is working on


Dropdownmenü / Dark-Mode not working

Describe the Bug
Just noticed, that the Menü which normally appears by clicking on the top right user-panel wont appear, actually just nothing happens.

I upgraded to php 8.1 about 2 months ago, but it just happend last weak, so i am not sure if this change is regarded to that issue.
Also, since i updated to latest Version (in hope to fix this issue), i noticed, i cannot switch to the dark-mode setting aswell.

This is also not working.
Steps to Reproduce

Log-in to Bookstack

Try open user-menu (top-right corner)

Log-in to Bookstack

Open Settings>Customization

Try to set settings for dark-mode

Expected Behaviour
In Case of the user-menu, i expect that the menu opens, as it always did.
In case of the dark-mode settings, the system should change to darkmode and let me specify the color-options.
Screenshots or Additional Context
As i am not sure, if this is related to the php-upgrade which happend 2 months ago, here is my laravel.log-file. But the latest entry is from december, so i guess this is not helpful.
laravel.zip
Browser Details
Opera (latest version) - Also tried, Firefox, Chrome and Edge -> Same result
Exact BookStack Version
23.01
PHP Version
8.1
Hosting Environment
Ubuntu 22.04
Apache2.4
php8.1
Local VPS, hosted on NAS-System.

I can't replicate this issue on a Synology NAS.

Any idea on how to check logs for this issue?
Also: I rebooted the server, issue persists.
May i am missing a php-module. Which are needed (or recommended) for running bockstack?
Currently, i have installed the following:

@towerplease Any chance your instance is behind Cloudflare?

@ssddanbrown Yes, its running behind nginx-proxy-manager and cloudflare proxy.
Known issue with a caching-setting?

@towerplease In cloudflare try turning off "Rocket loader"

@ssddanbrown Thanks!
I created a page-rule in cloudflare to disable "Rocket loader" on the subdomain i have bookstack running. After clearing cache, the dropdown works fine!
Thank you!
Issue solved.


Incorrect panel top position with getBoundingClientRect

Description
The #536 PR attempted to fix a display issue, but this seems to be not working in every case. Sometimes it positions correctly, most of the time it doesn't.
Result panel displayed is displaying in random positions if the page is scrollable.
Reproduction
Steps

Go to codesandbox
Select index.html
Set an arbitrary height +/ margin on the container so we can scroll down

Scroll a little bit
Click the autocomplete input, the results panel will be displayed in random positions

Preview →
Expected behavior
The results panel should appear below the autocomplete input field.
Environment

OS: Windows 10
Browser: Chrome  90.0.4430.212
Autocomplete version: 1.0.1

Thanks for the report!
We're currently working on a fix for this—it'll be shipped during the week.

Hey,
Thanks for the super quick fix!
 document.body.scrollTop seems to be working inconsistently (sometimes it just calculates 0, sometimes returns the correct position) in Chrome for me.
There is a stackoverflow post regarding scrollTop being deprecated
I adjusted the code and by using this one is working perfectly on my end!
Solution:
var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
var top = scrollTop + containerRect.top + containerRect.height;

Thanks guys!
Keep up the great work

Thanks again @deresatom. I addressed this in #595.


metrics: seperate metrics with source scope for txn command

ref: https://github.com/pingcap/tidb/issues/41203
Add source scope for several metrics.
The grafana change result would be posted latter, related PR would be opened in the tidb repo.

And may change the implementation of KVTxn.isInternal and KVSnapshot.IsInternal to inherit IsInternal from RequestSource.
func (r *RequestSource) IsInternal() bool {
	if r == nil {
		return false
	}
	return r.RequestSourceInternal
}

@you06
There's a method wrapped in https://github.com/tikv/client-go/blob/master/util/request_source.go#L64, I think it's better to check   nil first and void using nil references.

@

There's a method wrapped in https://github.com/tikv/client-go/blob/master/util/request_source.go#L64, I think it's better to check nil first and void using nil references.

Yes the nil check is required, what I mean is to avoid making string and check it, we can check RequestSource.RequestSourceInternal directly if possible. The function IsInternalRequest is used when we have request context, the request source is formatted as a string in it.

@you06
Got it, I've changed the util.IsRequestSourceInternal implementation to use the boolean RequestSourceInternal directly.


Implement ejection for conflicting signatures.

This could be complicated - needs thought about how to implemented.  How to store evidence of conflicting, sending evidence to other nodes.   Current ejection evidence is provable by protocol state, and this is not, so we need to work through how to realize this.
Mark a node for ejection (consensus), other nodes need to agree - need to make finality signatures visible at multiple layers.

According to @fizyk20 this has been removed from the scope of Condor.
cc: @SaiProServ

Removed from the scope of Condor / 2.0.0.
Housekeeping: Removing the sprints, assignment and leaving it in the backlog.


Add format & download to module screen

The goal of this action is to make:
npm i
npm run prettier:format

before downloading the project

We need to think more, because npm i will download lot of libs into node_modules and it's not a good idea to zip and download all this big folder

Yep, we'll have to filter the node_modules folder in the zip


Are we open to adding OTLP endpoint support to containerd-runhcs-shim-v1.exe?

Hey all,
Looking to see if we are willing to support OTLP endpoints for the shim. I would be happy to contribute the work if its something the maintainers would be willing to accept. I know that we currently use tracing via ETW but its honestly very hard to get these logs outside of the Windows ecosystem without conversion along the way. I would like to add a shim-opt to set the OTLP endpoint and if set instead have the exporter write to that stream. This is the same support that containerd added a while back and would enable a single node listener for the OTLP logs and could then correlate all of the activity. Let me know your thoughts.
Thanks,
Justin

Should have added: https://github.com/containerd/containerd/blob/main/docs/tracing.md

I don't have any issues with this, especially if upstream already supports it. @msscotb and @kevpar thoughts?

@jterry75 Yeah I think that would be good!

Dealio

I guess we don't get access to the containerd tracing/export config without some containerd-side changes. Is that the plan, to avoid duplicating config options? Can we export "current span" from containerd when it calls shim APIs, or is that not really the right model?
Or maybe I'm misunderstanding/not seeing the code, and containerd's tracing support includes OTLP ingestion from shims that it'll then include in its own export to the OTel Collector/Agent. That doesn't seem to fit my understanding of the general distributed tracing model, but I've only recently been looking at OTel specifically, migrating my mental model over from OpenCensus feeding Jaeger Agent.
Also, (maybe off-topic but adjacent) for the non-shim case, e.g. layer manipulation by the containerd snapshotter, I recall that hcsshim generates spans using opencensus, but nothing currently attempts to capture them so they are lost. I've "borrowed" the logrus hook in the hcsshim testsuite for the containerd snapshotter testsuite on occasional, but if that was also converted to OTel, those traces might come through containerd's existing OTel tracer for free.
Although I don't know if the containerd test suite exposes those traces usefully at the moment anyway. In contrast with hcsshim's tests, containerd hooks logrus to capture logs into the traces rather than logging traces out via logrus. And I dread to think what both hooks active at once would do.
That's assuming that's desirable to containerd. Nothing in containerd currently generates spans except whatever auto-instrumentation is being applied to grpc calls (as noted in the docs) but I don't know if that's "because we haven't instrumented things yet" or "because we don't want to generate a lot of spans".


Fix: requireEnoughFunds was being passed a seed in some commands

Description of proposed changes
This was causing some commands to fail when checking for funds in distribute-rewards, set-keys and unbond. Was found when working on the CLI integration tests.

Practical tips for PR review & merge:

[ ] All GitHub Actions report PASS
[ ] Newly added code/functions have unit tests

[ ] Coverage tools report all newly added lines as covered
[ ] The positive scenario is exercised
[ ] Negative scenarios are exercised, e.g. assert on all possible errors
[ ] Assert on events triggered if applicable
[ ] Assert on changes made to storage if applicable

[ ] Modified behavior/functions - try to make sure above test items are covered
[ ] Integration tests are added if applicable/needed

Codecov Report

Merging #1235 (da31663) into dev (284fc8e) will not change coverage.
The diff coverage is 0.00%.

@@           Coverage Diff           @@
##              dev    #1235   +/-   ##
=======================================
  Coverage   69.36%   69.36%
=======================================
  Files         101      101
  Lines       11901    11901
  Branches       97       97
=======================================
  Hits         8255     8255
  Misses       3646     3646

Files Changed
Coverage Δ

scripts/cc-cli/src/commands/distributeRewards.ts
0.00% <0.00%> (ø)

scripts/cc-cli/src/commands/setKeys.ts
0.00% <0.00%> (ø)

scripts/cc-cli/src/commands/unbond.ts
0.00% <0.00%> (ø)

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

Merged as part of #1230


'An error occurred in Selector - ReferenceError: builder is not defined' when running test that using a Selector in Page class

What is the Current behavior?
The code runs up until it's suppose to click on a Selector that exists in a Page class. It crashes.
What is the Expected behavior?
The Selector should be clicked with no issue.

Project Structure:
Availble with yarn add (internal): MainTestFramework #imports TestCafe
MyProject
	node_modules
	package.json
	test
		__tests__
			sampleTest.js # imports pages from local-framework/pages
		local-framework # has MainTestFramework as a depenency
			node_modules
			package.json
			pages # imports Selectors from MainTestFramework (which imports TestCafe and exports Selectors)
			utils

	dist # Transpiled to run tests. Created after a build
		test
			__tests__
				sampleTest.js
			local-framework
				node_modules
				package.json
				pages
				utils

Run Test:
To run code:
testcafe chrome ./MyProject/dist/test/__tests__/sampleTest.js

Your complete test report:
```
 1) - Error in fixture.beforeEach hook -
      An error occurred in Selector code:
  ReferenceError: builder is not defined

  Browser: Chrome 73.0.3683 / Mac OS X 10.14.4

     25 |var accountId = 'xxxxxxxxx';
     26 |
     27 |var setup = async function setup(t) {
     28 |    await _BaseTestCase2.default.beforeEach(t, configuration, [settings]);
     29 |    await _BasePage.BasePage.goToHomePage(t, accountId);
   > 30 |    await t.click(dashboard.createButton);
     31 |    await form.clickStartOver(t);
     32 |    await t.click(form.friendsObjectiveButton).click(form.photosButton);
     33 |};
     34 |
     35 |// Pages

     at click (/Users/../../../../../__tests__/sampleTest.js:30:13)

</details>

### Your Environment details:

* testcafe version:                   0.21.1
* node.js version:                    v10.13.0
* command-line arguments:  			  testcafe chrome /Users/../../../../../__tests__/sampleTest.js --skip-js-errors
* browser name and version: 		  Chrome 73
* platform and version:          	  macOS 10.14.4

This information is not sufficient to reproduce the issue. Please provide us a working project which demonstrate the issue and your test code file.

Found the issue. It was another local issue. Thanks!

Found the issue. It was another local issue. Thanks!

I'm attempting to execute a Rendr App function in the client window (to change a user's state), and getting the same error when calling the ClientFunction:
const _changeUserState = ClientFunction(() => {
    return App.get('currentUser').set('login_state', 'someState');
});

await _changeUserState();

Can you explain what you did wrong that caused the "builder not defined error"?

My issue was from using the global testcafe instead of the local testcafe to run my code. There were different 'testcafes' available to something broke somewhere.

Ahh ok. Thanks for clarifying.


docs: Update git-guide with new/updated tools.

I'm unsure about adding tools/clean-branches to the docs, but if you feel it won't be a problem, maybe add a better sample run of the command as I did not have enough branches to produce substantial output.
Continuation of #5156

@aero31aero: This looks good to me! :)

@aero31aero remember to post a commit when you update a PR and want another review -- GitHub doesn't send an automatic notification.

Merged, thanks @aero31aero and @eeshangarg!


Saves metadata by uploading blobs rather than pushing whole images

This has the advantage that we don't need the manifesto<metadata_type> tag for each piece of metadata.
The downside is that this uses the Registry API directly, which requires passing in the username and password (in params or env vars)

LGTM

Closed by mistake.


Add cross-platform support

Hey @cyrusbehr, I have successfully used your project on Windows 10, and I am eager to contribute to this project.
The project is useful, but it is not convenient when I integrate it into my project. To make it more user-friendly, I plan to modify the CMakeLists.txt and some functions. If you are okay with these changes, I will clean up my code and submit a pull request.
The compilation environment is as follows:

Visual Studio 2017/2022
C++ 11
CUDA 11.8
cudnn <IP_ADDRESS>
OpenCV 4.7.0
TensorRT <IP_ADDRESS>

I conducted separate tests for semantic segmentation and object detection. Only the semantic segmentation using INT8 presision failed. You can find more details in the YOLOv8-TensorRT-CPP project's issue.
By the way, I am not a native English speaker. This issue may contain grammar errors. If there are any parts that are difficult to understand or if there are any mistakes, please let me know. This can also help me improve my English.

Hi there, yes you are more than welcome to contribute, I will give you credit in the readme as a collaborator. Please open up a PR

I was in a rush when I used it previously, so now I need to take some time to complete the code cleanup.

For sure, take your time.

Hey, any updates on this?

Yes, but I have been really busy with work these days, so I have not had the time to do thorough testing and write documentation. Perhaps I can submit a PR first and work on these tasks later？

Going to close this issue this the PR is up: https://github.com/cyrusbehr/tensorrt-cpp-api/pull/19
I still need to review the PR and integrate the changes.


Refactor update_tags method to use runtime api

Summary
The runtime api endpoint for updating job tags is now available
Details and comments

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

-8 of 13 (38.46%)  changed or added relevant lines in 3 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-2.6%) to 35.966%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

qiskit_ibm_provider/api/clients/runtime.py
2
3
66.67%

qiskit_ibm_provider/api/rest/program_job.py
3
4
75.0%

qiskit_ibm_provider/job/ibm_circuit_job.py
0
6
0.0%

Files with Coverage Reduction
New Missed Lines
%

qiskit_ibm_provider/job/ibm_circuit_job.py
1
49.81%

Totals

Change from base Build<PHONE_NUMBER>:
-2.6%

Covered Lines:
2427

Relevant Lines:
6748

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

5 of 13 (38.46%)  changed or added relevant lines in 3 files are covered.
1 unchanged line in 1 file lost coverage.
Overall coverage decreased (-2.6%) to 35.966%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

qiskit_ibm_provider/api/clients/runtime.py
2
3
66.67%

qiskit_ibm_provider/api/rest/program_job.py
3
4
75.0%

qiskit_ibm_provider/job/ibm_circuit_job.py
0
6
0.0%

Files with Coverage Reduction
New Missed Lines
%

qiskit_ibm_provider/job/ibm_circuit_job.py
1
49.81%

Totals

Change from base Build<PHONE_NUMBER>:
-2.6%

Covered Lines:
2427

Relevant Lines:
6748

💛  - Coveralls


DS - Add Icon util or component for aligned styling

Description
There are several components in our component library which require similar styling to keep icons aligned with text on the same line when font scaling is adjusted. We should consider creating either a function or component that accepts fontScale and lineHeight and returns either a ViewStyle or possibly an entire component with text.
Acceptance Criteria

[x] Create an Icon util or component that returns centered Icon styling or an Icon component with corresponding text
[ ] Apply this new util/component to Checkbox, Alert, and Link

Accessibility Requirements

[ ] Test that Icon remains centered for all modified components when font is increased/decreased

Adding a comment that this was mostly completed as part of #573


window attention problem

Hello, this is great work. I have some doubts about window attention. In the dit3d_window_atten.py code, window attention does not seem to reduce the dimension. Your code executes window attention first, but then reshape, isn't this equivalent to no execution?

I encountered the same problem. I found that when my configuration file uses --window_block_indexes '0,3,6,9', no matter which DiTBlock layer it is, its window_size variable is always 0, and it will never enter the line of code with window_partition; When I forcibly change the window_size to a non-zero value, an error will occur in the function of window_unpartition, simply because the 0th dimension changes back to B.

Hi, I encountered a similar issue as the above. It seems there is a mismatch in the documentation between what the window_unpartition function expects and what is passed to it in the window attention DiTBlock.
The window_unpartition expects input with the first dimensions as B*num_windows, as seen below.

But the input given to the function does not match this shape, as seen below. (the attn block results in the same B, X, Y, Z, -1 shape)

Given that the batch size is the actual first input to the window_unpartition, you can encounter the error seen by @sysuKaiYang for small batch sizes, which for me occurs at the end of my training loop.
I looked at the ViTDet paper but I did not see it explained why this dimension mismatch would be correct.
Is this mis-match expected? How did you avoid such errors during your training?
And if this mis-match is not expected, do you have a feeling over the correct way to resolve this error?


[Bugfix] Sentry Issue Nullpointer Exception for setRatedIfNotExceeded() on result object

Checklist

[ ] I tested all changes and all related features with different users (student, tutor, editor, instructor, admin) on the test server https://artemistest.ase.in.tum.de.

Motivation and Context

This PR address an issue occurred on sentry ARTEMIS-10Y .
Description

In the past, there were several occurrences of Null Pointer Exceptions because the method setRatedIfNotExceeded() method on a result object was called with a submission date that was null. The error occurred in the assessment of FileUploadExcercise.
The method actually checks if a calculated result after a manual assessment will be graded or not. This depends on the submission date. If the submission is equal or before the due date, or if there is no exercise due date, the assessed submission result will be graded (a batch "graded" appears), otherwise, it will not be graded ("not graded" batch).
Within the described checks, submissionDate.isBefore(dueDate) will fail, if the submission date is null.
I was not able to reproduce the exception, i.e. to assess a submission without a submission date being set. I guess this occurred due to some database inconsistencies and should not appear again.
As a prevention for the Null Pointer Exception, I suggest, that we do a non-null check before the checks.
In the case of the submissionDate being null, the result.rated is not set to true and the batch "not graded" appears (similar to the case when the submission was made after the due date).
With the induced situation of calling setRatedIfNotExceeded() with a submissionDate of null, this is the result:

Steps for Testing

As we cannot reproduce the situation causing the problem, we should ensure that the expected behavior is still working with the proposed changes.

Log in to Artemis
Navigate to Course Administration
Create/Search a FileUploadExcercise with due date set in the past
As a student of the respective course, make a submission for that exercise (you will be informed, that the submission is late and therefore not graded but you can submit anyways)
As an instructor, assess the submission
As a student, check if the feedback is the following and the course statistics do not change:

Log in to Artemis
Navigate to Course Administration
Create/Search a FileUploadExcercise with due date in the future
As a student of the respective course, make a submission for that exercise
(Optionally, set the due date of the exercise to a point in time after the submission and before "now" -> during assessment, the exercise was already finished)
As an instructor, assess the submission
As a student, check if the feedback on the submission, there should not be a "not graded" batch, the feedback and the result should be visible (as in the screenshot) and the point should account for the overall course statistics.

I think this is the same issue as described in #3389, so here you can find one way to reproduce this behavior. For Team-Exercises the Tutor can start assessing the submission even if the team just pressed on start Exercises and did not upload any file. This is an inconsistency with non-team exercises, here students who just start the exercises but submit nothing are not gradable (there won't be a button for this in the assessment dashboard). This PR only fixed the exception, but I don't think this issue can be closed after this. We should also make sure that such participations without any submission cannot be assesd in team exercises.

I think this is the same issue as described in #3389, so here you can find one way to reproduce this behavior. For Team-Exercises the Tutor can start assessing the submission even if the team just pressed on start Exercises and did not upload any file. This is an inconsistency with non-team exercises, here students who just start the exercises but submit nothing are not gradable (there won't be a button for this in the assessment dashboard). This PR only fixed the exception, but I don't think this issue can be closed after this. We should also make sure that such participations without any submission cannot be assesd in team exercises.

Ah I did not know that! Perfect, thanks, that is very useful information! I'll have a look into it. I think it's worth fixing not only the symptoms of the problem but the reason as well and disallow the assessment of exercise with no submission be not showing the button as you described.

Addressed in more detail with #3459 -> fixing the root cause for the error instead of addressing the symptoms


UI enhancemnet

Description
Made changes in each page :
Structured the cards properly giving a page rigid and proper look.
Then in "Introduction to open source' page, introduced a horizontal scrolling feature as option to scrolling by clicks increasing user experience.
Category

[ ] User Interface

Related Issue

Fixes #460
Checklist

[ ] I have followed the CONTRIBUTING guide
[ ] The name of the resource is spelled correctly (if applicable)
[ ] The link to the resource is working (if applicable)
[ ] The resource is added in the correct format (if applicable)
[ ] I have tested changes on my local computer (if applicable)

Nice changes, @shaileshkaliya.
However, the current structure in the 'Introduction to Open Source' page looks better to me than the one that you suggested. So, I'll like to keep it for now. Hence, I'm reverting the changes made to the corresponding files to match it with the current structure.
Besides that, the other changes look good.


WFLY-4418: fixes ManagedScheduledExecutorService wrapping of ManagedTask...

...s

@stuartwdouglas ^^

Linux with security manager Build 1018 is now running using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8

Linux Build 6039 is now running using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8

Windows Build 1153 is now running using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8

Linux with security manager Build 1018 outcome was SUCCESS using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8
Summary: Tests passed: 843, ignored: 319 Build time: 0:05:05

Linux Build 6039 outcome was SUCCESS using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8
Summary: Tests passed: 2933, ignored: 314 Build time: 0:47:16

Windows Build 1153 outcome was FAILURE using a merge of 2e6d77b797c3e9fbc91f8eb7ff7672e9d58ab0e8
Summary: Tests failed: 2, passed: 2931, ignored: 314 Build time: 0:50:28
Build problems:
Failed tests detected
Failed tests
org.jboss.as.test.clustering.xsite.XSiteSimpleTestCase.testPutRelayedToBackups: java.lang.AssertionError: expected:<200> but was:<500>
	at org.junit.Assert.fail(Assert.java:88)
	at org.junit.Assert.failNotEquals(Assert.java:743)

org.jboss.as.test.manualmode.ejb.client.cluster.EJBClientClusterConfigurationTestCase.testServerToServerClusterFormation: javax.ejb.EJBException: java.lang.IllegalStateException: EJBCLIENT000029: No cluster context available for cluster named ejb
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:188)
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:279)


addMany: add quiet config option

To do: document the option in Plop

I like this feature, but I wonder if quiet is the right name for this. What do you think about having a verbose property that defaults to true for backward compatibility?

Both are fine with me :) I'll update that and open a PR on the Plop repo for documentation


Update examples to use new design and focus states

This includes:

the focus state of the 'open in new link' window
the tabs interface used on desktop breakpoints
the accordion interface used on mobile and tablet breakpoints

Closes #960

Screenshots - Desktop

Screenshots - Desktop (custom colours)

Screenshots - Mobile

You can preview this change here:
Built with commit<PHONE_NUMBER>34234422f648ce9df6c1b2171f7590
https://deploy-preview-983--govuk-design-system-preview.netlify.com

I think this is ready to review 👍


Seems rows mode can not output summary table

Yes, that is correct. The rows mode was introduced by a Logseq user via a PR and I think he did not program the summary in as he does not use it.
Feel free to put up a PR!


Image_Url and Language Fix

Hello Sir,
There was a small issue with the code the Language endpoint was given the Image_Url variable and so the Image_url was fetched as the language.
Please accept this pull request !!!!

I second this, just a small typo fix will make things working again!


 This file probably should not be generated for editable installs. It's inaccurate because the state of the code in an editable install is not static. A more minor issue is that the file itself is not technically editable; the only way it gets updates is by rerunning the build command, and there's no safe way to symlink the file at install time due to the nature of wheel building going through zip files.

Resolved in #9.


crash after a re-modifying a file previously edited using UABEA

Latest Version of UABEA
Game: Shin Megami Tensei III Nocturne HD Remaster
when modifying a file, like changing a texture and saving it. the game will load fine with the modifications working as intended but if you try to modify the same file again using UABEA. like change another texture that is inside the file. after clicking save in UABEA it will crash and if you try to load the game it will be in a infinite loading screen
log:
Application: UABEAvalonia.exe
CoreCLR Version: 5.0.1321.56516
.NET Version: 5.0.13
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.IOException: The process cannot access the file 'C:\Program Files (x86)\Steam\steamapps\common\smt3hd\smt3hd_Data\StreamingAssets\PC\f011' because it is being used by another process.
at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
at System.IO.File.OpenWrite(String path)
at UABEAvalonia.MainWindow.SaveBundle(BundleFileInstance bundleInst, String path) in D:\a\UABEA\UABEA\UABEAvalonia\MainWindow.axaml.cs:line 653
at UABEAvalonia.MainWindow.AskForLocationAndSave() in D:\a\UABEA\UABEA\UABEAvalonia\MainWindow.axaml.cs:line 431
at UABEAvalonia.MainWindow.MenuSave_Click(Object sender, RoutedEventArgs e) in D:\a\UABEA\UABEA\UABEAvalonia\MainWindow.axaml.cs:line 197
at System.Threading.Tasks.Task.<>c.b__140_0(Object state)
at Avalonia.Threading.AvaloniaSynchronizationContext.<>c__DisplayClass5_0.b__0() in //src/Avalonia.Base/Threading/AvaloniaSynchronizationContext.cs:line 33
at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority) in //src/Avalonia.Base/Threading/JobRunner.cs:line 37
at Avalonia.Win32.Win32Platform.WndProc(IntPtr hWnd, UInt32 msg, IntPtr wParam, IntPtr lParam) in //src/Windows/Avalonia.Win32/Win32Platform.cs:line 271
at Avalonia.Win32.Interop.UnmanagedMethods.DispatchMessage(MSG& lpmsg)
at Avalonia.Win32.Win32Platform.RunLoop(CancellationToken cancellationToken) in //src/Windows/Avalonia.Win32/Win32Platform.cs:line 198
at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken) in //src/Avalonia.Base/Threading/Dispatcher.cs:line 61
at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args) in //src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 126
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 175
at UABEAvalonia.Program.Main(String[] args) in D:\a\UABEA\UABEA\UABEAvalonia\Program.cs:line 47

Exception Info: System.IO.IOException: The process cannot access the file 'C:\Program Files (x86)\Steam\steamapps\common\smt3hd\smt3hd_Data\StreamingAssets\PC\f011' because it is being used by another process.

Are you overwriting the original file or modifying the file while the game is open?

I'm modifying the file that i edited using uabea again, and no i am not doing this with the game opened

I can't reproduce on the latest build. Here's what I did:

Open bundle "test.unity3d"
Click info
Make a modification, save, and close
Save the bundle as a new file "test.new.unity3d"
Click info again
Make another modification, save, and close
Save the bundle again as "test.new.unity3d"
UABEA does not crash

I did as you told, and it worked, but if i close UABEA after doing the first modification, and then open it again do the second one it will crash

Still can't reproduce. Are you sure you aren't replacing the file you opened with the new bundle?
If it helps, the latest build will prevent you from doing this now.

this build fixed my issue, thank you


Intermittent error ELIFECYCLE on Electron

Hi
I'm playing with Electron and I'm trying to use WebSocket-Node on it.
Not really special yet just:
var WebSocketClient = require('websocket').client
var client = new WebSocketClient()

The code is also attached.
Occasionally I get an ELIFECYCLE error when exiting my Electron application:
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\\Projects\\nodejs\\node.exe" "C:\\Users\\jgo\\AppData\\Roaming\\npm\\node_modules\\npm\\bin\\npm-cli.js" "start"
npm ERR! node v4.5.0
npm ERR! npm  v3.10.6
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>start: `electron main.js`
npm ERR! Exit status<PHONE_NUMBER>

This is caused by an Win32 exception occurring on Electron
[09:43:27] Exception: 0000071A
[09:43:27] Exception: C0000005.ACCESS_VIOLATION
[09:43:27] Unhandled: C0000005.ACCESS_VIOLATION
[09:43:27] Dump 1 initiated: C:\Projects\sample\electron.exe_160825_094327.dmp

The analysis of the dump file shows
FAULTING_THREAD:  0000f3e8

BUGCHECK_STR:  APPLICATION_FAULT_BAD_INSTRUCTION_PTR_SOFTWARE_NX_FAULT_INVALID_SHUTDOWN

PRIMARY_PROBLEM_CLASS:  BAD_INSTRUCTION_PTR_INVALID_SHUTDOWN

DEFAULT_BUCKET_ID:  BAD_INSTRUCTION_PTR_INVALID_SHUTDOWN

LAST_CONTROL_TRANSFER:  from 776f95c1 to 6d6c389e

STACK_TEXT:
WARNING: Frame IP not in any known module. Following frames may be wrong.
0031fb7c 776f95c1 6d6dccb8 7efde000 7efdd000 <Unloaded_bufferutil.node>+0x389e
0031fb98 77719eee 005f1418 5967ed87 777c20c0 ntdll!RtlProcessFlsData+0x57
0031fc30 77719e3a 00000000 00000000 010a9ead ntdll!LdrShutdownProcess+0xbd
0031fc44 758379ec 00000000 77e8f3b0 ffffffff ntdll!RtlExitUserProcess+0x74
0031fc58 0392c5c4 00000000 0031fc9c 0392c55a kernel32!ExitProcessStub+0x12
0031fc64 0392c55a 00000000 013b6231 00000000 electron!icu_56::Transliterator::setID+0x51ca4
0031fc9c 0392c73f 00000000 00000000 00000000 electron!icu_56::Transliterator::setID+0x51c3a
0031fcb0 0391a153 00000000 013b625d 00000000 electron!icu_56::Transliterator::setID+0x51e1f
0031fcf0 7583338a 7efde000 0031fd3c 776f9a02 electron!icu_56::Transliterator::setID+0x3f833
0031fcfc 776f9a02 7efde000 5967ec8b 00000000 kernel32!BaseThreadInitThunk+0xe
0031fd3c 776f99d5 0391a1e6 7efde000 00000000 ntdll!__RtlUserThreadStart+0x70
0031fd54 00000000 0391a1e6 7efde000 00000000 ntdll!_RtlUserThreadStart+0x1b

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  bufferutil!unloaded+389e

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: bufferutil

IMAGE_NAME:  bufferutil.node

How could I investigate this further?
sample.zip

From the looks of things, my initial thought is that data is being sent while the websocket is in the process of being torn down. Have you tried ensuring that the websocket is closed before exiting?
I have several suggestions on how to debug further:

Try using node inspector to step through your code, especially during the shut down.
Add a process.uncaughtException handler.  And add some debugging logic in there.

Thanks for the tip. Closing the websocket client connection solved it.

So is this something that needs to be (or even can be) addressed at the library level?

Seems to me that the library could add a process.exit listener and ensure proper shutdown of any open websockets before the process is closed. Or there might be some other way of ensuring a clean exit.

Hi,
I basically got the same problem. The error will appear by just including the websocket package. Apparantly, there are no connections established at all so nothing to close. Trying to break on process.uncaughtException with the debugger does not trigger.
The most simplest Electron app thinkable as an entry point for trouble shooting:
main.js:
const {app} = require("electron");
// Just requiring the "websocket" package will lead to some wild error messages on closing the application.
let WebSocketServer = require("websocket").server;
app.quit();

package.json:
{
  "name": "test",
  "version": "0.0.1",
  "description": "Test to show WebSocket error",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "author": "Simon Bertling<EMAIL_ADDRESS>  "license": "MIT",
  "devDependencies": {
    "electron": "^3.0.10"
  },
  "dependencies": {
    "websocket": "^1.0.28"
  }
}

Just run on Windows:
$ npm install
$ npm start

Will give output:
npm ERR! code ELIFECYCLE
npm ERR! errno<PHONE_NUMBER>
npm ERR<EMAIL_ADDRESS>start: `electron .`
npm ERR! Exit status<PHONE_NUMBER>
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging outpu t above.
npm ERR!      C:\Users\XXX\2018-12-08T12_52_02_715Z-debug .log
/cygdrive/c/Program Files/nodejs/npm: Zeile 34:  5832 Segmentation fault "$NODE_EXE"  "$NPM_CLI_JS" "$@"

Doing the same on a Linux virtual machine finishes without any error.
electron-websocket.zip


Develop updates on Project Card - updated the styling for the project details page

https://makeitmvp.atlassian.net/browse/LAP4SE-112

Hello Emeka, thank you for looking into this. I created this because there were some edits that we still needed to complete on this page. Also, because I had completed this ticket in the last sprint and I was assigned related ticket for this sprint.

Alright then.
Is there a way we can take a look at it together to find out how to combine the original & upgrades into one component that works?


Update manifest parsing to support dynamic data sources

Now tracked via https://github.com/graphprotocol/graph-node/issues/719.


ShareX Capture Window interaction with FancyZones

Microsoft PowerToys version
0.79.0
Installation method
PowerToys auto-update
Running as admin
No
Area(s) with issue?
FancyZones, FancyZones Editor
Steps to reproduce
The ShareX capture window gets overridden by FancyZones, preventing users from capturing the area of the screen they wish to actually capture. The "Move newly created windows to their last known zone" setting overrides the user's attempts to manually capture the screen.

In the attached pics, you'll see that I attempted to capture a screenshot of my main laptop monitor. However, FancyZones overrode this and forced a capture of the upper-left two-thirds of my secondary monitor — even going so far as to display that area on my bottom monitor.
Proceeding with the capture will capture the area on the secondary monitor.

I have to disable the "Move newly created windows to their last known zone" setting to halt the issue.
✔ Expected Behavior
Please see above. I should have been able to capture  my laptop monitor without issue.
❌ Actual Behavior
This is a new issue; it only cropped up in the last few weeks. I don't know why that setting is suddenly hijacking ShareX region captures.
Other Software
ShareX, any version 15+ (currently on 16.0.1). I did not detect the issue on an older ShareX version, but I'm not sure if this is a "new" bug.

/dup #29193
You can add sharex.exe to the excluded apps in the FancyZones settings.


Ambiguous component name error does not mention first character cannot be numeric.

When assigning a component name, it is matched against a regex that does not allow the first character of the name to be numeric. However, the error thrown only mentions that the component name has to be alphanumeric:
Invalid component name: "0650475a". Component names can only contain alphanumeric characaters and the hyphen.
Other than the typo 'characaters', the provided component name also matches the condition of the error. It would be helpful if either the regex or the error is changed accordingly.
Thank you in advance!

The component name can't start with a digit any more than HTML/XML tag names can't start with a digit, simply because the component name '0650475a' will be turned into a tag name <0650475a>.

Oh, I see you've modified the subject. In such a case, maybe a more helpful warning can be introduced.

I understand that, but maybe the error message can highlight this fact?

Heh, let me not edit that last message then since we're on this in real time; that is indeed what I was thinking, thanks! :)

Interestingly your issue just revealed a typo in Vue's source code. I'll see to that too.


preserve spaces in code elements

It's still WIP but @adbar, I need your advice and early review to see that I'm heading the right direction.
Currently I manage to preserve spaces in code elements but it breaks proper formatting in other elements. You can see the test cases. I'm not sure what will be the right way to address these cases.
It's mostly where
H <hi>i</hi>, <hi>w</hi>
.
Basically content elements (p, item, etc) should preserve spaces as well I think
Closes #422

Hi @idoshamun, I also think that's the idea. My remarks:

PRESERVE_SPACE_TAGS would need to be a set for faster "in" operations
Currently this functionality/line from sanitize() is missing from the PR:
'\n'.join(filter(None, (line_processing(l) for l in text.splitlines())))

@adbar good catch! I applied the changes please check again

@adbar would you mind suggesting the next step?

@idoshamun Sorry, I missed your last comment. The tests don't pass, do we need to adapt them to your changes or change the code further? That would be the next step IMO.

@adbar this is exactly my debate, not sure if I need to adjust the tests or my code. Can you have a look and let me know your suggestion please?
Also regardless of the tests, does the code make sense to you before I proceed further with the changes?

Hi @idoshamun, yes, the code makes sense so I'd start with the tests, I'm not sure why they fail.

@adbar it's ready for your review!

Thanks, I need to check the impact on general performance (accuracy and speed) so it's going to take a bit of time. I'm not completely sure regarding tables but this is the way to go for code segments.
Just to clarify: you inserted \xa0 spaces in the tests as a result of the str.replace(' ', '\u00A0') transformation, right?

Just to clarify: you inserted \xa0 spaces in the tests as a result of the str.replace(' ', '\u00A0') transformation, right?

Yap.
Let me know if I can help with something :)

So, the changes pass the tests, including on my benchmark, they are also not critical for performance. Thanks for the PR! I thought we could maybe make it better:

You're only checking the parent, it cannot be that a relevant element is more deeply nested, i.e. a tag like  is never far?
What about
? I don't see it in your list but would be tempted to add it to SPACING_PROTECTED.
We could also let users decide by putting this list among the variables in settings.cfg, that's an open question, I'm thinking more and more to put constants there instead of embedded somewhere in the scripts.

Thanks a lot for checking and the effort @adbar!

You're only checking the parent, it cannot be that a relevant element is more deeply nested, i.e. a tag like  is never far?

I can suggest a different approach then, whenever we detect a new preserve space element, we'd propagate down an attribute to indicate we need to preserve space to every child element. This way all the tree will preserve space. Let me know if I should go down this path.

What about ? I don't see it in your list but would be tempted to add it to SPACING_PROTECTED.

You're right. I'll add the pre element to the set.

We could also let users decide by putting this list among the variables in settings.cfg, that's an open question, I'm thinking more and more to put constants there instead of embedded somewhere in the scripts.

Once you decide to apply this strategy we can consider it. But if it's not a common pattern in the library currently than I suggest we skip this one. Wdyt?

The way we perform tree traversal is crucial because it can save time. I was just curious if elements such as code are deeply nested, possibly not but I have no data on that.
Using attributes on the HTML structure might even be better but I'm not sure that preserving spaces in all the tree would be beneficial. Since your PR is already an improvement we could leave it at that and see the rest later. It also depends on the time you can invest in it.
Yes, please add pre to the set.
We can see the configuration/options later, no worries.

I still get this FutureWarning:
FutureWarning: The behavior of this method will change in future versions. Use specific 'len(elem)' or 'elem is not None' test instead.
I believe it's about statements like (p and p.tag in SPACING_PROTECTED).
You could also use if/else statements if the lines become too long.

Another issue, the XML output is garbled instead of pretty-printed because of the PR but there is not test for that and I'm not sure why.

OK, I'll take it from here and try to restore parts of the removed code and to avoid the warnings.

Thanks a lot @adbar for the support!
When is the next release?


Scaling horizontally with more servers => Slow down to pull jobs off the queue

When increasing the number of servers processing jobs, it feels like I'm seeing a dramatic slow down in the workers pulling jobs off the queue when there's a lot of jobs (~700) queued at the same time.

Normal queue processing jobs immediately without heavy load
Scale up ~20 servers (2x heroku worker dynos)
numWorkers option on each server is set to 50

Result
Seeing a dramatic slow down from when jobs get added to the queue, to the time that jobs get pulled off.
My best guess here is that an individual server is not able to pull down the job until the other servers (which are all trying to read and write it at the same time) know about it to resolve which worker claims it.

Unfortunately you're reaching the limitation of transactions on a single location in a Firebase Database. The more workers there are, the more of them that are attempting to perform a transaction on the database. The Firebase client SDK uses optimistic concurrency to write, so if the location is highly contested things slow down and may even start failing.
One suggestion I have for you is to shard your queue to multiple locations in your database, and then have the clients choose one at random (or with some other mapping). You could even keep the list of available queues as a dynamic property in your database and then as you add more you just update that so your clients are aware of which ones it can use.

Thanks for your reply @drtriumph, this makes sense. I wonder if a sharded queue pattern could be built into this library. Any interest?

I just ran some tests and it looks like I was able to optimize this and actually get it to work at a pretty good scale by increasing numWorkers to as much as possible without blowing out the memory on the server and decreasing the number of servers.
Can you please confirm that this theory makes sense?

Adding more servers adds more clients contesting the same firebase location (slows down reads and writes b/c of the way transaction() works)
Adding more numWorkers option does not add more clients contesting the same firebase location, but it still adds more concurrency to the same process

Ah, that makes sense - the reason numWorkers is working in this case is that all those workers are sharing one instance of the client SDK. That means both that the requests are being pipelined so there's less contention, and that they're sharing the same cache so the optimistic writes have a better chance of succeeding.
As for building it into the library - it's not something we've seen a huge demand for so far, and I'm not very keen on the idea of complicating the logic on the adding to the queue side in the general case. If it's something that comes up more then I'd be happy to reconsider that stance.

Thanks for confirming. :+1:

Rather than building the sharding logic into the basic queue, what about adding a separate Queue class at some point?
This would probably warrant a companion library(ies?) that could be used on the client side that would automatically negotiate which queue to add to. If the interfaces can be kept identical, user could switch implementations as their needs grow with minimal hassle.

hi @dylanjha , @drtriumph , i cant make it work the firebase example when resolving async, (resolve sync works)
`var Queue = require('firebase-queue'),
Firebase = require('firebase');
var ref = new Firebase('https://.firebaseio.com/queue');
var queue = new Queue(ref, function(data, progress, resolve, reject) {
// Read and process task data
console.log(data);
// Do some work
progress(50);
// Finish the task asynchronously
setTimeout(function() {
resolve();
}, 1000);
});`
could you help me, may be with your enviroment configuration,
what node version , firebase version and firebase-queue version are you using?
are you resolving with async functions?
any advice will help me a lot
thanks

I am primarily using es6 Promises to wrap handler code
I've tested with Node v5.8-5.10 I've had no issues resolving in promise callbacks. Some tasks are long running (>20 minutes) and no issues.
package.json
"firebase-queue": "^1.3.x"

A queue handler snippet. service.perform is a method that returns a promise:
queueHandler(task, progress, resolve, reject) {
  if (task) {
    service.perform(task).then(resolve, reject);
  } else {
    reject('Invalid Task');
  }
}

Firebase is being allowed to resolve automatically, currently running the latest version: 2.4.2.
Can you give more information about your configuration like what node version you are using?

@correasebastian I am resolving tasks asynchronously in almost every case.
"firebase": "2.4.1",
"firebase-queue": "1.2.1",

I'm not using the progress function, but by the looks of your example it looks like it should work just fine. I would double-check and dig deeper.
One thing to check: be aware that if there is a synchronous error, it will fail silently and get set as the "error" property to your task on the queue. So you might have an error in your code before you call resolve and the task is failing into an error state

thanks @dylanjha  and @meticoeus  for taking the time to answer my question, apprerciatte that.
i created a github repo, may be if you have time you can try to see whats going on:
https://github.com/correasebastian/testingqueue/
i have noticed there aare many people getting this same error, the queue is looping nad looping and never get resolved
thanks


Invert display option name misleading

We use GitHub issues for development related discussions.
Please use the forum to ask questions.
Describe the issue
The option "Invert display" is very misleading.  "Invert display" sounds like the colors are being inverted when in reality, the image is being flipped.
I suggest that we change the name for this option to "Flip display", but I don't know if this might break compatibility with projects that use this library.
Code to reproduce the issue
Expected Results
Actual Results
ESP32 Chip version
ESP-IDF version
Development kit used
Development machine OS
Compilation warnings/errors (if available)
If possible, copy the compilation log into a file and attach it here

Hi @rangeli,
I agree with you, we've been adding display rotation to some display controllers and noticed the invert display option intended to do that. So what do you think if we remove the invert display and left the display rotation option only?
Just out of curiosity, what display controller are you using?

@rangeli Is this closed with #121?


Bump version to v1.0.0

Description of changes:
Prepare v1.0.0 release
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Codecov Report

Merging #74 (18bece5) into main (4633563) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #74   +/-   ##
=======================================
  Coverage   94.26%   94.26%
=======================================
  Files          38       38
  Lines         977      977
  Branches      143      143
=======================================
  Hits          921      921
  Misses         35       35
  Partials       21       21

Flag
Coverage Δ

unittests
94.26% <ø> (ø)

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

Continue to review full report at Codecov.

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


Non-static method "Lcom/projecttango/unityuxhelper/TangoUnityUxHelper;

Most of the time, the Unity SDK call to a native method during the connecting UX screen. The method is not found and the connecting screen hang out.
I/Unity   ( 6065): AndroidJavaException: java.lang.NoSuchMethodError: no non-static method "Lcom/projecttango/unityuxhelper/TangoUnityUxHelper;.䅣뿤(I)V"
I/Unity   ( 6065):   at UnityEngine.AndroidJNISafe.CheckException () [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at UnityEngine.AndroidJNISafe.GetMethodID (IntPtr obj, System.String name, System.String sig) [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at UnityEngine._AndroidJNIHelper.GetMethodID (IntPtr jclass, System.String methodName, System.String signature, Boolean isStatic) [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at UnityEngine.AndroidJNIHelper.GetMethodID (IntPtr javaClass, System.String methodName, System.String signature, Boolean isStatic) [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at UnityEngine._AndroidJNIHelper.GetMethodID (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at UnityEngine.AndroidJNIHelper.GetMethodID (IntPtr jclass, System.String methodName, System.Object[] args, Boolean isStatic) [0x00000] in <filename unknown>:0
I/Unity   ( 6065):   at Un

The problem is with the method:
tangoUxObject.Call("processPoseDataStatus", poseStatus);
But sometime it works.
My tango manager configuration is:

I also use the Tango Point Cloud Prefab.
Unity version: 5.1.0f3 Personal
Tango Unity SDK: von Mises

I am having that exception too! Could be a mistake in the way that the signature method name is built??

Same issue with Weyl 5.2.1

The only solution that I found was make a wrapper of the Tango Unity UX Helper in C. It's an issue with the Unity Android helpers. It sometime make a wrong signature of the inferred method.
We are planning to share the code if it isn't fixed soon.

@dcorbatta did you end up finding a fix for this issue

This has been fixed a while ago, but we neglected to close this issue. Feel free to reopen if you're still have the problem.


Update UI

Create sample data for testing
Add function to increase and decrease level
Add function to undo the Yes and No button
Add button to reveal the translation

LGTM!


issue when I start pyhtools

WARNING: No route found for IPv6 destination :: (no default route?). This affects only IPv6
WARNING: can't import layer ipsec: cannot import name 'gcd' from 'fractions' (/usr/lib/python3.10/fractions.py)
Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/mnt/c/users/sixtu/desktop/pyhtools/pyhtools/main.py", line 1, in
from . UI import functions as UI
File "/mnt/c/users/sixtu/desktop/pyhtools/pyhtools/UI/functions.py", line 7, in
import pyhtools.attackers.attackers as attacker
File "/mnt/c/users/sixtu/desktop/pyhtools/pyhtools/attackers/attackers.py", line 10, in
from pyhtools.attackers.web.webdiscover import Discoverer
ModuleNotFoundError: No module named 'pyhtools.attackers.web.webdiscover'

hello @flash-dady-686323, that's a import bug. I'll fix it ASAP.


fix: fix non-olm sso test and use set for env variable

What type of PR is this?

Uncomment only one  /kind line, and delete the rest.
For example, > /kind bug would simply become: /kind bug

/kind bug

Depends on merge of this PR - https://github.com/redhat-developer/gitops-operator/pull/594
What does this PR do / why we need it:
Have you updated the necessary documentation?

[ ] Documentation update is required by this PR.
[ ] Documentation has been updated.

Which issue(s) this PR fixes:
Fixes #?
Test acceptance criteria:

[ ] Unit Test
[ ] E2E Test

How to test changes / Special notes to the reviewer:

/approve
/lgtm

/test v4.12-kuttl-parallel


Viewer unable to display PDF files retrieved through SSL

I am unable to display a PDF retrieved via SSL. Look at the demo with an SSL link:
http://mozilla.github.io/pdf.js/web/viewer.html?file=https://d2fqdaa97sxcjl.cloudfront.net/fulltext/c6f10e90-5646-4161-a72b-fa78bf76c5a0/I901_payment_confirmation_07262015.PDF
Is this a limitation of PDF.js? The certificates are OK and I believe this is something not related to PDF.js, if the browser can get it, then PDF.js should.

This is not an issue with PDF.js, it's an intentional security feature of browsers that websites cannot directly read files from other websites.
Although it's possible to circumvent the issue using a proxy (e.g. as explained at https://github.com/mozilla/pdf.js/issues/1000#issuecomment-133756244), a better solution is to host PDF.js on the same website (e.g. cloudflare in your case). Then the URL would be something like: https://d2fqdaa97sxcjl.cloudfront.net/web/viewer.html?file=/fulltext/c6f10e90-5646-4161-a72b-fa78bf76c5a0/I901_payment_confirmation_07262015.PDF
See https://github.com/mozilla/pdf.js/wiki/Frequently-Asked-Questions#faq-xhr and https://github.com/mozilla/pdf.js/wiki/Setup-PDF.js-in-a-website.

Thanks for pointing out the CORS issue. The cloud front endpoint was not configured for CORS, but the S3 origin behind it was. However, if you inspect the network requests while loading the above link, it shows 200 OK for the PDF resource which means the file was pulled correctly. I have tried HTTP and HTTPS with no luck (200 OK though in both cases). Any clue how this can be debugged?

@hammady HTTP 200 OK means that the server found the resource. After that, what matters is that the Access-Control-Allow-Origin header is set.
If it still does not work, please include a log / screenshot of the network traffic.

@Rob--W it is working now, I guess there was a big latency in applying CORS rules in AWS. Thanks!


Greenkeeper/supertest 4.0.2

connects to #58

Pull Request Test Coverage Report for Build 213

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 95.313%

Totals

Change from base Build 202:
0.0%

Covered Lines:
93

Relevant Lines:
97

💛  - Coveralls


Article summarizing our experience with Testnet

Estimated time: 6h

Why:
As pointed out by Kris, one of tomochain's telegraf group's admin, there is some confusion in our investor community regarding to technical details related to Testnet. Like why it was quite slow at some points, what can we improve from testnet, performances, etc.
What:
An article outlining what is our progress so far with Testnet.
For example, some points that could be talked about:

Benchmark/TPS
What it let us observe

performances
problems
feedback on UX
etc

What problem we encountered and how we plan to or fixed them.

the gas problem
rewrite of some lower level networking logics
slashing
etc

How it's related to Mainnet
etc

How:
For this article we except communication regarding the technical details with @ngtuna our lead blockchain developer. You can work with him to get the details on what we learned and fixed thanks to the Testnet.

Assigned to: @patrickburm
Review / technical assistance: @ngtuna @etienne-napoleone

Already published


Not fetching feed

I have the latest version of NetNewsWire installed (Version 5.1.1) on macOS Catalina. It simply does not download the feed when being refreshed.
I thought the feed URLs might have changed, but I manually checked them and they work, it's just that the app is not fetching the results.
Not a single feed is fetched and I have probably 200 Craigslist feed URLs in my list.

Using Feedly, Feedbin, or On My Mac? Did it ever fetch the feeds? Would you provide the URL of one of those feeds?

Im running NNW 5.0.4 on an  14.0.1 IPhone and feeds were working great until about a week ago. I created a new RSS file from the source, searchtempest, and imported it - still nothing. Am still receiving NNW feed. Thanks

Using Feedly, Feedbin, or On My iPhone? What’s the URL of the feed?

Using only Net News Wire. This is the url from which to download .opml file.
https://www.searchtempest.com/getrss?search_string=Desk&category=8&subcat=sss&cityselect=zip&location=85603&maxDist=1000&Region=combined

@BZBR These feeds are gone, unfortunately. They’re returning a 410 Gone response instead of a feed.

Brent thanks for checking this out so quickly. Guess this means SOL on the searchtempest. Are people having any luck with direct CL feeds? It seems the OP those may be not functional at this point either. thanks again

Interesting. When I tested the feed it was working, now it's removed. Its craigslist's feed.
So, the issue is not NetNewsWire, it's the feed itself


OCPBUGS-683: Node controller: Skip uninitialized nodes

Nodes with external cloud providers will come up without a valid
value in providerID. Initialization can take a few seconds.
Skip synchronization for nodes which are still uninitialized by the
Cloud Controller Manager.
TL;DR
OSP uses the external cloud provider and thus it takes a few seconds for the providerID to be added after a node first comes online. Therefore, we see an error as the CNCC plugin complains (rightfully) that the providerID is still empty. According to the upstream documentation, the node is still uninitialized for as long as taint node.cloudprovider.kubernetes.io/uninitialized can be found on the node - the Cloud Controller Manager will set the correct providerID (among other things) and then remove that taint to indicate that it did its job. Hence, skip uninitialized nodes in the node reconciler until that taint is gone.
Further details
For OSP, we use the external cloud-provider (https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/).
Looking at the cloud-provider, we can see that initializing the node with the providerID takes 2 seconds and that's exactly the time during which the CNCC logs a bunch of errors as the providerID is still empty:
[akaris@linux OCPBUGS-683]$ oc logs -n openshift-cloud-controller-manager                 openstack-cloud-controller-manager-59c9f779c6-6pk9q | grep 2blxd
I0909 04:37:34.421306       1 node_controller.go:401] Initializing node huirwang-0909e-vzgl2-worker-0-2blxd with cloud provider
I0909 04:37:36.169501       1 node_controller.go:465] Successfully initialized node huirwang-0909e-vzgl2-worker-0-2blxd with cloud provider
I0909 04:37:36.169618       1 event.go:294] "Event occurred" object="huirwang-0909e-vzgl2-worker-0-2blxd" fieldPath="" kind="Node" apiVersion="v1" type="Normal" reason="Synced" message="Node synced successfully"

CNCC logs:
I0909 04:37:34.430859       1 controller.go:182] Assigning key: huirwang-0909e-vzgl2-worker-0-2blxd to node workqueue
E0909 04:37:34.430901       1 controller.go:165] error syncing 'huirwang-0909e-vzgl2-worker-0-2blxd': error retrieving the private IP configuration for node: huirwang-0909e-vzgl2-worker-0-2blxd, err: the URI is not expected: ; the provider ID does not contain expected prefix openstack:///, requeuing in node workqueue
E0909 04:37:34.436456       1 controller.go:165] error syncing 'huirwang-0909e-vzgl2-worker-0-2blxd': error retrieving the private IP configuration for node: huirwang-0909e-vzgl2-worker-0-2blxd, err: the URI is not expected: ; the provider ID does not contain expected prefix openstack:///, requeuing in node workqueue
E0909 04:37:34.447486       1 controller.go:165] error syncing 'huirwang-0909e-vzgl2-worker-0-2blxd': error retrieving the private IP configuration for node: huirwang-0909e-vzgl2-worker-0-2blxd, err: the URI is not expected: ; the provider ID does not contain expected prefix openstack:///, requeuing in node workqueue
(...)
E0909 04:37:35.712179       1 controller.go:165] error syncing 'huirwang-0909e-vzgl2-worker-0-2blxd': error retrieving the private IP configuration for node: huirwang-0909e-vzgl2-worker-0-2blxd, err: the URI is not expected: ; the provider ID does not contain expected prefix openstack:///, requeuing in node workqueue
I0909 04:37:37.177519       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"87abdc1b-9910-4082-8909-70f27dcb4b48","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ip":8}}]' on node: huirwang-0909e-vzgl2-worker-0-2blxd
I0909 04:37:37.196557       1 controller.go:160] Dropping key 'huirwang-0909e-vzgl2-worker-0-2blxd' from the node workqueue

Details from upstream documentation:
kubelets specifying --cloud-provider=external will add a taint node.cloudprovider.kubernetes.io/uninitialized with an effect NoSchedule during initialization. This marks the node as needing a second initialization from an external controller before it can be scheduled work. Note that in the event that cloud controller manager is not available, new nodes in the cluster will be left unschedulable. The taint is important since the scheduler may require cloud specific information about nodes such as their region or type (high cpu, gpu, high memory, spot instance, etc).

https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/

/jira refresh

With the fix:
[akaris@linux 2104784]$ oc logs -n openshift-cloud-network-config-controller          cloud-network-config-controller-86f4fbccbc-28p54
W0909 15:27:43.292528       1 client_config.go:617] Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.
I0909 15:27:43.294816       1 leaderelection.go:248] attempting to acquire leader lease openshift-cloud-network-config-controller/cloud-network-config-controller-lock...
E0909 15:28:13.296767       1 leaderelection.go:330] error retrieving resource lock openshift-cloud-network-config-controller/cloud-network-config-controller-lock: Get "https://api-int.akaris-y182.devcluster.openshift.com:6443/api/v1/namespaces/openshift-cloud-network-config-controller/configmaps/cloud-network-config-controller-lock": dial tcp: lookup api-int.akaris-y182.devcluster.openshift.com: i/o timeout
E0909 15:28:58.170545       1 leaderelection.go:330] error retrieving resource lock openshift-cloud-network-config-controller/cloud-network-config-controller-lock: Get "https://api-int.akaris-y182.devcluster.openshift.com:6443/api/v1/namespaces/openshift-cloud-network-config-controller/configmaps/cloud-network-config-controller-lock": dial tcp: lookup api-int.akaris-y182.devcluster.openshift.com on <IP_ADDRESS>:53: read udp <IP_ADDRESS>:38509-><IP_ADDRESS>:53: read: connection refused
I0909 15:29:53.541620       1 leaderelection.go:258] successfully acquired lease openshift-cloud-network-config-controller/cloud-network-config-controller-lock
I0909 15:29:53.542660       1 controller.go:88] Starting node controller
I0909 15:29:53.542671       1 controller.go:91] Waiting for informer caches to sync for node workqueue
I0909 15:29:53.542724       1 controller.go:88] Starting secret controller
I0909 15:29:53.542768       1 controller.go:91] Waiting for informer caches to sync for secret workqueue
I0909 15:29:53.543028       1 controller.go:88] Starting cloud-private-ip-config controller
I0909 15:29:53.543041       1 controller.go:91] Waiting for informer caches to sync for cloud-private-ip-config workqueue
I0909 15:29:53.552573       1 controller.go:182] Assigning key: ip-10-0-184-108.us-west-1.compute.internal to node workqueue
I0909 15:29:53.552648       1 controller.go:182] Assigning key: ip-10-0-212-109.us-west-1.compute.internal to node workqueue
I0909 15:29:53.552677       1 controller.go:182] Assigning key: ip-10-0-178-71.us-west-1.compute.internal to node workqueue
I0909 15:29:53.642811       1 controller.go:96] Starting node workers
I0909 15:29:53.642888       1 controller.go:102] Started node workers
I0909 15:29:53.642821       1 controller.go:96] Starting secret workers
I0909 15:29:53.642969       1 controller.go:102] Started secret workers
I0909 15:29:53.643224       1 controller.go:96] Starting cloud-private-ip-config workers
I0909 15:29:53.643283       1 controller.go:102] Started cloud-private-ip-config workers
I0909 15:29:53.862868       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-0fddef79b5ff31786","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-212-109.us-west-1.compute.internal
I0909 15:29:53.888649       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-0336f0e54d0196649","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-178-71.us-west-1.compute.internal
I0909 15:29:53.889233       1 controller.go:160] Dropping key 'ip-10-0-212-109.us-west-1.compute.internal' from the node workqueue
I0909 15:29:53.889673       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-016e05be6fb52753d","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-184-108.us-west-1.compute.internal
I0909 15:29:53.945439       1 controller.go:160] Dropping key 'ip-10-0-184-108.us-west-1.compute.internal' from the node workqueue
I0909 15:29:53.947146       1 controller.go:160] Dropping key 'ip-10-0-178-71.us-west-1.compute.internal' from the node workqueue
I0909 15:32:02.548077       1 controller.go:182] Assigning key: ip-10-0-189-133.us-west-1.compute.internal to node workqueue
I0909 15:32:02.705989       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-07b81e83fdc5e6765","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-189-133.us-west-1.compute.internal
I0909 15:32:02.728515       1 controller.go:160] Dropping key 'ip-10-0-189-133.us-west-1.compute.internal' from the node workqueue
I0909 15:32:11.766507       1 controller.go:182] Assigning key: ip-10-0-251-99.us-west-1.compute.internal to node workqueue
I0909 15:32:11.878672       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-0db9bd6977e422294","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-251-99.us-west-1.compute.internal
I0909 15:32:11.925155       1 controller.go:160] Dropping key 'ip-10-0-251-99.us-west-1.compute.internal' from the node workqueue
I0909 15:35:53.950006       1 controller.go:182] Assigning key: ip-10-0-142-48.us-west-1.compute.internal to node workqueue
I0909 15:35:54.146316       1 node_controller.go:106] Setting annotation: 'cloud.network.openshift.io/egress-ipconfig: [{"interface":"eni-0e2c3827eaff95014","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]' on node: ip-10-0-142-48.us-west-1.compute.internal
I0909 15:35:54.187360       1 controller.go:160] Dropping key 'ip-10-0-142-48.us-west-1.compute.internal' from the node workqueue
[akaris@linux 2104784]$
[akaris@linux 2104784]$
[akaris@linux 2104784]$
[akaris@linux 2104784]$ oc get node -o yaml | grep egress-ip
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-0e2c3827eaff95014","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-0336f0e54d0196649","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-016e05be6fb52753d","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-07b81e83fdc5e6765","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-0fddef79b5ff31786","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'
      cloud.network.openshift.io/egress-ipconfig: '[{"interface":"eni-0db9bd6977e422294","ifaddr":{"ipv4":"<IP_ADDRESS>/18"},"capacity":{"ipv4":14,"ipv6":15}}]'

/hold
I was too happy, too soon. With the current version, the keys aren't added at all :-(

/unhold

/retest

/retest

/retest

/retest

/retest

/approve

/retest-required

/retest

/retest

/retest

/retest

/retest

/retest

e2e-aws-serial failures look unrelated to this change, ovn-k alerts firing is being addressed elsewhere.
/override ci/prow/e2e-aws-ovn-serial
/lgtm

/override ci/prow/e2e-aws-serial

/cherry-pick release-4.11


Fix issue #565

What's this PR do?
This PR fixes issue #565
Any background context you want to provide?
Screenshots?
You have tested this PR on:

[x] Linux/Ubuntu
[ ] Mac/Os
[ ] Windows

@ThePiyushGupta thanks for working on this. Few changes -

Can you remove the changes related to the network setting?
We just need to hide the window when the start to minimized is on so you don't need to introduce that tray setting option.

@akashnimare So what you mean is that alwaysstartminimised =alwaysstartintray and i don't need to create another option in settings.
Secondly all the changes related to issue #540 should be undone

So what you mean is that alwaysstartminimised =alwaysstartintray and i don't need to create another option in settings.

Correct. Also, checkout - https://zulip.readthedocs.io/en/latest/contributing/index.html


Switch aiming and movement to key-based instead of cursor-based

Aiming should be key-based, just like in Worms games. Control scheme is still up for debate, but arrow keys might be fun to experiment with.

[x] Switch aiming scheme to keys
[x] Worms should not follow the mouse, and only switch direction when moving that direction
[x] Aim indicator

#92


Add a message to some test assertions

The output when these assertions fail is just XCTAssertTrue failed, which is very unhelpful. Add in the strings we're comparing.

@swift-ci please test


UI: Design application UI with AntD

Latest UX / UI:
https://www.figma.com/file/pKIhh530T04Hn8M6lV9ydT/Interview-App---UX%2FUI?node-id=136245%3A182026

That's cool, Thank you @petrspelos  ❤

I think the current state is enough to close this issue. Work on UI can continue outside of this issue.


feat: add tips for unable to embed website

If I hadn’t looked at the source code, I wouldn’t know what caused the vue document in the document tab to fail to open, so for a better experience, I added a reminder and set that the website that cannot be opened in the form of an iframe will be in the form of a tab Open

I learned this because the site sets X-Frame-Options to deny，So I added deny and hint

Can you follow this (https://github.com/webfansplz/vite-plugin-vue-devtools/commit/a44850dff96ea3df99959ba612da198c27fbff13) and update the PR, thanks!

@webfansplz  it`s ok


Investigate DI compatibility

As part of the new builder API, we should investigate how this would plug into various Dependency Injection frameworks so that the core library is agnostic and provides some simple shims (such as IServiceResolver) to bridge common implementations with JustSaying to make consumption easy.
Examples include, but are not limited to:

Microsoft's .NET Core DI (#474) ✔
Autofac
Ninject
StructureMap (#482) ✔

I'd imagine the obvious ones to include in the first instance are containers we use internally at Just Eat.
For those we consider worth implementing for others' use, we can provide "extension" NuGet packages that install alongside JustSaying that provide the glue between it and a given DI framework "out-of-the-box".

I suggest we look at a DI-Friendly Framework approach: http://blog.ploeh.dk/2014/05/19/di-friendly-framework/
I'll create a branch that works this way

After discussion yesterday with @brainmurphy and @iancooper, it was decided that Microsoft and StructureMap providers built-in is enough for v7 to ship as that solves most of internal consumption.
Any other providers can be contributed by the community if neccessary.


[#1076] Keychain claims no data exist and data exist at the same time

Closes #1076

The Queries and Uniqueness Constraints changed with the kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly flag, we are forced to provide account now.
Implication of this change is that fingerprint of stored wallet changed so everyone will face a downside of this change - Zashi will start with create/restore wallet.
The migration of previously stored wallet is unfortunately not possible because the previous wallet can't be read - that is definition of this ticket and bug described.
With the new fixes, all keychain and sec item tests pass.

NOTE: This PR doesn't solve the problem with switching between flags of keychain accessibility, it only improves uniqueness by setting the account
This code review checklist is intended to serve as a starting point for the author and reviewer, although it may not be appropriate for all types of changes (e.g. fixing a spelling typo in documentation).  For more in-depth discussion of how we think about code review, please see Code Review Guidelines.
Author

[x] Self-review: Did you review your own code in GitHub's web interface? Code often looks different when reviewing the diff in a browser, making it easier to spot potential bugs.
[ ] Does the code abide by the Coding Guidelines?
[ ] Automated tests: Did you add appropriate automated tests for any code changes?
[x] Code coverage: Did you check the code coverage report for the automated tests?  While we are not looking for perfect coverage, the tool can point out potential cases that have been missed.
[ ] Documentation: Did you update Docs as appropiate? (E.g README.md, etc.)
[x] Run the app: Did you run the app and try the changes?
[ ] Did you provide Screenshots of what the App looks like before and after your changes as part of the description of this PR? (only applicable to UI Changes)
[x] Rebase and squash: Did you pull in the latest changes from the main branch and squash your commits before assigning a reviewer? Having your code up to date and squashed will make it easier for others to review. Use best judgement when squashing commits, as some changes (such as refactoring) might be easier to review as a separate commit.

Reviewer

[ ] Checklist review: Did you go through the code with the Code Review Guidelines checklist?
[ ] Ad hoc review: Did you perform an ad hoc review?  In addition to a first pass using the code review guidelines, do a second pass using your best judgement and experience which may identify additional questions or comments. Research shows that code review is most effective when done in multiple passes, where reviewers look for different things through each pass.
[ ] Automated tests: Did you review the automated tests?
[ ] Manual tests: Did you review the manual tests?You will find manual testing guidelines under our manual testing section
[ ] How is Code Coverage affected by this PR? We encourage you to compare coverage before and after your changes and when possible, leave it in a better place. Learn More...
[ ] Documentation: Did you review Docs, README.md, LICENSE.md, and Architecture.md as appropriate?
[ ] Run the app: Did you run the app and try the changes? While the CI server runs the app to look for build failures or crashes, humans running the app are more likely to notice unexpected log messages, UI inconsistencies, or bad output data.

The problem we face is about Uniqueness of queries. Please read more here
In a nutshell, the keys used for the accessibility are defined as
@available(iOS 4.0, *)
public let kSecAttrAccessibleWhenUnlockedThisDeviceOnly: CFString

@available(iOS 4.0, *)
public let kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly: CFString

Those strings are unique for every key used, the final fingerprint for read/write operation vary depending on these + all other keys set by devs (some of the keys don't play a role in Uniqueness btw but most do).

The problem we face is about Uniqueness of queries. Please read more here

I'll read this section on Halloween  👻 🥶

Implication of this change is that fingerprint of stored wallet changed so everyone will face a downside of this change - Zashi will start with create/restore wallet.

Is the description still accurate? I thought we'd fixed that problem.
(Note that the first comment on a GitHub PR is used for the commit message, so in general it's important that it be accurate to avoid later confusion. If a limitation has been fixed, make sure to edit the first comment, even if later comments in the PR explain the fix.)

@daira has brought a very interesting point on the table - what to do with the keychain setup and kSecAttrAccount for multiple users of the same Zashi. That is something that hasn't been solved yet. Closing the PR for now


Thirdparty libraries should not be built inside the same folder

Is your feature request related to a problem? Please describe.
It is a bad idea to build anything inside the same folder where the source code lives.
I am trying to implement caching in CI build. as-is the build output is currently interleved with the sourec code so my only choice at this point is to cache the whole folder
Describe the solution you'd like
The output of ffmpeg and zxing builds should go into thirdparty/_build or similar folders
Describe alternatives you've considered
pushing the whole folder to cache (source+binaries)

Done #246