Red/Black deployment strategy

This feature introduces a new Strategy, which is really a fresh take on the Blue Green approach.
In short, in many cases its ideal to remove the inactive stack post deployment - generally for keeping costs down.
This strategy follows the Blue Green approach, but will tear down a stack after a successful migration to the new 'Red' Environment, marking the old one as 'black' and terminating.
It should be noted that I considered modifying the existing Blue-Green strategy, but felt it was best to separate for the following reasons:

Existing users should not be confused by the new strategy
I didn't want to complicate the behaviour of the pattern further by introducing more knobs/levers
We may want to modify the Red/Black pattern to do other things going forward, such as introducing a wait period/signal before terminating the inactive environment and so on.

What are your thoughts?

hi @mefellows:
Many thanks for the contribution. There are mostly 2 flavors of blue green implementation on AWS: switch routing on ELB (e.g. asguard) or on DNS record (e.g. our eb_deployer). Both has pros and cons. DNS switching approach is safer for on going requests and less intrusive for application's own infrastructure, but has the con that it is never theoretically safe for killing the inactive environment because of DNS caching. So what I generally do in production is letting inactive environment scale down to 1 instance using "inactive_settings" config. This both helps us cope with DNS cache, and provides us a safe-net for bad version.
Our production settings:
    option_settings:
      - namespace: aws:autoscaling:asg
        option_name: MinSize
        value: "5"
    inactive_settings:
      - namespace: aws:autoscaling:asg
        option_name: MinSize
        value: "1"

Similarly if you are confident traffic to inactive will die out in a specific period of time, you can use following settings to gradually kill idle instances to 0 to save cost.
    option_settings:
      # providing least redundancy
      - namespace: aws:autoscaling:asg
        option_name: MinSize
        value: "2"
      # make sure cooldown is reset back to default when environment become active again
      - namespace: aws:autoscaling:asg
        option_name: Cooldown
        value: "360"
    inactive_settings:
      # reduce instance count to 0 to save cost
      - namespace: aws:autoscaling:asg
        option_name: MinSize
        value: "0"
      # make sure cooldown is big enough to cope with DNS cache
      - namespace: aws:autoscaling:asg
        option_name: Cooldown
        value: "900"

The above configuration will wait at least 15 minutes (900 seconds) to kill the last instance in inactive, and in most case it is safe. Also the scale down process is off from the deployment process, so the deployment time will not increase even you have long Cooldown buffer.
You can also play with aws:autoscaling:scheduledaction options to schedule a scale down to zero action after a specific time. I haven't tried but it should be straightforward.
For this pull request I will not merge because there is already configuration to achieve the same goal. We definitely could do a better job for "inactive_setting" documentation. Sorry about that. But please keep up for contribution.
-- wpc
-- wpc

Thanks WPC. This makes a lot of sense, I was unaware it could be achieved with configuration alone.
I was aware of the issues with DNS, and was planning to implement some form of draining/timeout implementation - but this will do nicely.
I'll test this out today!

PC
This is awesome write up. Can you please blog. Call it 'saving costs while being resilient on aws' or something.

Sudhindra Rao

On Jun 25, 2015, at 3:43 PM, WPC<EMAIL_ADDRESS>wrote:
hi @mefellows:
Many thanks for the contribution. There are mostly 2 flavors of blue green implementation on AWS: switch routing on ELB (e.g. asguard) or on DNS record (e.g. our eb_deployer). Both has pros and cons. DNS switching approach is safer for on going requests and less intrusive for application's own infrastructure, but has the con that it is never theoretically safe for killing the inactive environment because of DNS caching. So what I generally do in production is letting inactive environment scale down to 1 instance using "inactive_settings" config. This both helps us cope with DNS cache, and provides us a safe-net for bad version.
Our production settings:
option_settings:
  - namespace: aws:autoscaling:asg
    option_name: MinSize
    value: "5"
inactive_settings:
  - namespace: aws:autoscaling:asg
    option_name: MinSize
    value: "1"

Similarly if you are confident traffic to inactive will die out in a specific period of time, you can use following settings to gradually kill idle instances to 0 to save cost.
option_settings:
  # providing least redundancy
  - namespace: aws:autoscaling:asg
    option_name: MinSize
    value: "2"
  # make sure cooldown is reset back to default when environment become active again
  - namespace: aws:autoscaling:asg
    option_name: Cooldown
    value: "360"
inactive_settings:
  # reduce instance count to 0 to save cost
  - namespace: aws:autoscaling:asg
    option_name: MinSize
    value: "0"
  # make sure cooldown is big enough to cope with DNS cache
  - namespace: aws:autoscaling:asg
    option_name: Cooldown
    value: "900"

The above configuration will wait at least 15 minutes (900 seconds) to kill the last instance in inactive, and in most case it is safe. Also the scale down process is off from the deployment process, so the deployment time will not increase even you have long Cooldown buffer.
You can also play with aws:autoscaling:scheduledaction options to schedule a scale down to zero action after a specific time. I haven't tried but it should be straightforward.
For this pull request I will not merge because there is already configuration to achieve the same goal. We definitely could do a better job for "inactive_setting" documentation. Sorry about that. But please keep up for contribution.
-- wpc
-- wpc
—
Reply to this email directly or view it on GitHub.

Sadly, beanstalk doesn't let you set the limit to 0 :( (See http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options.html#command-options-general-autoscalingasg)
I'll toy with some other options, but otherwise perhaps we might need to look at alternatives such as the above PR.

Hi, @mefellows:
Yes I know it said in document, but you do can set to 0. ElasticBeanstalk used to have that constrain, but it changed recently ( Maybe they do listen to our feature request :-)).
-- wpc

Sorry for the delay in getting back to you @wpc, I have been traveling for the past 5 weeks.
Unfortunately, at least in the ap-southeast-2 region, I am unable to set that value to 0 - when I do so I get a configuration error back from the AWS API.
i.e.
    inactive_settings:
      # reduce instance count to 0 to save cost
      - namespace: aws:autoscaling:asg
        option_name: MinSize
        value: "0"

Is not allowed, but a value of 1 or greater is allowed. I will test this again today and provide more information. I will also contact our TAM to see if this feature request might be incorporated. In the likely event the feature won't be incorporated, would you support this or a similar PR for this type of deployment?

Here is the error message returned from the API when running eb_deploy with above suggestion (run with the --debug flag enabled). Confusingly, the error seems to be about batch size even though that option is completely ommitted from my configuration, so should be set to a default:
I, [2015-08-03T14:28:43.002834 #45291]  INFO -- : [Aws::ElasticBeanstalk::Client 400 1.881137 0 retries] update_environment(environment_id:"e-rjubczzsim",option_settings:[{"namespace"=>"aws:autoscaling:asg","option_name"=>"MinSize","value"=>"0"},{"namespace"=>"aws:autoscaling:asg","option_name"=>"Cooldown","value"=>"60"}]) Aws::ElasticBeanstalk::Errors::ConfigurationValidationException Configuration validation exception: Invalid option value: '0' (Namespace: 'aws:autoscaling:updatepolicy:rollingupdate', OptionName: 'MaxBatchSize'): Value is less than minimum allowed value: 1

/opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.1.1/lib/seahorse/client/plugins/raise_response_errors.rb:15:in `call': Configuration validation exception: Invalid option value: '0' (Namespace: 'aws:autoscaling:updatepolicy:rollingupdate', OptionName: 'MaxBatchSize'): Value is less than minimum allowed value: 1 (Aws::ElasticBeanstalk::Errors::ConfigurationValidationException)
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.1.1/lib/aws-sdk-core/plugins/param_converter.rb:21:in `call'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.1.1/lib/seahorse/client/plugins/response_target.rb:18:in `call'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.1.1/lib/seahorse/client/request.rb:70:in `send_request'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/aws-sdk-core-2.1.1/lib/seahorse/client/base.rb:207:in `block (2 levels) in define_operation_methods'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/aws_driver/beanstalk.rb:25:in `update_environment_settings'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/throttling_handling.rb:13:in `block in method_missing'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/utils.rb:13:in `backoff'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/throttling_handling.rb:12:in `method_missing'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/eb_environment.rb:37:in `block in apply_settings'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/eb_environment.rb:120:in `with_polling_events'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/eb_environment.rb:36:in `apply_settings'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/deployment_strategy/blue_green.rb:29:in `deploy'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/default_component.rb:16:in `deploy'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/environment.rb:32:in `block in deploy'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/environment.rb:31:in `each'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer/environment.rb:31:in `deploy'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer.rb:214:in `deploy'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/lib/eb_deployer.rb:257:in `cli'
	from /opt/rubies/2.1.2/lib/ruby/gems/2.1.0/gems/eb_deployer-0.6.0.beta5/bin/eb_deploy:11:in `<top (required)>'
	from /opt/boxen/rbenv/versions/2.1.2/bin/eb_deploy:23:in `load'
	from /opt/boxen/rbenv/versions/2.1.2/bin/eb_deploy:23:in `<main>'

Nevermind the above error - I need to dig further into this as it appears the rolling update settings can't be used in conjunction with this approach. That being said, with this approach you are still left with a 'RED' environment and a Load Balancer that you are paying for. It would still be preferable to remove the old environment altogether. What are your thoughts?

Hi, @mefellows:
I only tried MinSize=0  in us-east-1 region. I may try on other regions to verify once I got some time.
I think the left over ELB is the minimal cost we need to pay to keep the blue green deployment relative safe. But I may be too conservative. So if you feel in need of this strongly please change the pull request to make it an blue-green deployment configuration option instead of separated deployment strategy. E.g an top-level configuration field like "blue-green-terminate-inactive". Then I will be happy to merge it in.

Thanks @wpc, I'll look at this today and submit an updated PR.

Closing in favour of #52


Log data

Haii,
Thank you for your support.
is it all  the devices log will be stored in Hex format  or it will store the actual data which is sending by the device.
Actually i started the Visiontek device, but in the log file i am getting Hex format. Please clarify

It is the actual data sent by device represented in HEX format. Can I see the log?


Cocoapod not updated

Release 3.1.1 is not on Cocoapods. Currently I have compiler warnings due to M_PI being deprecated. I would love to update my Cocoapod to get rid of these warnings.

Sorry about that, just pushed 3.1.1 to CocoaPods


Disable all extensions and allow to enable selectively

I know there is alway an issue https://github.com/microsoft/vscode/issues/81950#issue-502557730. But it is locked. I want to inspect one extension issue, but I can't find a effective way to disable other extensions.

I disable all extensions, and try to restore the extsnion by setting history. It seems the settings sync data restore also has issue.

I click Yes, but doesn't work:

Maybe try this approach:

Use "Save Workspace As..." from the File menu to create XYZ.code-workspace.
From Command Palette run Extensions: Disable All Installed Extensions for this Workspace.
On Extensions view look in the Disabled section for the extension you want to enable. Open its gearwheel menu and choose "Enable (Workspace)".

When you have finished your investigations you can close the workspace from the File menu, then optionally delete the XYZ.code-workspace file to tidy up.

You can also use settings profiles feature for your scenario - https://code.visualstudio.com/updates/v1_70#_settings-profiles. Please note that this feature is enabled by default in latest insiders and thus you do not need the mentioned setting to enable.


Switch to ramda

We rely on immutable for the application state. However, we need a good utility belt library for handling plain JS objects.
We used lodash until now, but perhaps we should swith to ramda as it has a more functional  interface (with curried functions by default as well as parameter omissions).
Should we drop lodash and switch to ramda? Ramda has more functional-style. @andon what say you?

Yes, sure. We anyway don't have many places where we use lodash at the moment.
The question is if we should go with ramda or lodash-fp. I guess any of them would suffice.
Even though you suggest that we should look into utility lib for handling plain JS object, I think it might be better to try to also use the same lib to help with immutables as well. Seems that ramda has more traction in that direction, so we can go with it.
https://medium.com/@drboolean/lenses-with-immutable-js-9bda85674780

Re. Lenses, they are quite useful when drilling down the application state, but they don't allow you to  up the tree like zippers do.  In  any case, ramda seems to offer good support for fp style work.


General Mug Use Guide?

Home Assistant Version: 2023.3
Ember Mug Component Version: 0.5.0-beta-5

Not as much of a technical question here.  What is the proper workflow for using the mug?
As in, how to turn it off? When to charge etc.
I have had my mug for a few weeks and used it every day, and I still, fail to understand the correct way to use the mug.
I have tried putting the charger on the kitchen counter and charging it after it's washed, but I find the battery doesn't last long enough to finish my coffee at my desk.
So I thought I would put the charger on my desk so I could charge it during and after I am done drinking.  This resulted in the mug not turning off and even the few drops of coffee at the bottom of my mug roasting and roasting until it's baked in.  Multiple times I would pick it up and hold down the power button so that the lights would go black but it would wake right back up when I set it back onto the charger.
Speaking of lights I have noticed many light patterns.
Green (My set light color) Means the mug is on?
Pulsing White: cooling?
Pulsing red: charging?
Holding the power down:
3 seconds black: Off?
5 seconds pulsing blue: pairing mode?
10 seconds blinking yellow: ??
15 seconds blinking red: factory reset?
  But I have had what feels like super inconsistent results using the mug.  Sometimes not heat at all, and sometimes not stop heating.
I was hoping someone could walk me through their process.

Do you keep it on the charger while drinking?
How do you stop it from heating?
(I noticed in the app there was a setting to stop heating, I have not found that in the HASS integration.)
When do you charge it back up?

Hi, I'm not really sure what you mean. I don't believe there is a "proper" workflow. They do have a "quick start guide" that comes with the mug I believe, it's also available on their website
I've had it for a while now, and I've never turned it "off". I usually just leave it on the charger and remove it only to use it, drink my coffee, rinse it out and the put it back on the charger. It is true that the battery doesn't last that long. About an hour or two, depending on how much it needs to heat the liquid.
As for the lights, you're mostly correct. Green also means charged, so you might want to choose another colour to avoid confusion. A quick summary of the quick start guide is:
Lights:

Solid White: Temperature reached
Heating/cooling: Pulsing white
Low battery: Slowly pulsing red
Dead battery: solid red
Fully charged: Solid green
Normal: Your selected colour
Blinking blue: Pairing Mode

Modes:

Hold down for 4-5 seconds to turn off
Press once when off to turn on
Hold for 5-7 seconds to enter pairing mode (it will blink blue)
Hold 14 seconds until light flashes red to reset. Flashing yellow is a warning that it will reset if you keep holding.

As stated above, I just leave my mug on and on the charging base turning it off, doesn't seem to really turn it off anyway, as it will wake automatically when you do basically anything. And this way it's always charged and ready for use.
No, I do not know how to trigger the "stop heating" manually. I can look into it, but for now it is not possible. The mug will automatically stop heating when it's at the correct temperature or if the battery gets too low. However, yes, if there is still "liquid" in the mug (aka it's wet) it will keep heating and can dry up coffee or sediment in the bottom, so I usually rinse and dry it out after I'm done before putting it back on the charger.

Thank you for your helpful insight.

No problem! I've added a link to the README in case any others are missing the guide.
I think that's probably as much as we can do here, but feel free to issues if you have problems in future.


chore: bdd-spring-1572593116 to 0.0.1

chore: Promote bdd-spring-1572593116 to version 0.0.1

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by:
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approvers:
If they are not already assigned, you can assign the PR to them by writing /assign  in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


Rename "element" to "component"

Given that we're pretty much copying React we should probably copy its terminology too. This is gonna be kind of rough to change now, but it's still doable.

Done: https://github.com/idom-team/idom/pull/279

Done: https://github.com/idom-team/idom/pull/279


Adjust mangled names in the failing pre-specialization test.

What's in this pull request?

Adjust mangled names in the failing pre-specialization test.
Resolved bug number: (SR-)

rdar://25664645

Before merging this pull request to apple/swift repository:

[ ] Test pull request on Swift continuous integration.

Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please smoke test
    OS X platform               | @swift-ci Please smoke test OS X platform
    Linux platform              | @swift-ci Please smoke test Linux platform

Validation Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please test
    OS X platform               | @swift-ci Please test OS X platform
    Linux platform              | @swift-ci Please test Linux platform

Note: Only members of the Apple organization can trigger swift-ci.

… contain a 'q' symbol.

@swift-ci Please smoke test

Thank you!


Add an Enumeration Knob

This could be like a string input, but only accepts values off a defined set: e.g.
"Back", "Front", "Double-sided"
Probably requires in-node knobs first; the node panel should have a knob which, when clicked, will present a drop-down or similar from which a value can be selected.

Wishlist item:  this Node (no wait...all nodes) should also have a meta
attribute assigning it to a configuration surface that would be used in the
viewer to expose a select type control to the end user.
On Dec 15, 2015 8:27 AM, "kkananen"<EMAIL_ADDRESS>wrote:

This could be like a string input, but only accepts values off a defined
set: e.g.
"Back", "Front", "Double-sided"
Probably requires in-node knobs first; the node panel should have a knob
which, when clicked, will present a drop-down or similar from which a value
can be selected.
—
Reply to this email directly or view it on GitHub
https://github.com/vizorvr/vizor/issues/972.

@kkananen we already have a few nodes that have dropdowns for the purpose (they don't look like dropdowns much). However, a knob that snaps to specific positions (i.e. discrete vs continuous) is interesting, i'll have a think. Keeping scope under close watch here..
@eric-schleicher would that be within the VR experience, or somehow around it, or both? It's already programmatically possible to control nodes from outside, I think it's more of a design issue for the editor UI.

@kkananen  I understand this to be a knob that the user would be able to pre-define some values, instead of just being from 0 to 1 float. Is that right? Do you have a specific use-case in mind for this?
Like Georgi says, we used to have some drop-down values. For example for Side we had a dropdown that had pre-defined values of "Front, Back, Double-sided" and would actually just output float 0-2. There was no way for the user to define those values though.

I would be nice to feed an array (simple array or  key-value-pair objects) that would then show up as some form of select control.


DCD Backend: Sporadic CORS error received by frontend

When running frontend and backend locally, a CORS error is encountered some times; and some times not:
Access to XMLHttpRequest at 'http://localhost:5000/projects' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
The issue seems to resolve itself if you refresh the browser after a while.

looking at this issue, it seems the problem is not directly a CORS issue.
checking the request and response headers:

we see

no access-control-allow-origin header in the response
Bearer error="invalid_token" in the response
we sent an authorization header Bearer null in the request

looking at our backend code, and the middlewares, we see
  app.UseAuthentication();
  app.UseAuthorization();
  app.UseCors(_accessControlPolicyName);

my interpretation is that the authentication middleware runs first, sees an invalid token, says no, and never let's the CORS middleware have it's say. hence no allow origin header gets set, and the browser interprets this as a cors error.
changing the sequence to
  app.UseCors(_accessControlPolicyName);
  app.UseAuthentication();
  app.UseAuthorization();

(as btw also suggested by some official MS docs about middlewares, look for "must appear") changes the request and response headers:

we're still sending a null token, which is invalid according to the reponse, but the cors header gets set and no CORS error triggered in the browser. yeahy.

now i don't know much about the console, and the sequence of logs, but based on the logs

it seems like the requests are run before the token is acquired by the msal library, as the msal:acquireTokenSuccess event is emitted after our requests fail.
is the log sequence a reliable indicator for when things happen, @aronhoyer ? shall I investigate further down this path? or am I on the wrong track here?


Set the backupPath supplied to the ConnectionOption to use a default

The backupPath parameter now has a default of an empty string.
Fixes #33.

Fix alignment in the code.


Personalization.getSubstitutions() return type incorrect in index.d.ts TypeScript definition file

Resolves #367.

Hello @blove,Thank you for the PR! We will be reviewing this PR soon, in the mean                                              time, if you have not, please be sure to                                                                                sign our CLA so that we can merge your changes. Thanks again!                                             Team DX

It appears that the Travis build failed, but the error do not appear to be related to my simple update to the index.d.ts TypeScript definition file.
Multiple tests failed with:

Uncaught AssertionError: response code is not correct: expected 401 to equal 200

Thanks again for the PR @blove! Please take a moment to fill out this form so that we can send you some swag :)


Unable to launch devcontainer

Issue
Unable to open the devcontainer without changing the azure-cli feature version.
Script error
ERROR: failed to solve: process "/bin/sh -c cp -ar /tmp/build-features-src/java_3 /tmp/dev-container-features  && chmod -R 0755 /tmp/dev-container-features/java_3  && cd /tmp/dev-container-features/java_3  && chmod +x ./devcontainer-features-install.sh  && ./devcontainer-features-install.sh  && rm -rf /tmp/dev-container-features/java_3" did not complete successfully: exit code: 1

Docker error
Error: Command failed: docker buildx build --load --build-arg BUILDKIT_INLINE_CACHE=1 -f /tmp/devcontainercli-ken/container-features/0.40.0-1683775347331/Dockerfile-with-features -t vsc-root-rwa-java-bd84f29a2e9777c7e816d9c5caa1490809fb1cb2fbc24fbfd1ffc1dab8e45b9f --target dev_containers_target_stage --build-arg IMAGE=java:17 --build-context dev_containers_feature_content_source=/tmp/devcontainercli-ken/container-features/0.40.0-1683775347331 --build-arg _DEV_CONTAINERS_BASE_IMAGE=dev_container_auto_added_stage_label --build-arg _DEV_CONTAINERS_IMAGE_USER=root --build-arg _DEV_CONTAINERS_FEATURE_CONTENT_SOURCE=dev_container_feature_content_temp /home/ken/code/rwa-java/root-rwa-java/.devcontainer

Workaround
Edit the features of the devcontainer and change the azure-cli to latest instead of version 2.44.1 which appears to be causing the issue.
        "features": {
		"azure-cli": "latest",
		"docker-from-docker": "latest",
		"ghcr.io/devcontainers/features/java:1": {
			"version": "17",
			"installMaven": true,
			"mavenVersion": "3.8.6"
		},
        "ghcr.io/devcontainers/features/terraform:1": {
        },
		"ghcr.io/eitsupi/devcontainer-features/jq-likes:1": {}
	},

Closed by #118


Change prefix handling

The build system is stripping the file prefix to clean it and make it readable. OTOH that was preventing changing it, which is useful when you have multi-sub-projects built by n64.mk, such as tiny3d. The debug symbols then are all relative paths like /src/* and it is not possible to properly map them to different sub projects for debugging. This change allows overriding the prefix so that it is possible to do this:
.PHONY: tiny3d
tiny3d:
	$(MAKE) -C $(T3D_INST) FILE_PREFIX=tiny3d

Then, all files become prefixed by tiny3d/ allowing mapping to the workspace source files.

Thank you! I did the changes. Notice that I've also changed ?= to = b/c changing the variable globally doesn't mean much. It is only meant to be overridden via make parameters or target specific variables.


[V1] Comment and whitespace from css are still present in distribution build.

I can see many css comments compiled in my distribution build which increase the global size.

Version
1.0.0
Reproduction
http://www.webpackbin.com/NkoxEJM9G
Steps to reproduce
const HelloWorld = styled(HelloWorldUnStyled)`
  border-bottom: 2px solid blue;
  /* this comment will be distributed */
  border-top: 2px solid yellow;
  /* with all the spaces as well                                                            */
  border-bottom: 2px solid green;
`;

Expected Behavior
var a=b(c)`border-bottom: 2px solid blue;border-top: 2px solid yellow;border-bottom: 2px solid green`;

Actual Behavior
var a=b(c)`border-bottom: 2px solid blue;/* this comment will be distributed */border-top: 2px solid yellow;/* with all the spaces as well                                                            */border-bottom: 2px solid green;
`;

It's important

Have you tried the minify option? https://styled-components.com/docs/tooling#minification


HJ Local Test Branch Merge

-- added velocity and complex (partial state) controllers
-- updated requirements.txt

Ooh! Interesting. I saw the code review, but didn't realize that you were planning to delete his. Okay! Let me know if it comes back!

This branch was attached to the forked repository! I found it not a good way as forked repository did not automatically sync with the original repository. So I recreated "hj-updates" branch on the original repository. same for the branch in kinova-arm!


Show thumbail on downloadable content (non-playable/post)

Right now we only show the download button and no thumbnail
Some users/creators would want to see the thumbnail associated with the download. This section can be collapsible/persisted for those that may not want to see it.

@keikari wanna take a shot at this? Someone requested on Twitter.

Shot something. Is the collapsible part necessary? Images in the PR

Should be fine without it, awesome!
Maybe a hover on the thumbnail for download also? We can add that later too.


Parallel test (parallel='tests') does not work when priority is used in Test

TestNG Version :6.9.12

Note: only the latest version is supported

Expected behavior
When priority is used for all test case in all test class and test are run in parallel using parallel="tests" mode from testng.xml file.
Then all the test case must run in the same order as priority set for each test case without any issue
Actual behavior
There are 3 test class and each test class having 3 tests method. And all test methods having the priority starts from 1 to 3 in each test class. The last test cases (3 rd one) of each class supposed to navigate to the google URL that is given in the test cases
When test are from testNG.Xml file using parallel='"tests" then it does not execute all the test case from all class.Only first test case of each test class gets executed and remaining get skipped. But when the same test class has been executed using parallel="classes" then it worked fine.
Note:
If the priority are set in sequence then it works fine. For example 1-3 in first test class and 4-6 in  second test class and 6-9 in third class . But issue occurs only when all test class having the same priority order.
It shows all test is passed from eclipse console, which incorrect as my test is expected to navigate to the url but it did not.To see the issue you need to look on to the each  browser instance.
Is the issue reproducible on runner?

[ ] Eclipse

Test case sample

Please, share the test case (as small as possible) which shows the issue
Steps to reproduce

Please copy all 4 class file which is mentioned below and create the maven project in eclipse and run the test from testng.xml
1.Run the test from Testng.xml file from eclipse
2.Now see the browser of all 3 instance.The 3 rd test case is supposed to navigate to the url(google), but it executed the first test case of first 2 test class and all test case of 3 rd test class

It means it always execute only first test case of all test class and all test case of last test class.

But if you see the eclipse console then it will show all test is passed because no assertion was done in the test,It was just to navigate.
When priority is removed and ran the tests then it worked fine .
So I believe there is an issue with priority and parallel="tests".
Important
Please use the testNG.xml file which I have provided to reproduce the issue. Do not change anything in this.
BrowserInit class, This class launch the browser using ThreadLocal.(You must use this class to launch the browser)

public class BrowserInit {
	private static ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>();
	@BeforeClass
	public void beforeCLass(){
		          System.setProperty("webdriver.chrome.driver","/browserdriver/chrome/mac/chromedriver");
		driver.set(new ChromeDriver());
	}

	public WebDriver getDriver(){

		return driver.get();
	}

TestClass 1(TestNG1)

import org.testng.annotations.Test;
public class TestNG1 extends BrowserInit{

	@Test(priority=1)
	public void test1(){
		getDriver().navigate().to("http://testng.org/doc/download.html");

		System.out.println("TestNG Test 1");
	}

	@Test(priority=2)
	public void test2(){
		getDriver().navigate().to("https://github.com/pmd/pmd-eclipse-plugin/blob/master/ReleaseNotes.md");
		System.out.println("TestNG Test 2");
	}

	@Test(priority=3)
	public void test3(){
		getDriver().get("https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=parallel%20testing%20using%20test%20ng");

		System.out.println("TestNG Test 3");
	}
}

TestClass 2(TestNG2)

public class TestNG2 extends BrowserInit
{

	@Test(priority=1)
	public void test1TestNG2(){
			getDriver().navigate().to("http://testng.org/doc/download.html");

		System.out.println("TestNG 2 Test 1");
	}

	@Test(priority=2)
	public void test2TestNG2(){
		System.out.println("TestNG2 Test 2");
		getDriver().navigate().to("http://www.nakov.com/inetjava/lectures/part-1-sockets/InetJava-1.3-Multithreading.html");

	}

	@Test(priority=3)
	public void test3TestNG2(){
		getDriver().get("https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=parallel%20testing%20using%20test%20ng");

		System.out.println("TestNG2 Test 3");
	}
}

TestClass 3(TestNG3)

public class TestNG3 extends BrowserInit
{

	@Test(priority=1)
	public void test1TestNG3(){
		getDriver().navigate().to("http://testng.org/doc/download.html");

		System.out.println("TestNG3 Test 1");
	}

	@Test(priority=2)
	public void test2TestNG3(){
		getDriver().navigate().to("https://www.tutorialspoint.com/java/java_thread_synchronization.htm");

		System.out.println("TestNG3 Test 2");
	}

	@Test(priority=3)
	public void test3TestNG3(){
		getDriver().get("https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=parallel%20testing%20using%20test%20ng");

		System.out.println("TestNG3 Test 3");
	}
}

TestNG.xml file (You must use this file to reproduce the issue)

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Extent Parallel Test" parallel="tests" thread-count="6">

     <test name="Mac_Chrome">
        <classes>
            <class name="com.test.TestNG1" />
            <class name="com.test.TestNG2" />
            <class name="com.test.TestNG3" />

        </classes>
    </test>
</suite>

Thanks for the report. Do you think it is similar to #1066?

I think it is some what similar to this but not exactly. As in my case I have used parallel="tests" and have put all the test class in one test tag as shown below. But if i create test tag for each class separately then it works fine. And also it works fine when priority is removed from tests.
I think this issue exist in thread pooling. Thread is overlapped to last session after running the first test case of each test class.
Issue occurs when test runs in parallel as shown below
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Extent Parallel Test" parallel="tests" thread-count="6">
 <test name="Mac_Chrome">
 <classes>
 <class name="com.test.TestNG1" />
<class name="com.test.TestNG2" />
  <class name="com.test.TestNG3" />
 </classes>
</test>
</suite>
But the same tests works fine when it is executed in this way as shown below
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Extent Parallel Test" parallel="tests" thread-count="6">
<test name="Mac_Chrome1">
<classes>
 <class name="com.test.TestNG1" />
</classes>
  </test>
<test name="Mac_Chrome2"
<classes>
<class name="com.test.TestNG2" />
</classes>
</test>
<test name="Mac_Chrome3">
<classes>
<class name="com.test.TestNG3" />
</classes>
</test>
</suite>
Note : After making fixes for this issue and the other which you tagged , It must be tested using all possible scenario (Parallel tests) . Please let me know once these issues are fixed so that I can perform one round of testing.
Are you able to reproduce this issue using my code mentioned above ?

@juherr - I think I can recreate the problem. I also have a hunch of what might be going wrong. I think its related to our GraphThreadPoolExecutor which picks up freenodes for execution. But the issue here is that it keeps submitting new tasks from the ready list, after a method has completely run to completion. This is very evident in cases, wherein a TestNG test is making use of Selenium wherein there are multiple test methods which share the same webdriver (the class that facilitates talking to a web browser). Here's a full fledged sample which if executed, will trigger the problem every single time and there will be test failures.
Pre-requistes :

Chrome browser should be installed and the chromedriver binary has to be setup.
Selenium libraries should be available in classpath. Instructions available here.

Base Class
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;

public class BaseClass {
    private WebDriver driver;

    @BeforeClass
    public void beforeClass() {
        driver = new ChromeDriver();
    }

    WebDriver getDriver() {
        return driver;
    }

    @AfterClass
    public void afterClass() {
        driver.quit();
    }
}

Test class
public class TestNG1 extends BaseClass {
    @Test (priority = 1)
    public void test1TestNG1() throws InterruptedException {
        String url = "http://testng.org/doc/download.html";
        getDriver().get(url);
        Assert.assertEquals(getDriver().getCurrentUrl(), url);
    }

    @Test (priority = 2)
    public void test2TestNG1() throws InterruptedException {
        String url = "http://www3.lenovo.com/in/en/";
        getDriver().get(url);
        Assert.assertEquals(getDriver().getCurrentUrl(), url);
    }

    @Test (priority = 3)
    public void test3TestNG1() throws InterruptedException {
        String url = "https://github.com/";
        getDriver().get(url);
        Assert.assertEquals(getDriver().getCurrentUrl(), url);
    }

}

Suite xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="1336_Suite" verbose="2"  parallel="classes" thread-count="10">
    <test name="1336_Tests">
        <classes>
            <class name="com.rationaleemotions.github.issue1336.TestNG1"/>
            <class name="com.rationaleemotions.github.issue1336.TestNG2"/>
            <class name="com.rationaleemotions.github.issue1336.TestNG3"/>
        </classes>
    </test>
</suite>

The issue goes away if I resort to introducing a CountDownLatch in GraphThreadPoolExecutor as below. But I am not able to gauge the repercussions of this hack (I am already having trouble with getting the build to pass tests, which is kind of expected)
  private void runNodes(List<T> freeNodes) {
    List<IWorker<T>> runnables = m_factory.createWorkers(freeNodes);
    CountDownLatch latch = null;
    if (! runnables.isEmpty()) {
      latch = new CountDownLatch(runnables.size());
    }
    for (IWorker<T> r : runnables) {
      if (latch != null && (r instanceof TestMethodWorker)) { //Use latch only for testmethod workers
        r.setLatch(latch);
      }
      m_activeRunnables.add(r);
      ppp("Added to active runnable");
      setStatus(r, Status.RUNNING);
      ppp("Executing: " + r);
      try {
        execute(r);
      }
      catch(Exception ex) {
        ex.printStackTrace();
      }
    }
    if (latch != null) {
      try {
        latch.await();
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }

Sorry for late update , This is can be reproduced without parallel test also following the same steps as mentioned above.

Hi, I’m having the same issue with parallel=‘classes’, if you add a priority it will cause each of the test methods in a class to run in different threads. Would this fix that? And is this available in a release?
Thanks

@ryudice - It should be part of released TestNG. What happens when you try using latest released version viz., 6.14.3 ? If you are still having a problem, I would request you to please create a new issue and include a full fledged simple standalone test, which we can use to reproduce the problem.

hi @krmahadevan , I created #1773. The issue does happen with the latest release.

I am getting the same issue with 6.14.3.
When removing priority the tests run in parallel.

The latest released version is 7.0.0-beta3. Please retry using this and report back the results.

I am getting the same issue with 6.14.3.
parallel="tests" are not working.
org.openqa.selenium.WebDriverException: Method has not yet been implemented (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'Vinoths-MacBook-Pro-4.local', ip: 'fe80:0:0:0:1069:571c:3483:79e8%en0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.14.5', java.version: '1.8.0_191'
Driver info: io.appium.java_client.AppiumDriver
Capabilities {browserName: chrome, chromeOptions: {androidPackage: com.android.chrome}, databaseEnabled: false, desired: {browserName: chrome, chromeOptions: {androidPackage: com.android.chrome}, deviceName: Android Emulator, eventTimings: true, maxTypingFrequency: 8, nativeWebTap: true, newCommandTimeout: 0, noReset: true, noSign: true, orientation: PORTRAIT, platform: ANDROID, platformName: Android, platformVersion: 8.0, proxy: {proxyAutoconfigUrl: http://<IP_ADDRESS>:19876/pac.js, proxyType: PAC}, udid: emulator-5554, unicodeKeyboard: true, version: , webdriver.remote.quietExceptions: false}, deviceManufacturer: unknown, deviceModel: Android SDK built for x86_64, deviceName: emulator-5554, deviceScreenSize: 768x1280, deviceUDID: emulator-5554, eventTimings: true, hasMetadata: true, javascriptEnabled: true, locationContextEnabled: false, maxTypingFrequency: 8, nativeWebTap: true, networkConnectionEnabled: true, newCommandTimeout: 0, noReset: true, noSign: true, orientation: PORTRAIT, platform: ANDROID, platformName: ANDROID, platformVersion: 8.0.0, proxy: Proxy(pac: http://<IP_ADDRESS>..., takesScreenshot: true, udid: emulator-5554, unicodeKeyboard: true, version: , warnings: {}, webStorageEnabled: false, webdriver.remote.quietExceptions: false, webdriver.remote.sessionid: 0cfc524ea0fe4d338dd79aa398f...}
Session ID: 0cfc524ea0fe4d338dd79aa398f09ad8
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:231)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:46)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.getCurrentUrl(RemoteWebDriver.java:287)
at nbc_MobWeb_testcases.TC001_Top_stories_playback_with_pre_roll.Mob_NbcPage(TC001_Top_stories_playback_with_pre_roll.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.access$000(SuiteRunner.java:40)
at org.testng.SuiteRunner$SuiteWorker.run(SuiteRunner.java:489)
at org.testng.internal.thread.ThreadUtil$1.call(ThreadUtil.java:52)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)

@OTSAppsJenkins - Please try using latest released version of TestNG 7.0.0-beta5 at the moment.

I am getting this issue on the newer versions of the TestNG 7.8.0 and 7.7.0. I have two devices that I want to test simultaneously and have two different tests for it in the .xml file
`<?xml version="1.0" encoding="UTF-8"?>`
`<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">`
`<suite name="Extent Parallel Test" parallel="tests" thread-count="6">`
    ` <test name="Test1">`
          ` <classes>`
             ` <class name="com.test.TestNG1"/>`
              `<class name="com.test.TestNG2"/>`
            `  <class name="com.test.TestNG3"/>`
           ` </classes>`
    `</test>`

    ` <test name="Test2">`
          ` <classes>`
             ` <class name="com.test.TestNG1"/>`
              `<class name="com.test.TestNG2"/>`
            `  <class name="com.test.TestNG3"/>`
           ` </classes>`
    `</test>`

`</suite>`

It looks something like this (I copied the code of the kind Sir at the top and changed it a bit)
In each class I have tests with priority 1, 2 and 3. Based on how I understand it, it should run class TestNG1 and all methods in it based on the priority, then it runs TestNG2 and all methods in it based on the priority and same process for the TestNG3.
But instead it runs all methods with the priority 1 first then methods with priority 2 and at the end methods with priority 3, even though that they are in different classes.
When I stop using parallel="tests", it is working correctly, it is executing classes in order.

@DarkoShishkaa The priority is suite scoped and the behavior you see is the expected one.
The feature that is used for the behavior you expect is the dependsOnMethods property.


1.19 issue

I dont know if its just me but I keep getting this.
[00:13:19] [Server thread/INFO]: [Magic] Vault not found, 'currency' cost types unavailable
[00:13:19] [Server thread/INFO]: [Magic] Registered currencies: item,mana,xp,health,currency,sp,levels,hunger
[00:13:19] [Server thread/INFO]: [Magic] Loaded 555 spells
[00:13:19] [Server thread/INFO]: [Magic] Loaded 12 progression paths
[00:13:19] [Server thread/INFO]: [Magic] Loaded 16 crafting recipes
[00:13:19] [Server thread/INFO]: [Magic] LogBlock not found
[00:13:19] [Server thread/INFO]: [Magic] Factions not found
[00:13:19] [Server thread/INFO]: [Magic] WorldGuard not found, region protection and pvp checks will not be used.
[00:13:19] [Server thread/INFO]: [Magic] Towny not found, region protection and pvp checks will not be used.
[00:13:19] [Server thread/INFO]: [Magic] Lockette nor LockettePro found, will not integrate.
[00:13:19] [Server thread/INFO]: [Magic] GriefPrevention not found, claim protection will not be used.
[00:13:19] [Server thread/INFO]: [Magic] NoCheatPlus not found, will not integrate.
[00:13:19] [Server thread/INFO]: [Magic] dynmap not found, not integrating.
[00:13:19] [Server thread/INFO]: [Magic] Citizens not found, Magic trait unavailable.
[00:13:19] [Server thread/INFO]: [Magic] LightAPI not found, Light action will not work
It keeps saying this or that will not work. I dont know if thats supposed to happen or not. If it is then I dont care, if it is tell me how to fix it. (Also I'm still using the 1.18 RP because it keeps saying http://rp.elmakers.com/Magic-RP-1.19.zip not found)

Nothing to do with 1.19.
It's listing the plugins Magic integrates with. If you have any of those plugins and it's saying they're not found, something is wrong.
If you have none of those plugins, then it is just telling you that is the case.


Spin CLI should allow me to remove a deployment

Is your feature request related to a problem? Please describe.
I can't clean up a deployment I created within the workflow for the CLI
Describe the solution you'd like
I would like to be able to run "spin destroy" and have my deployment removed from Fermyon Cloud
Describe alternatives you've considered
The only alternative is logging into the UI and doing it manually today. A plugin could be created to handle this (and other cloud tasks like listing, etc). I think this should either be in core CLI or all the cloud stuff including this moved off.

@chrismatteson we are adding more to the spin cloud CLI such that ui actions can be taken with the CLI. Deleting apps is one of the command paths we'd like to take down the road


pip install thunder-python fails

No matching distribution found for distribute==0.0
(setup: Anaconda + Python 2.7.11)
It looks like the distribute package has been deprecated and re-merged with setuptools fairly recently. I know you're in the middle of a major refactor and push for 1.0, so my apologies if you were already aware of this.

@magsol thanks for having flagged this! The 1.0.0 version of thunder-python should now be published, mind confirming that that one installs correctly?

Successfully installed bolt-python-0.5.1 thunder-python-1.0.0
Worked perfectly! Thanks!

terrific, thanks!


Feature Request: WeakMap

This issue was originally filed by @pjako

I would like to have weak references in dart, I know its hard to do in javascript, currently at least.
Currently I want to give an object some uniqueID and track it in a Map without preventing the object to get garbage collected.

Almost a year, time for a ping.

Weak references in the dart vm for Flutter would be useful.

A "weak reference" is very different from a weak map.
The weak map doesn't expose garbage collection at all, it just optimizes around it (not keeping entries that you can't access any more). A weak reference actually changes behavior depending on garbage collection.
You could say that the weak reference breaks the abstraction that garbage collection may or may not happen behind the scenes.
That said, this issue is a request for a weak map, and Expando is the answer to that request. When compiled to JS, it is backed by a WeakMap if that is available (and in most modern browsers, it is available, at least with the basic features needed here).

Just for reference, I've publish this package: https://pub.dev/packages/weak_map

@marcglasberg, now that Dart is supporting WeakRef and Finalizer, it would be great to release a new version of the weak_map package that uses WeakRef and Finalizer to support iterable keys and values.
https://github.com/dart-lang/sdk/issues/47772

Fyi @polina-c who may be interested in helping implement this.

@jacob314
here is my implementation of WeakHashMap that use WeakReference and Finalizer.
https://pub.dev/packages/weak


fix: breadcrumb resizing issue

Description
set breadcrumb width to (85%, 15%), introduced in #7720

Task Item
close #8361

Screenshots

Coverage decreased (-0.02%) to 55.748% when pulling 521f3e24cfd673cf99bf928e78cf138294008983 on zhixzhan/resizing-fix into cb5a8785240e52a1838b701ada9777dcbf1e4a67 on main.

@zhixzhan were you able to repro the ResizeObserver Loop error and after the PR did the issue stop surfacing?
I think it still makes sense to merge the PR as we dont need to set the breadcrumb width through JS and we can take these changes in @sorgh @boydc2014

Do you have a solid repro for the issue? @zhixzhan
if using percentage width (which was both me and Srinaath recommendation in the first place) solves the original issue, please go with it, it's better than manual calculations in JS.

I agree with the above - if this does solve the ResizeObserver issue, it should be approved and merged. I'm having trouble reproing the original bug, though, so it's hard for me to know whether this does or not.

@srinaath @hatpick @beyackle I can not repro this bug, after removing JS calculation, UI is still looks good, and should also improve page performance.


Created assets, some linting

-Linted ArtCommand.php
-Moved the ASCII art from the command file into their own assets dir
-Added a util function to retrieve assets
-Added art command tests

:+1: nice cleanup


Dev

Fixes # .

Changes proposed in this Pull Request:

Test out master branch firebase deploy

Screenshots:

To Test:

We've got some unpublished  changes sitting in dev right now, if we do a master merge we could publish a patch as well if you update the package.json version & changelog.

We've got some unpublished changes sitting in dev right now, if we do a master merge we could publish a patch as well if you update the package.json version & changelog.

ok. Dev is using 3.0.1-beta.0 version in package. What should it be?


"Libify" the Validator

What I am changing
At a high level, moves the "how debuggy are we" logic to the binary instead of the lib, and adds methods to the lib to enable the different debug states.

Returns Result<()> instead of bools from validation methods
Adds crate-specific Error and Result, based on thiserror, enabling fewer unwraps in the library
Adds some doctests
Tweaks the validation output in the binary
Disables tests and docs for the binary

Related Issues

Will need to be tweaked after #3 is merged to un-break the doctests

Marking as draft while I check out to see if I can't make the error handling even cleaner w/ better lifetime management.

D'oh just pushed up to this branch to merge in those changes!


Update GraphQL MP Example to include metrics

Environment Details

Helidon Version: 2.3.2
Helidon MP
JDK version: 11.0.7
OS: All
Docker version (if applicable):

Include instructions on how to use metrics with mp-graphql.

#3196


Add output for statoscope validate cli

Is your feature request related to a problem? Please describe.
When i start statoscope validate in CI/CD:
statoscope validate --input webpack-stats.json

if something went wrong (build not valid) i see warn/error and its cool, but if we dont have warn/error - i dont know current mertrics for e.g @statoscope/webpack/build-time-limits value
Describe the solution you'd like
i want to see output after call validate:
statoscope validate --input webpack-stats.json
# output in console:
{
  build-time: 74,
  entry-download-time: 30,
  # ...etc
}

Describe alternatives you've considered
no
Additional context
its really usable for calibration rules and we can create some beautiful report when using in CI/CD jobs

Hi! You can use statoscope query for that.
And here is some example

thanks you!


I can not use my contract ?

hi,
my contract is here:

but, when I use web3wift, the contract is not work.
this is my code:

I use the method"setFlagData" and "getFlagData", but no work.
the result like this:
the "setFlagData" result:
res:
.success([:])
and the "getFlagData" result:
get res:
.success(["0": ""])
what can I do?

Hello @wufeiafei
Are you sure that "getFlagData" method doesn't return an empty string for this msg.sender? If it does, than your result is correct, you get a default (empty) value.
Regarding the "setFlagData" result: .success([:]) is a valid response if you "call" this method, since it returns nothing in your contract code. To send a transaction and mutate a state your should use a send() method of transaction intermediate
Sincerely, Alex

the "getFlagData" method return:    .success(["0": ""])
I think the result should be "hello", when I used "setFlagData" method input.
but not get.

Can you use the latest version (0.4.1) and check the logs. When returned information is decoded there are log messages, it will help to trace a problem

From: Kevin<EMAIL_ADDRESS>Sent: Sunday, April 8, 2018 5:14:43 PM
To: BANKEX/web3swift
Cc: Alexander; Comment
Subject: Re: [BANKEX/web3swift] I can not use my contract ? (#43)
the "getFlagData" method return: .success(["0": ""])
I think the result should be "hello", when I used "setFlagData" method input.
but not get.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/BANKEX/web3swift/issues/43#issuecomment-379553797, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGKv98EHYRu5_urSEMmg5VbS2psl5Nywks5tmhtTgaJpZM4TLe2q.

hi, when I use the latest version (0.4.1),
the "setFlagData" method log message is:

and the "getFlagData" method log message is :

what is mistake？

Hello @wufeiafei
I've created a similar contract
pragma solidity ^0.4.21;

contract Whisper {

    struct Friend {
        string flagData;
    }

    mapping (address => Friend) friends;

    function setFlagData(string data) public {
        friends[0].flagData = data;
    }

    function getFlagData() public view returns (string data) {
        return friends[0].flagData;
    }

}

and submitted some data to it using remix. Here is my response:
["0": testData, "data": testData]

You can find a code in test cases in developer branch, function
func testUserCase()

yes, I test your code and get the"getFlagData" response like that: ["0": testData, "data": testData],when I submitted some data to it using remix.
But ,if I use "setFlagData" method by web3swift in iOS , the "setFlagData" method response is :
string
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000046874747000000000000000000000000000000000000000000000000000000000
Full data:
.success([:])
then, I use "getFlagData", the response is the old, not the new.
this is my code:

You use mutating (not “view” and not “pure”) method “setFlagData”, so when you “call” it - you do not send a transaction, but try to call a function that returns nothing (“returns ()”).
You should instead use send() method on intermediate and that a transaction will go into network and change a value in your contract

From: Kevin<EMAIL_ADDRESS>Sent: Monday, April 9, 2018 2:01:23 PM
To: BANKEX/web3swift
Cc: Alexander; Comment
Subject: Re: [BANKEX/web3swift] I can not use my contract ? (#43)
yes, I test your code and get the"getFlagData" response like that: ["0": testData, "data": testData],when I submitted some data to it using remix.
But ,if I use "setFlagData" method by web3swift in iOS , the "setFlagData" method response is :
string
0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000046874747000000000000000000000000000000000000000000000000000000000
Full data:
.success([:])
then, I use "getFlagData", the response is the old, not the new.
this is my code:
[1523271638574]https://user-images.githubusercontent.com/3910941/38494380-5411fb3c-3c28-11e8-91dd-9624418708e6.jpg
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/BANKEX/web3swift/issues/43#issuecomment-379714490, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGKv91OD0nOuwr4kRj5I3qRKGc3tnyJ3ks5tmz-DgaJpZM4TLe2q.

hi, I instead use send() method on intermediate,

but the result is fail.
string
0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
Transaction
Nonce: 1
Gas price:<PHONE_NUMBER>
Gas limit: 90000
To: 0xb6b34A03045D8Aa0D210788881bffEc10c4f166e
Value: 0
Data: 0xa46b5b6b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
v: 1
r: 0
s: 0
Intrinsic chainID: Optional(95518)
Infered chainID: Optional(1)
sender: nil
hash: Optional("0xe1719833c6cc8ccca0af6e24a0be8cbdc93aeefbd17237d56bfc217705e5e777")
set result
.failure(transactionSerializationError)
transactionSerializationError

I've found a bug in sending an unsigned transaction to external node. Fixed in #44

hi， when I use the lastst code by pod 'web3swift', git: 'https://github.com/BANKEX/web3swift.git',:commit =>'782d5ee'  ,
show the  erros like this:

what can I do?

hi,
I use the lastest code version 0.5.0.
but the use  "setFlagData" method in contract, the result also is bad.

the log and result is :
sender:
EthereumAddress(_address: "0x696e2405d2c914228e4409307372aacb470ad833")
Signature required 3 rounds
Transaction
Nonce: 0
Gas price:<PHONE_NUMBER>
Gas limit: 90000
To: 0xb6b34A03045D8Aa0D210788881bffEc10c4f166e
Value: 0
Data: 0xa46b5b6b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
v: 191071
r:<PHONE_NUMBER>03047457941187315055774630604535195829756633299156415369938984242572
s:<PHONE_NUMBER>296490632424069479196750027399791712033427709004373420558424659314
Intrinsic chainID: Optional(95518)
Infered chainID: Optional(95518)
sender: Optional("0x696e2405d2C914228E4409307372aACb470aD833")
hash: Optional("0xe8677fee1e5c800b478330c2de6980daf28776a519e5eff1c941c66f94e5d67c")
Transaction
Nonce: 0
Gas price:<PHONE_NUMBER>
Gas limit: 90000
To: 0xb6b34A03045D8Aa0D210788881bffEc10c4f166e
Value: 0
Data: 0xa46b5b6b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
v: 191071
r:<PHONE_NUMBER>03047457941187315055774630604535195829756633299156415369938984242572
s:<PHONE_NUMBER>296490632424069479196750027399791712033427709004373420558424659314
Intrinsic chainID: Optional(95518)
Infered chainID: Optional(95518)
sender: Optional("0x696e2405d2C914228E4409307372aACb470aD833")
hash: Optional("0xe8677fee1e5c800b478330c2de6980daf28776a519e5eff1c941c66f94e5d67c")
set result
.failure(nodeError("invalid sender"))
nodeError("invalid sender")
can you help me check it?

Are you using a parity node? Looks like a node doesn’t like EIP155 standard and can not check a signature with a high ChainID. Try to set web3.provider.network = nil and run the same code

From: Kevin<EMAIL_ADDRESS>Sent: Wednesday, April 11, 2018 8:43:08 AM
To: BANKEX/web3swift
Cc: Alexander; Comment
Subject: Re: [BANKEX/web3swift] I can not use my contract ? (#43)
hi,
I use the lastest code version 0.5.0.
but the use "setFlagData" method in contract, the result also is bad.
[1523425045711]https://user-images.githubusercontent.com/3910941/38598148-d49b11a6-3d8d-11e8-8ad1-57c0e9bab092.jpg
the log and result is :
sender:
EthereumAddress(_address: "0x696e2405d2c914228e4409307372aacb470ad833")
Signature required 3 rounds
Transaction
Nonce: 0
Gas price:<PHONE_NUMBER>
Gas limit: 90000
To: 0xb6b34A03045D8Aa0D210788881bffEc10c4f166e
Value: 0
Data: 0xa46b5b6b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
v: 191071
r:<PHONE_NUMBER>03047457941187315055774630604535195829756633299156415369938984242572
s:<PHONE_NUMBER>296490632424069479196750027399791712033427709004373420558424659314
Intrinsic chainID: Optional(95518)
Infered chainID: Optional(95518)
sender: Optional("0x696e2405d2C914228E4409307372aACb470aD833")
hash: Optional("0xe8677fee1e5c800b478330c2de6980daf28776a519e5eff1c941c66f94e5d67c")
Transaction
Nonce: 0
Gas price:<PHONE_NUMBER>
Gas limit: 90000
To: 0xb6b34A03045D8Aa0D210788881bffEc10c4f166e
Value: 0
Data: 0xa46b5b6b0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000968656c6c6f576562330000000000000000000000000000000000000000000000
v: 191071
r:<PHONE_NUMBER>03047457941187315055774630604535195829756633299156415369938984242572
s:<PHONE_NUMBER>296490632424069479196750027399791712033427709004373420558424659314
Intrinsic chainID: Optional(95518)
Infered chainID: Optional(95518)
sender: Optional("0x696e2405d2C914228E4409307372aACb470aD833")
hash: Optional("0xe8677fee1e5c800b478330c2de6980daf28776a519e5eff1c941c66f94e5d67c")
set result
.failure(nodeError("invalid sender"))
nodeError("invalid sender")
can you help me check it?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://github.com/BANKEX/web3swift/issues/43#issuecomment-380334064, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGKv99wxsKgP567l6KjntTfqk1HDQnUKks5tnZfsgaJpZM4TLe2q.

hi,
I added "web3.provider.network = nil " to code,but has errior：Cannot assign to property: '' is a get-only property。

I see the code in Web3+Protocols.swift：

so can not set web3.provider.network = nil

Can you test agains the latest master, after #48 you can set a network to nil

@wufeiafei Fixed by #48
Feel free to reopen the issue, if you still need help. 👍

i have a question: I already have SmartContract in Solidity, how can i get contract ABI in json?

If you use Remix, it’s in details on the first tab, near the “compile” button


Bash: Add PHP dependency manager composer as a command

Hi there,
composer is PHP's dependency manager, and I would like to propose that we add it as a command to bash language support. I see that npm is already in the list, which has equal grounds as composer.
Thank you.

Thank you for contributing @Ayesh!

Thank you @RunDevelopment. I'm sorry I forgot to update the tests.

Awesome, this is merged, thank you 🙏.


chore(execution): borrow transaction object when executing

This change is

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 73.11%. Comparing base (936bbe7) to head (17fd828).

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1669   +/-   ##
=======================================
  Coverage   73.11%   73.11%
=======================================
  Files          59       59
  Lines        8488     8488
  Branches     8488     8488
=======================================
  Hits         6206     6206
  Misses       1792     1792
  Partials      490      490

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

crates/blockifier/src/transaction/transactions.rs line 53 at r1 (raw file):
Previously, noaov1 (Noa Oved) wrote…
We start by leaving it consuming for external api

Done.


Camera is half transparent into an android modal

I've got the <Camera/> component (right from exemple in readme) into a modal and it is half transparent. It means that I can see the modal content behind the camera view as if a white opacity of 0.5 was applied.
This does not happen into a non-modal view.
I've found a workaround, I simply put a full height black background on the modal holder view when the modal is opened and then it works perfectly.
No rush, but very strange.
Android 8 (API26)
RN 0.48
react-native-camera 0.12.0

Code could look like that:
<View>
  some visible content through the modal only in the camera view
  <Modal>
    <Camera>
      This view will make the modal half transparent and I can see the text which is before/outside the modal
    </Camera>
  </Modal>
</View>

Having the same issue,
@l1br3 Could you please explain how to make this black background to fix that transparency? I tried wrapping  to  with black backgroundColor but this doesn't help.
Thanks.

@viacheslav-gotsuliak Simply apply a background on the background view, the one which is behind the modal.
When the modal is open, there is a black overlay background on the view under the modal.

opacity: 0.9 did the trick for me otherwise camera couldnt get through
<View>
    <Modal>
        <View style={{ flex: 1, backgroundColor: "black", opacity: 0.9999 }}>
            <Camera style={{ flex: 1 }}>
            </Camera>
        </View>
    </Modal>
</View>

There is no such transparency on real devices, so it's not so critical. (Tested on Android as of now, later will test on ios devices)

@viacheslav-gotsuliak Thanks just tested and confirm no issue on real device.

Tested on real iPhone, works fine, no transparency.

Nice to ear ! I must admit that I didn't even gave it a try on real device !

I close the issue as it's non blocking. Feel free to re open it if you think it worth it :)


ABI break in Version 1.38.10 ?

It seems like the recently released version broke some ABI:
blender: symbol lookup error: /usr/lib/libusd_ms.so: undefined symbol: _ZTIN17MaterialX_v1_38_97ElementE

This was first reported on https://gitlab.archlinux.org/archlinux/packaging/packages/blender/-/issues/17
CC @svenstaro

@christian-heusel We could use some additional context on this one, as it's not an issue that we've yet heard about from other teams integrating MaterialX and USD!

@jstone-lucasfilm sure! What information would be of use for you?

@christian-heusel Is this an issue that requires the full Blender application for a repro, or are there ways to trigger this using MaterialX or USD/MaterialX alone?  And with respect to ABI compatibility, we usually expect only API compatibility between versions of USD and MaterialX, so I could use more context on the situation where ABI compatibility for these two projects is important.

The general way that most software projects handle this is that if either API or ABI become incompatible, there's a soname version bump and at least a minor version increase. This sends a clear signal to distribution maintainers and so we can rebuild accordingly. A patch version increase is a sign of "it's only a fix without any API/ABI changes" so it'd be safe to push without rebuilding dependents.
I'd prefer if you adopted that way of using semver as this would ease our maintenance burden somewhat.

Ah, I see what you mean, @svenstaro.
As far as I know, neither the USD nor MaterialX projects provide ABI compatibility between released versions, but we can likely do a better job of signaling this through our VERSION and SOVERSION settings.
Because the major and minor versions of each MaterialX codebase must match those of the associated MaterialX specification, we have slightly less freedom with regard to semver conventions, and we document our current approach here:
https://github.com/AcademySoftwareFoundation/MaterialX/blob/main/documents/DeveloperGuide/MainPage.md#materialx-versioning
We're open to ideas on how to better signal that we don't provide ABI compatibility between MaterialX versions, and here is the current logic that we use to set the VERSION and SOVERSION properties in our CMake process:
https://github.com/AcademySoftwareFoundation/MaterialX/blob/97505091af01390b888905237ff6aef432bff2dc/source/MaterialXCore/CMakeLists.txt#L23


Add RFC Process and RFC Template

merging for agility. let's be open to amending these docs as we see fit


add fullfifax profile

star the repo this is mandatory and you can also follow me.

I already starred it :)


ENH: update package version

Hi! This is the friendly automated conda-forge-webservice.
I've started a version update as instructed in #103.
I'm currently searching for new versions and will update this PR shortly if I find one! Thank you for waiting!
Fixes #103

Since meta.yaml is sourcing from PyPI and wandb has stopped publishing source distribution, the update package fails. I have opened #105 to fix this


Can't load any data

The file contains the expected data, but loading it does absolutely nothing. Also, SaveSystem.save() seems to be deleting any value after saving (but not in the save file).

Hello. Can you send me a sample project in which this is reproduced?

Reproducing the bug in a fresh project was even easier than i thought. here it is:
savesystembugrepro.zip

It should work if you delete your previous save, perhaps.
And yes, I was going to suggest that workaround too, but it's circumstantial because if you have numbers at the beginning of the key, Godot still parses it to that number. I'm not sure turning the variable off takes care of that issue.


Enable publishing docker image to dockerhub via balenaCI

Change-type: patch
Signed-off-by: Kyle Harding<EMAIL_ADDRESS>

@20k-ultra if we want to go this route we just need to ask ops to create the DH repo and balenaCI will take care of the rest.
https://hub.docker.com/r/balena/deploy-to-balena-action

The existing GH action does the job too, just would just be the balenaCI route with fewer custom steps.
https://github.com/balena-io/deploy-to-balena-action/pull/139

closing since we would want to implement this without balena-ci


Allow jumping to non-integer cue numbers

Change regex on jump-to-cue to REGEX_FLOAT_OR_INT

Addressed in #3


engine_rocks: do not panic if disk is full when flushing or compacting.

Signed-off-by: MrCroxx<EMAIL_ADDRESS>
What problem does this PR solve?
Issue Number: close #xxx
Problem Summary:
If there is no space for compaction or flushing, TiKV shoud still serve read-only requests, and should also allow smaller compactions.
To achieve that, incomplete sst files created by flushing or compactions shoud be deleted.
What is changed and how it works?
What's Changed:
Log an error instead of panic if disk is full when flushing or compacting, and auto recycle the incomplete sst files.

Check List
Tests

[ ] Unit test
[ ] Integration test
[ ] Manual test (add detailed scripts or steps below)

Side effects
This pr needs to be carefully tested, in case critical data loss.
Release note
If the disk is full when rocksdb flushing or compacting, TiKV will not panic, but log errors instead.

/hold

Let's extend the case to encountering any I/O error during flush or compaction.

/cc @tier-cap This might be helpful to your project.

Closing this in favor of #11225


tailscale_tailnet_key: requested tags are invalid or not permitted

Describe the bug
I hope this is a bug and not something that I don't understand, but this used to work with this exact terraform config...
I am getting requested tags [tag:prod] are invalid or not permitted (400) on terraform apply, trying to create a new tailscale_tailnet_key with the tag:prod tag.
I tried to rule out an ACL issue by changing the tagowners to all kinds of things, including an empty list, and no dice.
I am creating the key like so:
resource "tailscale_tailnet_key" "key" {
  reusable      = true
  preauthorized = true
  expiry        = 60 * 60 * 24 * 90
  tags          = ["tags:prod"]
}

The ACL looks like this:
resource "tailscale_acl" "acl" {
  acl = jsonencode({

    tagOwners : {
      "tag:corp" : ["autogroup:admin"],
      "tag:prod" : ["autogroup:admin"],
      "tag:staging" : ["autogroup:admin"],
    }

    acls : [
      {
        // All employees can access their own devices
        action = "accept"
        src    = ["autogroup:members"]
        dst    = ["autogroup:self:*"]
      },
      {
        // Access company-wide services.
        action = "accept"
        src    = ["autogroup:members"]
        dst    = ["tag:corp:*"]
      },
      {
        // Access prod and staging services.
        action = "accept"
        src = [
          "autogroup:members",
        ]
        dst = ["tag:staging:*", "tag:prod:*"],
      },
    ],

  })
}

My provider uses the oauth client with the all scope, so it shouldn't be related to it not being allowed certain API calls.
provider "tailscale" {
  tailnet             = "censored"
  oauth_client_id     = "censored"
  oauth_client_secret = "censored"
  scopes              = ["all"]
}

Note that I am on the starter plan. (if this is a plan issue, please improve your error messages...)

After more testing, I managed to generate the key by using my personal API key instead.
So, it looks like the bug is the following: domain-level-admin oauth-generated keys can't create auth keys for tags they don't own.

oh... you have tags = ["tags:prod"] in your tailscale_tailnet_key config.  That should probably be tag:prod.  Typo in this bug or is that actually what you have in your config?

Typo in this bug or is that actually what you have in your config?

It was a typo in this bug. I'll edit it for clarity.

See the tailscale issue for the full story.
My understanding is that there is nothing to fix in the terraform provider for now.


⚠ Young Discoverers has degraded performance

In f5572b8, Young Discoverers (https://youngdiscoverers.org.au) experienced degraded performance:

HTTP code: 200
Response time: 5488 ms

Resolved: Young Discoverers performance has improved in b5facbd.


restore focus on escape

This PR fixes #12980
there are 4 ways to invoke the dropdown list and the expected focus behavior when escape is pressed to close the dropdown list
click inside the textbox -> focus should go back to textbox
press down arrow key when textbox is being focused -> focus should go back to text box
click on the dropdown arrow when focus is not within the control: -> focus should go back to textbox (similar to native select control)
focus on the dropdown arrow and invoke it -> focus should go back to the dropdown arrow
the fix is to capture the focused element before showing the list and restore focus to it when escape is pressed.

Pull Request Test Coverage Report for Build 350089462

0 of 3 (0.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.009%) to 40.222%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/sql/base/parts/editableDropdown/browser/dropdown.ts
0
3
0.0%

Totals

Change from base Build 350027594:
0.009%

Covered Lines:
21097

Relevant Lines:
48210

💛  - Coveralls

while looking into the issue, i noticed vscode already has a class to show an dropdown icon, same is used for the regular dropdown.
look at the database field in the screenshots below. it looks the same on macOS.
before:

after:

I am still working on this PR following the requirements here: https://www.w3.org/TR/wai-aria-1.1/#combobox

@Charles-Gagnon @aasimkhan30 , please take another look.


Unable to create anythin

After installing through package control on Windows, I tried creating something. Nothing worked. Got the error "Cannot specify package location" every time. I'm noticing, though, that I don't have the side bar with the folders as in the screenshots.

In order to working with Javatar, you will need to create a project (or folder and open it) in Sublime Text. Otherwise, Javatar would not know where to properly put your source code and your compiled code.
Take a look at the Getting Started for a overall usage of Javatar or learn more about how Javatar detect default package.


Add methods in Varargs to perform arguments validation and type conversion

Feature
Add convenience methods to perform argument validation and type conversion. This makes manual binding easier to write than ever before.
Normal arguments only:
fn foo(args: Varargs) -> Result<(), Box<dyn Error>> {
    args.check_length(2)?;
    let a: usize = args.get(0)?;
    let b: i64 = args.get(1)?;
    Ok(())
}

Contains optional arguments:
fn foo(args: Varargs) -> Result<(), Box<dyn Error>> {
    args.check_length(1..=2)?;
    let a: usize = args.get(0)?;
    let b: i64 = args.get_opt(1)?.unwrap_or(72);
    Ok(())
}

Contains the rest of arguments:
fn foo(args: Varargs) -> Result<(), Box<dyn Error>> {
    args.check_length(1..)?;
    let a: usize = args.get(0)?;
    let rest: Vec<i64> = args.get_rest(1)?; // There is no `TryInto<Vec<T>>` implementation yet.
    Ok(())
}

List of APIs to add
Varargs::check_length()
Check the length of arguments. Returns an error if the length of arguments is outside the specified range.
Varargs::get()
Returns the type-converted value at the specified argument position. Returns an error if the conversion fails or the argument is not set.
Varargs::get_opt()
Returns the type-converted value at the specified argument position. Returns None if the argument is not set. Returns an error if the conversion fails.
Varargs::get_rest()
Returns the type-converted value from the specified argument position. Returns an error if the conversion fails.
Can be converted to any type that implements TryFrom<Varargs>.
VarargsError
An enumr for emitting multiple types of errors.
ArgumentTypeError
Error to incorrect type of argument. Displays a message containing the position of the argument and cause of the failure to convert.
ArgumentLengthError
Error to argument lengths do not match. Display a message containing the length of arguments passed and the expected range.
ArgumentBounds
The ArgumentBounds trait was redefined only because usize does not implement the RangeBounds<usize> trait.
Compatibility
In this PR, only changes that can maintain compatibility are made.

This is a nice addition!
I think we should be thoughtful in which direction we want to extend the Varargs API -- I already expressed my concerns here:

Btw, the Varargs API as it exists now in godot-rust is a bit strange. It is simultaneously a collection and iterator.
I think the proper way would have been implementing IntoIterator, which could reuse the slice iterator. This would also get rid of storing idx as the iterator state inside Varargs.
That's probably something we can adjust for v0.11.

In short, I think we should avoid maintaining iteration state in Varargs itself. It could simply become a wrapper around a slice:
pub struct Varargs<'a> {
    slice: &'a [&'a Variant], // or &'a [Variant]

    // index for compatibility, will be removed in 0.11
    // we probably don't need iter anymore
    idx: usize,
}

impl<'a> Varargs<'a> {
    /// Returns the remaining arguments as a slice of `Variant`s.
    #[inline]
    pub fn as_slice(&self) -> &'a [&'a Variant] {
        self.slice
    }
}

impl<'a> Iterator for Varargs<'a> {
    type Item = &'a Variant;

    #[inline]
    fn next(&mut self) -> Option<Self::Item> {
        if self.idx >= self.slice.len() {
            None
        } else {
            let variant = self.slice[self.idx]
            self.idx += 1;
            Some(variant)
        }
    }
}

That would mean that the get_rest() method is not needed -- we can retrieve a subslice using [T]::get with a range argument.

By the way, I really appreciate the high quality of your recent PRs, with feature lists, explanations and passing CI. Thanks a lot for that! I feel a bit bad when we can't directly merge things and code needs to be rewritten multiple times. Maybe to avoid this in the future, do you want to suggest an APIs first (in a GitHub issue or on Discord's #dev channel), so we can discuss it and converge on ideas before jumping to implementation? This is of course entirely up to you, sometimes it's worth having a proof-of-concept implementation. But I don't want you to waste time and effort 🙂

I think we should be thoughtful in which direction we want to extend the Varargs API
In short, I think we should avoid maintaining iteration state in Varargs itself. It could simply become a wrapper around a slice:

I agree.

This is of course entirely up to you, sometimes it's worth having a proof-of-concept implementation.

I had planned to create a proof of concept first, but I was too eager. :sweat_smile:

@B-head any update on this? If you don't have the capacity right now to make changes, I can gladly implement my suggestions. Would be great to merge this and not let it go stale! 🙂

This has been merged as part of #886.


fix(stats): Store git tag for production builds to DB

Store git tag for production builds as part of stats document to DB.
All production builds are tagged with a git tag (v0.21.0). We need to store it to stats database to be able to filter production builds only.
The original implementation used CIRCLE_TAG env var but this variable is set only for tag-triggered builds which we do not use.
The new approach uses git tag of the current HEAD.

Warnings

:warning:
There are no updates provided to CHANGELOG. Ensure there are no publicly visible changes introduced by this PR.

  Generated by :no_entry_sign: dangerJS


Has Twitter just disabled retrieval of tweets older than 10 days?

I have been using your code to retrieve tweets dating back a couple of years but just today I was not able to get any tweets older than 10 days. It still works with the web browser but not using your code. I wonder what changed?

I ran the same code on a computer with a different IP and it seems to work fine. I wonder if Twitter has actively changed permissions after monitoring my usage.

same here ^^

I just wanted to post an update here: the access to tweets older than 10 days has been restored today. Not sure what was the cause of the problem.

Hi,
I was just wondering how many tweets at a time are you able to pull? For example, I'm trying to pull as many tweets as possible after certain events, but normally when I try to pull more than 100 tweets at once, I receive the following notice:

Twitter weird response. Try to see on browser: https://twitter.com/search?q= since%3A2013-06-03 until%3A2013-06-10 Game of thrones&src=typd
Unexpected error: <class 'urllib.error.URLError'>
To exit: use 'exit', 'quit', or Ctrl-D.
An exception has occurred, use %tb to see the full traceback.

The trace back leads to this section in TweetManger:
try:
	response = opener.open(url)
        jsonResponse = response.read()
Checking the Twitter website, I can't see any obvious problems, even when scrolling to infinity. I thought that the problem might be that there aren't as many tweets in that time period, but that's not true at all. Also, if I enter a date like the above example (a one week period), the website will start showing tweets with the second to last day in the entered range, which isn't really usable for me. I would like to get as many possible right after a certain date. I thought of pulling them in chunks, but I think that I'd just keep receiving the first 100 tweets over and over again, since the search resolution only allows you to select the date and not time.
Any advice would be greatly appreciated. Thanks in advance!

I have pulled 50,000 tweets at a time. I have no idea what that error means and I sometimes also get it. Try putting different search items and see if it prevails.
 I don't know how it does it but really petty.

Hi,
thanks for the response. I've managed to pull enough tweets to work with for now. It seems to work a bit randomly, but it's good enough to gather data.

Hi,
I think so too. I mean it seems to work a bit randomly!
Have a nice day!
Thank you very much for the response.
Best,
Mari.
2016-11-16 0:15 GMT+09:00 Humma4<EMAIL_ADDRESS>
Hi,
thanks for the response. I've managed to pull enough tweets to work with
for now. It seems to work a bit randomly, but it's good enough to gather
data.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/Jefferson-Henrique/GetOldTweets-python/issues/35#issuecomment-260668438,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AOP2x7g-jK6WISYEqkLVAoSQ6ZrmfYAJks5q-cyigaJpZM4KS486
.

--
Ji San "Mari" Lee, RN.

M.Sc in Nursing Informatics,

Seoul Nat'l Univ. College of
Nursing

Ph.D.
Student in
Medical
Informatics,

Seoul Nat'l Univ. College of
Medicine
- Consumer Health Informatics & Communication(CHIC) Lab in

Seoul Nat'l Univ.

Tel: +82-2-740-8473
e-mail<EMAIL_ADDRESS>


https://build.redux.io/ is down

Can't figure out another place where to add this issue...

You're right, I am sorry. I am working on it! I had hoped to get it done last week. I'll get it done next week. Please be patient. Thank you.


Exclude unnecessary files from distribution

Follow-up of #152, which I submitted before learning there's a more efficient way to exclude files in package tarballs (thanks @gorriecoe).
This PR knocks ~1.6 MBs off the package's total size, ensuring updates are downloaded to users quicker.

This should use the files property in package.json instead.
https://docs.npmjs.com/files/package.json#files

That won't work. See for yourself:
apm install aobakle

If you check the package directory after installing, you'll notice nah.js sitting there among the downloaded files, despite a files array being specified.
Reason: Atom's package manager isn't NPM, despite being a heavily-mutated version of it.

@Alhadis -- this is a great approach. Thank you very much. I didn't even think about this kind of optimization. Lesson learned.
It seems the build fails now for the fall-back-selector i added to fix the broken wrap-guide during the shadow-transition process. I will dig into that at monday (i guess).

I noticed that. My approach would be to modify the existing wrap-guide element dynamically, rather than synthesise a replacement.
Benefits:

Users who've hidden the wrap-guide (either with CSS or by disabling the wrap-guide package) won't see the guide appear out of nowhere (something which caught me by surprise)
Users who've styled the appearance of their editor's wrap-guide will have their customisations preserved
No deprecation warnings caused by deprecated selectors, since you'll simply be riding atop a core-package

@sindresorhus Please confirm when you've acknowledged my explanation so I know when to annihilate that abortion of digital runoff. =)

@Alhadis Ah, I didn't realize. That's definitely annoying. From the apm readme:

apm bundles npm with it and spawns npm processes to install Atom packages.
Therefore you can think of apm as a simple npm wrapper that builds on top of the many strengths of npm

Would you mind opening an issue on apm about supporting the files property in package.json?

No need, it's a known limitation.
The differences in implementation are probably infrastructure-related, judging by the way apm peels tarballs from GitHub instead of its own servers (which I believe is different to npm's treatment of packaging modules).

Alright. Thanks for clarifying. 👍

@gorriecoe Just a heads up that this might be a fluke, and relying on export-ignore mightn't stay the same forever. I've brought it to the Atom team's attention; the fact .gitattributes hasn't been mentioned anywhere as a solution (by either staff or users) is pushing a splinter of doubt in the back of my head.
As for the .editorconfig file, well, it would still make sense for this package to include a reference copy of its own format... and users can still open a package's contents in Atom by clicking the View code button in the settings-view. Besides, these files aren't adding much weight when gzipped... the issue is with binary files, which don't compress well.


1.8.6

this PR include the following:

[x] apps bulk install endpoint
[x] improve app installer

[x] rollback on failure
[x] improve store response serialization
[x] use sqlite database with connection pooling instead of apps.yml and pendingOperation.yml
[x] db_parser module to convert DATABASES to URL

[ ] improve cartoview testing
[ ] add restart server button in manage app page
[ ] update README.md

Pull Request Test Coverage Report for Build 248

326 of 423 (77.07%)  changed or added relevant lines in 18 files are covered.
2 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.4%) to 70.159%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

cartoview/app_manager/management/commands/update_current_apps.py
7
8
87.5%

cartoview/store_api/api.py
69
70
98.57%

cartoview/app_manager/management/commands/load_current_apps.py
12
14
85.71%

cartoview/apps_handler/db_parser.py
33
35
94.29%

cartoview/app_manager/decorators.py
7
12
58.33%

cartoview/apps_handler/apps.py
4
14
28.57%

cartoview/apps_handler/handlers.py
84
101
83.17%

cartoview/app_manager/installer.py
61
80
76.25%

cartoview/app_manager/rest.py
7
47
14.89%

Files with Coverage Reduction
New Missed Lines
%

cartoview/app_manager/decorators.py
1
78.57%

cartoview/app_manager/installer.py
1
76.95%

Totals

Change from base Build 220:
0.4%

Covered Lines:
1768

Relevant Lines:
2520

💛  - Coveralls

@ahmednosman check if you need to add more features?


director detail

user can go to director in movie detail
and lists director's movies

#25 merged to share post. task is almost done just waitin discover api's release


use where clause for type parameters

Codecov Report

Merging #7 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #7   +/-   ##
=======================================
  Coverage   81.83%   81.83%
=======================================
  Files          27       27
  Lines        1740     1740
=======================================
  Hits         1424     1424
  Misses        316      316

Impacted Files
Coverage Δ

src/pairwise/algorithms/hamming_distance.jl
100% <ø> (ø)
:arrow_up:

src/submat.jl
97.82% <ø> (ø)
:arrow_up:

src/models.jl
89.28% <ø> (ø)
:arrow_up:

src/pairwise/pairalign.jl
94.64% <ø> (ø)
:arrow_up:

src/pairwise/result.jl
50% <ø> (ø)
:arrow_up:

src/bam/overlap.jl
94.28% <ø> (ø)
:arrow_up:

src/alignedseq.jl
96.42% <ø> (ø)
:arrow_up:

src/bam/reader.jl
94.54% <ø> (ø)
:arrow_up:

src/pairwise/algorithms/smith_waterman.jl
86.66% <ø> (ø)
:arrow_up:

src/pairwise/algorithms/banded_needleman_wunsch.jl
80.41% <ø> (ø)
:arrow_up:

... and 4 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 1b0a99e...530ac1f. Read the comment docs.


Ability to set the PDF export timeout value in the .env file

Describe the feature you'd like
Currently, the PDF export timeout is set to 15 seconds. It would be useful to have this modifiable in the .env file, as per issue #5111.
Describe the benefits this would bring to existing BookStack users
For large books, this would prevent Bookstack from timing-out before the PDF is generated.
Can the goal of this request already be achieved via other means?
Yes, by modifying line 89 in /app/www/app/Entities/Tools/PdfGenerator.php
Have you searched for an existing open/closed issue?

[X] I have searched for existing issues and none cover my fundamental request

How long have you been using BookStack?
3 months to 1 year
Additional context
No response

Thanks for the request @jtee3d.
This has now been added via 6103a22febd839fa76a3f9a54058b66a14906b35 to be part of the next feature release.


feat: Trivy Flag Updates

Trivy has moved to deprecate the "slow" flag in favor of "parallel", as such we should start transitioning away from the "slow" flag. However, there is a question of backwards compatibility. For the PR that introduces "parallel", should "slow" be retained as a configuration option that maps to a default "parallel" setting or should "slow" be stripped completely?
Additionally, in the upcoming v0.55.0 Trivy will be introducing the "detection-priority" flag (reference: https://github.com/aquasecurity/trivy/discussions/7198) that we should expose as configurable in the Helm chart.

sorry for missing this, we take this kind of feedback under Discussions not Issues. Generally we have a process of announcing deprecation, allowing transitioning period, and supporting backwards compatibility for a while (in the case of flags using aliases). sometimes there are exceptions to this process due to legitimate reasons, and sometimes there are mistakes. but FTR, you are right.


Suggestion: Tool leveling command

Recently a bug caused my tools to be deleted, after I had leveled them up multiple times and put modifiers on them.  While you can't fix every bug from every other mod, it would be useful to be able to enter a command to level up a tool you're holding to make fixing a situation like this easier (Or for adventure maps?)

/levelupTool


Version lock Ruby to 2.5.3

Someone approve this if Netlify build passes.

Deploy preview for wanikani-knowledgebase processing.
Built with commit 2f80174b3e306eb37cc875018c86cfcdb47b9bcc
https://app.netlify.com/sites/wanikani-knowledgebase/deploys/5c1148191b3378000b8fb71e

Netlify at the moment only supports 2.3.6 as the latest per this documentation. Rolling with 2.5.3 is not deploying...
Gonna switch the version to 2.3.6.


Bring Aerospike adapter in line with adapter policy

As per @cmccoy's comment in #324: Database adapters shouldn't introduce any new functionality. They should just pass things back and forth between YCSB and the database client.
This change removes back-off/retry logic for cluster overload conditions from the Aerospike adapter.

please update the commit message to start with "[aerospike]"

otherwise, LGTM.

Oh, yes, makes sense. Done.