Incorrect mappings generated by contracts with json strings as attribute values within a json object

We have a service that returns a response with structure similar to the following:
{
    "jsonString": "{\"attribute\": \"value\"}"
}

Example contract to support the response above:
org.springframework.cloud.contract.spec.Contract.make {
	priority 1
	request {
		method 'GET'
		urlPath(value(consumer(regex(/\/data\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/)),
				producer('/data/444d57b2-e309-4576-83cb-5530ee03106a')))
	}

	response {
		status 200
		headers {
			header("Content-Type", "application/json;charset=UTF-8")
		}

		body([
				jsonString: '{\\"attribute\\": \\"value\\"}'
		])
	}
}

The contract above does not produce the expected mapping.  It produces the following, which introduces extra backslashes and when running stubrunner leads our clients to receiving improper responses.
{
  "uuid" : "02a7cca2-0a2e-459e-8f5c-b4030250018c",
  "request" : {
    "urlPathPattern" : "/data/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
    "method" : "GET"
  },
  "response" : {
    "status" : 200,
    "body" : "{\"jsonString\":\"{\\\\\\\"attribute\\\\\\\": \\\\\\\"value\\\\\\\"}\"}",
    "headers" : {
      "Content-Type" : "application/json;charset=UTF-8"
    }
  },
  "priority" : 1
}

It appears the issue is within this method:
https://github.com/spring-cloud/spring-cloud-contract/blob/1.2.x/spring-cloud-contract-verifier/src/main/groovy/org/springframework/cloud/contract/verifier/dsl/wiremock/BaseWireMockStubStrategy.groovy#L162-L169
From debugging and attempting to change the implementation, it seems the Groovy packages to building json are responsible for introducing the backslashes.  I tried using the JsonGenerator, found within Groovy 2.5, but also ran into the same issue.  I attempted to use a custom converter without any luck.  Another challenge I found when investigating this issue was around testing, because the test suite utilizes an AssertionUtils that also uses Groovy's json parsers/builders for evaluating the correctness of the maps and responses from wiremock.
It does not seem this issue is necessarily at the fault of Groovy, because it seems it is just trying to interpret the json it thinks it sees, even though I want it to be evaluated as and remain a string.
Versions tested in: 1.2.4.RELEASE, 1.2.0.RELEASE, and within the 1.2.x branch
As a temporary workaround, I introduced the following gradle task to manually update the problematic mapping file.  This explicitly replaces the extraneous backslashes with the amount I would expect.
task fixSadContractIssue()  {
    dependsOn('generateWireMockClientStubs')
    doLast {
        File brokenMapping = new File(project.buildDir, '/stubs/mappings/myMapping.json')
        brokenMapping.text = brokenMapping.text.replace('\\\\\\\\\\\\\\', '\\\\\\')
    }
}
verifierStubsJar.dependsOn(fixSadContractIssue)

Also, thanks a lot to @marcingrzejszczak and his help with troubleshooting this problem with me!

I met another or maybe same issue: generated wiremock config (or mappings) is "body" : "{\"name\":\"hi\\\\r\\\\nname\"}" and return {"name":"hi\\r\\nname"} in HTTP response, while I expected {"name":"hi\r\nname"} (while should contains a newline)
What I have is a contract:
request:
  method: GET
  url: /my-url
response:
  status: 200
  bodyFromFile: hiname.json
  headers:
    Content-Type: application/json;charset=UTF-8

a hiname.json:
{
  "name":"hi\r\nname"
}

and a generated mapping:
{
  "id" : "c3cce57c-875d-4a45-85ce-ac094d07ec69",
  "request" : {
    "url" : "/my-url",
    "method" : "GET"
  },
  "response" : {
    "status" : 200,
    "body" : "{\"name\":\"hi\\\\r\\\\nname\"}",
    "headers" : {
      "Content-Type" : "application/json;charset=UTF-8"
    },
    "transformers" : [ "response-template" ]
  },
  "uuid" : "c3cce57c-875d-4a45-85ce-ac094d07ec69"
}

Check if the workaround works for you

hi @marcingrzejszczak the workaround works for me, thank you~
add more info
I'm using spring-cloud-contract-gradle-plugin 2.0.0.RELEASE (which is latest for now)
I modified lines to make it work:
task fixSadContractIssue()  {
    dependsOn('generateClientStubs')
    doLast {
        File brokenMapping = new File(project.buildDir, '/stubs/META-INF/xxx/mappings/my-contract.json')
        brokenMapping.text = brokenMapping.text.replace('\\\\', '\\')
    }
}
verifierStubsJar.dependsOn(fixSadContractIssue)

I guess I need your help. I've migrated to ObjectMapper to do the deserialization and I've written such a test but I'm not sure if the number of quotes is correct ;) (https://github.com/spring-cloud/spring-cloud-contract/commit/45ede5e1253001746af797cf09392cb406beecf6#diff-921272dc81327196df68e37608cdd717R2084)
@Issue('#667')
	def "should not double escape backslashes"() {
		given:
			Contract groovyDsl = org.springframework.cloud.contract.spec.Contract.make {
				priority 1
				request {
					method 'GET'
					urlPath(value(consumer(regex(/\/data\/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/)),
							producer('/data/444d57b2-e309-4576-83cb-5530ee03106a')))
				}
				response {
					status 200
					headers {
						header("Content-Type", "application/json;charset=UTF-8")
					}
					body([
							jsonString: '{\\"attribute\\": \\"value\\"}'
					])
				}
			}
		when:
			String wireMockStub = new WireMockStubStrategy("Test", new ContractMetadata(null, false, 0, null, groovyDsl), groovyDsl).toWireMockClientStub()
		then:
			AssertionUtil.assertThatJsonsAreEqual('''
				{
					"request" : {
						"urlPathPattern" : "/data/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
						"method" : "GET"
					},
					"response" : {
						"status" : 200,
						"body" : "{\\"jsonString\\":\\"{\\\\\\"attribute\\\\\\": \\\\\\"value\\\\\\"}\\"}",
						"headers" : {
							"Content-Type" : "application/json;charset=UTF-8"
					},
					"transformers" : [ "response-template", "foo-transformer" ]
					},
					"priority" : 1
				}
				''', wireMockStub)
		and:
			stubMappingIsValidWireMockStub(wireMockStub)
	}

Can you paste exactly how the WireMock JSON mapping should look like?

This is how I would expect the WireMock JSON mapping to look like:
{
  "uuid" : "32912777-64f2-4382-9b55-4dc013a1cb28",
  "request" : {
    "urlPathPattern" : "/data/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",
    "method" : "GET"
  },
  "response" : {
    "status" : 200,
    "body" : "{\"jsonString\":\"{\\\"attribute\\\": \\\"value\\\"}\"}",
    "headers" : {
      "Content-Type" : "application/json;charset=UTF-8"
    }
  },
  "priority" : 1
}

The above mapping is what is being produced with the workaround we are currently utilizing in our project.  Also, your assertion looks correct assuming that assertThatJsonsAreEqual does not do anything funny with escaping those characters.
Thank you for continuing to look into this!  Sorry for not getting back to you sooner.

I gave it another try but still no luck. The problem is that all frameworks seem to treat the text in the json in a bizarre way. If I make some progress I'll update the issue.

Since its an issue with the outputs of the Groovy Json Processing libraries, we can't really do a real fix, but I'm providing a workaround in this PR: https://github.com/spring-cloud/spring-cloud-contract/pull/750 .


Distributed Tracing with Filters Example Request

https://istio.io/docs/tasks/telemetry/distributed-tracing.html
I noticed that the zipkin addons is now missing -- but I wanted to ask and see if there's a specific way to control istio to filter tracing by the labels of pods only?
Use case is to launch Jaeger to listen to only show services A and B labeled app="service-a" and app="service-b".
I noticed you can filter this type of stuff with the FluentD example, would be great to add config example to filter for tracing as well!
# Configuration for logentry instances
apiVersion: "config.istio.io/v1alpha2"
kind: logentry
metadata:
  name: newlog
  namespace: istio-system
spec:
  severity: '"info"'
  timestamp: request.time
  variables:
    source: source.labels["app"] | source.service | "unknown"
    user: source.user | "unknown"
    destination: destination.labels["app"] | destination.service | "unknown"
    responseCode: response.code | 0
    responseSize: response.size | 0
    latency: response.duration | "0ms"
  monitored_resource_type: '"UNSPECIFIED"'
---

@Disturbing There are a few related efforts underway to add dynamic tracing configuration to Istio.
One is to add API level control of tracing (for sampling, etc.). An initial exploratory PR is (https://github.com/istio/api/pull/363).
Another is adding trace templates (and tracing adapters) to Mixer -- so that Mixer can control the generation and shape of trace spans. This would, I believe, closely match your request for functionality matching the fluentd configuration.
If you have a few moments, it would be great to bring this to the next Policy and Telemetry WG meeting for discussion.
cc: @jeffmendoza who is helping to add tracing features to Istio.

Thanks for the invite - couldn't find the time for the next meeting? Where can i get more information?
Also -- I was thinking that this can simply be done with rules?
---
# Rule to send logentry instances to the fluentd handler
apiVersion: "config.istio.io/v1alpha2"
kind: rule
metadata:
  name: newlogtofluentd
  namespace: istio-system
spec:
  match: "true" # match for all requests
  actions:
   - handler: handler.fluentd
     instances:
     - newlog.logentry
---

For instance above --- isn't it possible to route rules to filter only N services somehow using:
  match: destination.service == "service1.ns.svc.cluster.local" && request.headers["x-user"] == "user1"

My thought is having Rules for the logs but somehow controlling them to be consumed by specific Kibana, Jaeger or Prometheus instances?
So if I have Service A + B, Kibana AB sees both of them.  IF I have Service C and D, Kibana CD sees them.
Same would go for Jaeger and Prometheus.
Any thoughts on how to do this with Rules? Would love any tip being new to all of this :)

I could see a benefit in being able to partition where metrics are reported - but the value of distributed tracing data is being able to view a complete trace instance that spans across all invoked services. If the spans are partitioned to different tracing servers, then users would only see a small fragment of the complete trace.

@Disturbing once Mixer is the source of tracing data, distributing trace data to different backends based on attributes of the request is doable. However, at the moment, there aren't any trace adapters built for Mixer. There will be soon, but they don't exist today (envoys send straight to "zipkin" service at the moment). I think @objectiser has a point re: the value of distributed tracing, but understand there may be sensitivities in some cases.
RE: WG meeting info
Please see: https://github.com/istio/community/blob/master/WORKING-GROUPS.md#policies-and-telemetry (and watch the mailing-list).

@douglas-reid Related to this use case, currently the trace data doesn't record the namespace. Any thoughts on how best to achieve this?

We could prefix the service name with the namespace
Add the namespace as a tag - but that would require changes in envoy to provide the info
Possibly this trace template approach could add the data? If so, what version is the change for directing trace data via the mixer/adapters going to happen?

@objectiser somehow I missed your update. pre/post-fixing the service name seems like a reasonable approach here.
It is now possible to make tracespan adapters for Mixer. There are several in existence at this point.

@douglas-reid No problem - has already been fixed in https://github.com/istio/istio/pull/7803 but adding namespace to the service name used in proxy.

@Disturbing any update here?

Unfortunately we deprioed this - but it’s coming up in December post
knative integration. Sorry about that.
On Wed, Oct 30, 2019 at 2:31 PM Istio Policy Bot<EMAIL_ADDRESS>wrote:

🚧 This issue or pull request will be closed in a week due to not having
had activity in the last 105 days. If you feel this issue or pull request
deserves attention, an Istio team member must comment on the issue or PR in
order to keep it opened, or it must be labeled as being stale-proof. Thank
you for your contributions.
Created by the issue and PR lifecycle manager.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/4963?email_source=notifications&email_token=AASB5P55HT7TXRNL6YPGZ73QRES2LA5CNFSM4E2W3YQKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECTBZPA#issuecomment-547757244,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AASB5PZBPP3M2LKCBHBEBWTQRES2LANCNFSM4E2W3YQA
.


Lexer error: No terminal defined for when using a look-behind

Running*:
import lark
example_program = "true$variable:|false"

my_parser = lark.Lark(
r"""
    free_input_string: ( text_chunk | variable_usage )+
    text_chunk: /(?<!:)([^\n\$])+/
    variable_usage: /\$.+\:/
""", start='free_input_string', parser='lalr', lexer='contextual')

tree = my_parser.parse(example_program)

Do:
No terminal defined for '|' at line 1 col 15
true$variable:|false
              ^

With the following partial tree:
free_input_string
  text_chunk    [@1,0:3='true'<__ANON_0>,1:1]
  variable_usage    [@2,4:13='$variable:'<__ANON_1>,1:5]

If I remove the negative look-behind (?<!:) from the text_chunk, everything runs as expected:
+ free_input_string
+   text_chunk  [@1,0:3='true'<__ANON_0>,1:1]
+   variable_usage  [@2,4:13='$variable:'<__ANON_1>,1:5]
+   text_chunk  [@3,14:19='|false'<__ANON_0>,1:15]

* I also tested it against the your current master branch.

Sorry for the useless issue.
I just noticed what I was doing with the look behind (?<!:) in the middle of the sentence true$variable:|false, it started matching the chunk_text at :, but it did not matched because of the look-behind (?<!:) of the own grammar.


Consider marking all events read when closing the drawer (behavior discussion)

Per discussion with @beanh66, @spadgett & this web console PR, I'd like to propose at least an attribute on the drawer to mark all notifications read when closing the drawer.
In an especially chatty environment with a lot of events, its helpful to be able to clearly see new events since last view, w/o leaving it to the user to manually maintain this unread list (by clicking "mark all read" every time).  Its a common pattern on the web, so I don't think we would be venturing into unexpected territory.

@jeff-phillips-18

Any particular reason this couldn't be done by the application in the onClose callback?
I suppose it could call the onMarkAllRead function for each of the groups but unsure if it is warranted to do here and add yet another flag to the drawer's parameter list.

True! That would work fine.  We can skip the parameter.
@beanh66 do we need to worry about making this behavior a standard thing in Patternfly? Perhaps that is all we wanted to spin out of the discussion.

@benjaminapetersen I think it makes sense to do some user testing on the current implementation first and if we determine this will improve the user experience, we can make the change and get it contributed into PatternFly. I'll assign it to myself for now to be sure we get customer feedback.

The OpenShift use case might be unique because potentially there are a lot of events and thus a lot of notifications. It's probably less of a problem if we're more selective about what events to show.


Fixed contents jump links for README

Fixed the jump links for the sub headers in Strings:

Datetime
IP

https://github.com/colinhacks/zod/commit/a263814fc430db8d47430cd2884d2cea6b11c671
Thanks anyway


Add the ability to change time zone in the Obs upload page

If I'm on a trip and am uploading observations, the obs upload page defaults to my account's default time zone, meaning the observations I'm uploading have the incorrect time zone applied to them. As of now there's no way to quickly change one's time zone on the upload page, but it'd be a great addition.

For the record, I think you said you didn't think this would be necessary with automatic time zone assignment, right @tiwane? I certainly don't think it is.


PermanentRedirect error for g_region_eu_frankfurt ( eu-central-1 )

Hi,
I am getting mentioned below error when trying to upload files into bucket created to region EU (Frankfurt).
PermanentRedirect

The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.

Any quick workaround for this?

I have re-created your error. I created a bucket in Frankfurt (eu-central-1). The error message is telling me this:
<Error>
PermanentRedirect
<Message>
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
</Message>
<Bucket>test-stormpetrel</Bucket>
<Endpoint>test-stormpetrel.s3.amazonaws.com</Endpoint>
<RequestId>C51B6412854833AD</RequestId>
<HostId>
dP8rh90UeT8lKCqubuLmKxETnEfzP7MHRcIyVcSoltdVTuf8+HZ8fE21nwl/mUFnzjb3hZn7P4Y=
</HostId>
</Error>

and my URL was this:
https://s3.amazonaws.com/test-stormpetrel/
The AWS Documentation showed both:

my-bucket.s3.amazonaws.com and
s3.amazonaws.com/my-bucket

I'll study this and post an update.
cmoore (25FEB2017)

The syntax for the original us-standard (now called us-east-1) bucket does not seem to follow the same rules for the newer buckets. In the comments for function "Canonical Request", I observed two options in the AWS documentation.
I solved the problem by adding a IF statement. If 'us-east-1' use the older syntax. ELSE use the newer syntax.
The revised code is posted.
*cmoore (25feb2017)

Hello cmoore-sp,
Thank you very much for taking a very quick look and prompt action to revise the package.
I will check with the new code.
Once again thanks.

Hi Christina,
I had executed the updated code. The error has been changed now. It's point to signature mismatch.
I am attaching error log.  Can you please give direction in right way. I've checked the id & key are correct and working using old API for the Singapore region.
26.02.2017 13:41:45:
<?xml version="1.0" encoding="WINDOWS-1256"?>
<Error>
  SignatureDoesNotMatch
  <Message>The request signature we calculated does not match the signature you provided. Check your key and signing
method.</Message>
  <
AWSAccessKeyId>#MyAccessKey#</AWSAccessKeyId>
  <StringToSign>AWS4-HMAC-SHA256
20170226T094143Z
20170226/eu-central-1/s3/aws4_request
30cbb68a0bdf25bc66f848ae323e30520a71a1bb13b5785c165ae7b612a72716</StringToSign>
  <SignatureProvided>eda032bb
523047aaa4be9446a8ef6dbe5c504efe13ebd5d8777397efe7c15d87</SignatureProvided>
  <StringToSignBytes>41 57 53 34 2d 48 4d 41 43 2d 53 48 41 32 35 36 0a 32 30 31 37 30 32 32 36 54 30 39 34 31 34 33 5a 0a 32 30 31 37 30 32 32 36 2f 65 75 2d 63 65 6e 74 72
 61 6c 2d 31 2f 73 33 2f 61 77 73 34 5f 72 65 71 75 65 73 74 0a 33 30 63 62 62 36 38 61 30 62 64 66 32 35 62 63 36 36 66 38 34 38 61 65 33 32 33 65 33 30 35 32 30 61 37 31 61 31 62 62 31 33 62 35 37 38 35 63 31 36 35 61 65 37 62 36 31 32 61 37 32 37
31 36</StringToSignBytes>
  <CanonicalRequest>PUT
/the-floating-152709_1.jpg

host:mybucket-ge.s3.eu-central-1.amazonaws.com
x-amz-content-sha256:d6c2f66d76dbce975e6f76d4a6cc0897fde64dbca9bde2851fb085bee8323339
x-amz-date:20170226T09414
3Z

host;x-amz-content-sha256;x-amz-date
d6c2f66d76dbce975e6f76d4a6cc0897fde64dbca9bde2851fb085bee8323339</CanonicalRequest>
  <CanonicalRequestBytes>50 55 54 0a 2f 74 68 65 2d 66 6c 6f 61 74 69 6e 67 2d 73 65 61 68 6f 72 73 65 2d 31
35 32 37 30 39 5
f 31 2e 6a 70 67 0a 0a 68 6f 73 74 3a 66 61 6d 70 72 6f 70 65 72 74 69 65 73 2d 67 65 2e 73 33 2e 65 75 2d 63 65 6e 74 72 61 6c 2d 31 2e 61 6d 61 7a 6f 6e 61 77 73 2e 63 6f 6d 0a 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3a 64 36 63
 32 66 36 36 64 37 36 64 62 63 65 39 37 35 65 36 66 37 36 64 34 61 36 63 63 30 38 39 37 66 64 65 36 34 64 62 63 61 39 62 64 65 32 38 35 31 66 62 30 38 35 62 65 65 38 33 32 33 33 33 39 0a 78 2d 61 6d 7a 2d 64 61 74 65 3a 32 30 31 37 30 32 32 36 54 30
39 34 31 34 33 5a 0a 0a 68 6f 73 74 3b 78 2d 61 6d 7a 2d 63 6f 6e 74 65 6e 74 2d 73 68 61 32 35 36 3b 78 2d 61 6d 7a 2d 64 61 74 65 0a 64 36 63 32 66 36 36 64 37 36 64 62 63 65 39 37 35 65 36 66 37 36 64 34 61 36 63 63 30 38 39 37 66 64 65 36 34 64 6
2 63 61 39 62 64 65 32 38 35 31 66 62 30 38 35 62 65 65 38 33 32 33 33 33 39</CanonicalRequestBytes>
  <RequestId>671278C978B2ED00</RequestId>
  <HostId>hAzOPnNxaNMRwCDTyIzol47QQPereCepDRGlJSDeLCDBqoXsZnbHmjLbABdrB6lqu1eiFZQPZLw=</HostId>
</Error>

When debugging I see this error often. It typically means that the Canonical Request doesn't match the URL (or what we think the Canonical Request should be).  After I finish our maintenance window, I'll test what I worked on yesterday to PUT 1 JPG in Frankfurt.
Please turn on some debugging in the package, then send me:

the Canonical Request the package creates
the URL the package creates
And the corresponding error message

This will include the Canonical Request that AWS "thinks" we meant.
By comparing the generated Canonical Request with the AWS "calculated" request, we can see the issue.

Hi Christina,
Thanks for the prompt response.
I have checked now and come up with error on debug.
If we use region other than us-east-1 the as per API our url became like this :

https://example-bucket.s3-website.eu-central-1.amazonaws.com/

And for this one we will have the wildcard SSL certificate. And that is not supported by oracle wallet manager :-1:
Can we try using any other url pattern for the access end point? I am not gone through detail endpoint patterns. But will check on that.
I am Jay & my email -<EMAIL_ADDRESS>Please provide yours too..

Is it feasible to use intermediate url redirect methodology to bypass this one as workaround ?

When working with 12c you must install the root and intermediate cert. I have now posted the two DigiCert SSL certificates here on github. There are instructions regarding this in the documentation area of this github.


Convert ConfirmButton to functional component

This is to modernise the component where we can use hooks, which results in a smaller function and a smaller bundle size.

Btw, when you merge my changes, please do a squash & merge and use the PR title + description - I tend to just write random stuff when making commits because I'd rather explain on the PR 😄


Avoid types with infinite precision in the protocol parameters

There are a few parameters that are defined using Natural. This will be problematic starting with Conway, because anyone can submit proposals on-chain values that are total garbage and we'll have to support them indefinitely.
For this reason we need to set them to sensible WordX values in the ConwayPParams type. However, in order to reduce breakage we should keep the types for relevant lenses unchanged. This will make setters partial, but that is already the case with Natural, so this should not be a problem.
These changes should also be reflected in the cddl specification.

Completed in https://github.com/IntersectMBO/cardano-ledger/pull/4357


Hang when logging into cluster tev with 2.1.8

Could this be due to some change in behavior?

Also, ^c doesn't seem to do anything here. :-)

Yep - worked fine with 2.1.7, but fails with 2.1.8.

Looks like a change in behavior of ReadLine on the shell. This change, actually, is probably semantically correct - brings it more in line with the way the rest of .NET works. I've added a short time-out to ReadLine which should fix this.


HHH-9811 - Change EntityPersister#resolveAttributeIndexes to take String[]

Applied to master.  Thanks again Luis!


How do I test my bot?

Is there a mocking library for python?
How could I test my bot programmatically?

There is a wonderful tool for multi-language wechaty to test bot in mocking envrionment: wechaty-puppet-mock.
But there is no docs to guide you how to use this wonderful tool, we will add it later.

great, thanks! BTW，do you happen to know what is wrong with https://github.com/wechaty/python-wechaty-getting-started/issues/44 ?
Thanks!

That mocking environment is for ts / js. Do we have similar things for python?


Fix missing inbound listener for multiport ServiceEntry

For ServiceEntry of type resolution: NONE and containing an endpoint with a single port, the Envoy config dump shows a listener that matches the "VM_IP:Port" wired to an inbound cluster with socket address "<IP_ADDRESS>:Port". This configuration is as expected. However, for the ServiceEntry Endpoint with multiple ports, only one port has the correct wiring as above whereas the other port is missing the inbound cluster.
For more details, see this issue

[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 approver: ayj
If they are not already assigned, you can assign the PR to them by writing /assign @ayj 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:

pilot/OWNERS

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

Hi @ajaymandvekar. Thanks for your PR.
I'm waiting for a istio member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.
I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

/assign @ayj @costinm

/ok-to-test

/lgtm
/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: andraxylia
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:

pilot/OWNERS [andraxylia]

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

@ajaymandvekar: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-simpleTests.sh
91a059a7abde9130215f2104745dc8702cdda8ad
link
/test e2e-simple

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test e2e-simple

/retest

New changes are detected. LGTM label has been removed.

There are some ServiceEntries related tests, can you please add one with multiple ports?

@andraxylia Thanks for pointing out. Updated the tests to reflect the scenario.

@andraxylia can you please add another lgtm ?

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: andraxylia
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:

pilot/OWNERS [andraxylia]

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

/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: andraxylia
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:

pilot/OWNERS [andraxylia]

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

New changes are detected. LGTM label has been removed.

@ajaymandvekar: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
3b010a5e02813ddf273f1492d369d16503dd91ed
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/test istio-unit-tests

/retest

@ajaymandvekar: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
3b010a5e02813ddf273f1492d369d16503dd91ed
link
/test istio-unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

@andraxylia Thanks for lgtm. Unfortunately, had to rebase the PR to fix #8942 , which is required test. It's passed now, can you please lgtm one more time and merge it to master?

/lgtm
/approve

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: andraxylia
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:

pilot/OWNERS [andraxylia]

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

the bot should merge it.

@ajaymandvekar: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-mixer-no_auth-mcp.sh
3b010a5e02813ddf273f1492d369d16503dd91ed
link
/test e2e-mixer-no_auth-mcp

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


feat(jump_bar): navigate to booking page on tap a result

Coverage remained the same at 87.395% when pulling 6d20bee01adf4f7364bbfdff9ab9428b3d314c4c on feat/navigate-to-booking-page-on-tap-jump-bar-result into f1aa4f8c49a4a0bdf6796b1d5c5742bc9f39b5f5 on main.


[fix][client-cpp] Fix static compilation that includes openssl

Motivation
Master branch is broken at the moment.
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_set_keylog_callback@OPENSSL_1_1_1'
../lib/.libs/libcurl.so: undefined reference to `SSL_CTX_set_ciphersuites@OPENSSL_1_1_1'
collect2: error: ld returned 1 exit status
make[2]: *** [curl] Error 1
Makefile:839: recipe for target 'curl' failed
make[2]: Leaving directory '/curl-7.61.0/src'
make[1]: *** [all-recursive] Error 1
Makefile:1878: recipe for target 'all-recursive' failed
make[1]: Leaving directory '/curl-7.61.0/src'
Makefile:927: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

Modifications
Fix the static compilation that intends to include a locally built version of openssl. The linking configuration was invalid.
Documentation

[ ] doc-required
(Your PR needs to update docs and you will update later)

[x] doc-not-needed
(Please explain why)

[ ] doc
(Your PR contains doc changes)

[ ] doc-complete
(Docs have been already added)

closing since @BewareMyPower will provide another PR with an improved solution


[Feature] querying too much data lets web page hang

PR checklist

[ ] Ensure you have added or ran the appropriate tests for your PR.
[ ] DCO signed

What type of PR is this?
What this PR does / why we need it:
Which issue(s) this PR fixes:
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

Wait for the #138 merged


LEDs burning my eyes.

As mentioned https://github.com/KinesisCorporation/Adv360-Pro-ZMK/issues/129,  LEDs brightness intensity is too strong (100%?) in any lighting conditions which results in burning my eyes.

OFF
ON

See a video in https://github.com/KinesisCorporation/Adv360-Pro-ZMK/issues/129

To reproduce
I observed the following two patterns that LEDs shine 100%.

a. Turn on power
b. Double click the Bootloader Button (to flash firmware)

Expected Behaviour
User can change LED brightness intensity.
Ref
@KinesisCorporation suggested a guide in https://github.com/KinesisCorporation/Adv360-Pro-ZMK/issues/129#issuecomment-1494585400, but the instruction Edit line: CONFIG_ZMK_BACKLIGHT_BRT_SCALE=25 is for BACKLIGHTs not LEDs so It won't help.

The short bright flash when the board powers up andd is in bootloader is unavoidable I'm afraid, it is an artifact of the bootloader and cannot be configured

@ReFil Does that mean you can't change that behavior in https://github.com/ReFil/zmk/tree/adv360-z3.5 or any other dependencies ?
Seeing too bright lights could cause serious health harms for human eyes so it should be cared by Kinesis Corporation responsibility.

Now we know how @KinesisCorporation treats their users since it's been 3 days when I report potential health harms issue.
I believe it's too early to take advantage open source ZMK for @KinesisCorporation  as they claim they area small private company.
Highly Disappointed!

Unfortunately this is not user-configurable.
Please contact Tech Support and link them to this discussion. We will accept a return of the keyboard.
https://kinesis-ergo.com/support/contact-a-technician/

@KinesisCorporation

Unfortunately this is not user-configurable.

Please elaborate this. Editing source code in https://github.com/ReFil/zmk/tree/adv360-z3.5 could solve this problem?
If not, are you willing to contact someone who develop bootloader firmware?

Hi,
The next time we do work on the bootloader we will explore whether the LEDs can be dimmed. If you decide to keep the keyboard we suggest not looking directly at the LEDs while opening the bootloader. We are still happy to process a return/exchange of the keyboard.

The next time we do work on the bootloader we will explore whether the LEDs can be dimmed.

@KinesisCorporation Could you assign @ReFil to take a look?


Find SceneObject by name #239 - part 2

add the more convenient getSceneObjectByName api

Looks good.  Builds fine.


Revising docs layout and updating for new version of mkdocs

Coverage remained the same at 81.455% when pulling b3e56928be59a23df1e4e3ea7c1fda4b09531f8f on docs into 70e2c9244a3c385a865befdcc39d4927570008e6 on develop.


test: purposes

What does this PR do?
Screenshot/screencast of this PR

What issues does this PR fix or reference?

How to test this PR?

quay.io/redhat-appstudio/pull-request-builds:spi-controller-#
quay.io/redhat-appstudio/pull-request-builds:spi-oauth-#

Closing since this PR was made to find the reason for https://issues.redhat.com/browse/SVPI-710


gomobile build -target ios fails

$ gomobile build -target ios engo.io/engo/demos/pong
gomobile: go build -p=4 -pkgdir=/Users/hajimehoshi/go/pkg/gomobile/pkg_darwin_arm -tags="ios" -o=/var/folders/7t/qw3np69559591s1v0mk5_p1m0000gn/T/gomobile-work-098991452/arm engo.io/engo/demos/pong failed: exit status 2
# github.com/go-gl/glfw/v3.1/glfw
In file included from go/src/github.com/go-gl/glfw/v3.1/glfw/cocoainit_darwin.go:6:
In file included from ./glfw/src/cocoa_init.m:27:
In file included from ./glfw/src/internal.h:63:
./glfw/src/../include/GLFW/glfw3.h:124:12: fatal error: 'OpenGL/gl.h' file not found
  #include <OpenGL/gl.h>
           ^
1 error generated.
# github.com/go-gl/gl/v2.1/gl
ld: framework not found OpenGL
clang: error: linker command failed with exit code 1 (use -v to see invocation)

The build tags should be:

ios darwin,arm darwin,arm64 for iOS
android for Android
!ios, darwin,!arm,!arm64 for non-iOS
!android for non-Android.

as I mentioned at #370.

hi  hajimehoshi  , we have email before
which go game engine is better, yours or this engo?
what block the ios build ?   gomobile supported ios,  I have successfully  gomobile build ios , and run on iphone.   But  there is something wrong to distribute it to app store

I don't understand your question. The situation doesn't change after you mailed

which is better，   engo  or your game engine？
2017-10-13 16:31 GMT+08:00 Hajime Hoshi<EMAIL_ADDRESS>
I don't understand your question. The situation doesn't change after you
mailed
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/EngoEngine/engo/issues/371#issuecomment-336386968,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AH9v9LfIVQ5CMuOjCTRnxCNiZZrUY5zOks5srx_mgaJpZM4I9Exk
.

I'm afraid I don't think here is the appropriate place to answer such question :-)

Well, as far as I know, there was some reason it doesn't work on ios when you build it using gomobile. However, no one on the team has a Mac to do testing on and fix it, so for now the tags are setup on purpose to not build for ios at all. If you have time and a Mac to work on and fix it, that would be a welcome contribution!


aiosmtpd inside container getting bridge address for peers

When we get the peername for our connections in the aiosmtpd daemon, it is a docker internal ip address (and all connections come from the same ip address.)
This will break the authenticator's blacklist mechanism of black listing ip addresses that frequently produce failed logins.
Since every connection is coming from the same internal ip address one client getting black listed will black list everyone.

well, turns out that in our production environment this is NOT happening. This is only happening on our MacOS development environments. So, nothing needs to be done.


Proposal for flexible composition of scanner components

Continuation of #18.
I am mainly posting this in order to let you know what I am planning to do in order to not duplicate work.
I now have a running version of the flexible composition including tests. Running in this context means that all dummy devices except the robot can be instantiated from a TOML configuration file. Each device is referenced with a unique ID and can also be retrieved by its type in order to e.g. get a DAQ device for acquisition.
Obviously, I broke a lot of stuff and would like to put the pieces together again. I did it this way since I am pretty convimced that the flexible composition stuff breaks a lot of tests if we do it the other way around and then the tests would not help us anyway. Therefore here is an outline of what I am planning to do:

[ ]  Solve #20; I will probably go along the MDF definition and create structs according to the /acquisition/ group and its subgroups. We have to discuss that in the issue.
[ ] Solve #19: After we have an interface definition I can make the DAQ dummy work including a change in phase and amplitude. A simple setup of one send channel, one receive channel and a feedback channel should be sufficient. I already have a very simple Langevin simulation in MATLAB which should be easy to adapt.
[ ] Fix the measurement interface for simulations and implement tests for the simulated DAQ.
[ ] Build a simulated robot that can be linked with a simulated gaussmeter. This should enable testing of field measurements in software.
[ ] Build up a Red Pitaya test setup which mirrors the above setup in real hardware. I will add a voltage divider with a capacitor, which should allow for a phase change.

If all theses points have been done, we should be able to merge this request. After that we can tackle #22.

Comments:

In general: awesome. I like both the general proposal how to proceed but also the implementation looks very good. I have not checked every line but in particular what you have done with the scanner looks buch better than what I had.
Regarding getDevice(scanner, "my_daq_id") I like the flexibility but in practice it is not so clear to me how to now the ID. For instance the GUI just wants "the" daq and the GUI does not know about IDs
The Manifest files should not be checked in. Best is to put that into gitignore.
I like the structure where we have a dedicated folder and put everything in there. This folder should probably not live in MPIMeasurements itself (we do this mostly because we are lazy). We at IBI have a folder .mpilab where we put these things. We probably could just call this .mpi. Julia 1.6 has also introduced some package configuration infrastructure I have not looked into yet.
Regarding Unitful I have some doubts how much to use it since in the past it made me quite some problems. This is also incompatible with what we do in MPIFiles / MPIReco. In my point of view Unitful is only helpful on the surface between a user (i.e. command line, config file) and the library itself. But then one should get rid of the units and internally just have a standard, i.e. a length of 1.0 is one meter.
TransferFunction has been removed. Not 100% sure where to put this put it is definitely important and in use. For instance in an MPS, the transfer functions are applied. The transfer function should probably best be located within the scanner folder in the future.
I think you have seen that I made the Dummy work and integrated the changes. This allowed me to increase code coverage from 3% to 10%.
I will try to not make larger changes in MPIMeasurements in the next weeks so that our branches do not diverge to much. I might need to make smaller changes to get our scanner going but this should be rather minor things.

In general: awesome. I like both the general proposal how to proceed but also the implementation looks very good. I have not checked every line but in particular what you have done with the scanner looks buch better than what I had.
Thanks!

Regarding getDevice(scanner, "my_daq_id") I like the flexibility but in practice it is not so clear to me how to now the ID. For instance the GUI just wants "the" daq and the GUI does not know about IDs
I added some convenience functions using getDevices(scanner, dataType) (please note the plural) in 15b5de8

The Manifest files should not be checked in. Best is to put that into gitignore.
Done in 0c52587.

I like the structure where we have a dedicated folder and put everything in there. This folder should probably not live in MPIMeasurements itself (we do this mostly because we are lazy). We at IBI have a folder .mpilab where we put these things. We probably could just call this .mpi. Julia 1.6 has also introduced some package configuration infrastructure I have not looked into yet.
With addConfigurationPath(path::String) (https://github.com/MagneticParticleImaging/MPIMeasurements.jl/blob/15b5de8c0999d4f6925551a81fce90c671374b85/src/MPIMeasurements.jl#L61) you can add arbitrary search paths for scanners, so I guess every way we want itshould work out. I am e.g. using it for the test configurations.

Regarding Unitful I have some doubts how much to use it since in the past it made me quite some problems. This is also incompatible with what we do in MPIFiles / MPIReco. In my point of view Unitful is only helpful on the surface between a user (i.e. command line, config file) and the library itself. But then one should get rid of the units and internally just have a standard, i.e. a length of 1.0 is one meter.
Concerning the use of units in software I always think of my course on software engineering where we had the example of the Mars Climate Orbiter. It might make some use cases more complicated but at some parts removes the ability to (easily) shoot your own leg. So I don't know how to proceed here. I would like to keep it in until we find a case where we can't reach our goal easily without removing Unitful.

TransferFunction has been removed. Not 100% sure where to put this put it is definitely important and in use. For instance in an MPS, the transfer functions are applied. The transfer function should probably best be located within the scanner folder in the future.
I understood the comment in https://github.com/MagneticParticleImaging/MPIMeasurements.jl/blob/4ba483cd351431da07ad2d9b136e9f200bf2e20c/src/MPIMeasurements.jl#L42 in such a way that it is not used anymore since it now lives in MPIFiles.

I think you have seen that I made the Dummy work and integrated the changes. This allowed me to increase code coverage from 3% to 10%.
Yes, I have merged those changes into my branch and will re-add the tests when I have resolved some other issues.

I will try to not make larger changes in MPIMeasurements in the next weeks so that our branches do not diverge to much. I might need to make smaller changes to get our scanner going but this should be rather minor things.
Yes, that would be great, even though I fully understand that you want your head scanner to work and have to make changes. I will just continue merging them on a regular basis.

You are right, the transfer function stuff can definitely be removed. I forgot that we moved that stuff to MPIFiles.
getDAQ and getDAQs are perfect for my use case. That is exactly what I wanted.
Regarding Unitful I am absolutely fine to explore this more but I wanted to give a warning that this can have severe consequences since units propagate. So if you start here, you also need it in MPIFiles. If you use it in MPIFiles you need it in MPIReco. Then you need it in ImageUtils. And finally we need it in MPIUI. So this is a massive project. And even more important we need to have defined rules where to put units on. Just look at the voltage vector should its elements by voltages? You will not be able plotting it anymore when you do this without stripping the units. But maybe its good that you try to explore where this goes. Then we can learn from that experience how to proceed.


spaCy integration ignores old entities

I think it might not be best practice to completely overwrite the previously obtained entities, maybe something like the code underneath would work better.
from spacy.util import filter_spans

doc.set_ents(filter_spans(list(doc.ents) + new_ents))

I'll look into adding this as a toggle, off by default. Thanks for the suggestion!

Implemented in #16 and released in 1.3.0.


Need to know Win 10 version needed

What version of Windows 10 is required? Please include this in the article.
[Enter feedback here]

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

ID: 6f8b204f-9650-d268-8566-7a75ba0a1b6a
Version Independent ID: 9a963e63-6716-7522-8abe-c8a407d3a46d
Content: Build a Microsoft Teams Rooms image - Microsoft Teams
Content Source: Teams/rooms/console.md
Service: msteams
GitHub Login: @dstrome
Microsoft Alias: dstrome

@sysadmin-scs thank you for reaching out. You can find the version here:
https://docs.microsoft.com/microsoftteams/rooms/requirements#required-software-downloads

The link does not provide the correct version..
during the process, one step is downloading the Deployment Kit (https://go.microsoft.com/fwlink/?linkid=851168)
it then extracts the files and uses the following file to verify the iso
SRSv2\Skype Room System Deployment Kit$oem$$1\Rigel\x64\Scripts\Provisioning\config.json
however this file also contains the incorrect VlscName of the image..
done in another issue https://github.com/MicrosoftDocs/OfficeDocs-SkypeForBusiness/issues/8934


How to use Pycba calculate deflection of  a cable-stayed bridge?

Hi, thanks for your work. I have a question about how to calculate deflection of  a cable-stayed bridge like the picture.

I think this could be done in a sense by just modelling the deck and applying spring supports to represent the cables. However, it would be better suited to a 2D analysis package as estimation of the spring stiffnesses will be quite challenging in itself.

Exactly @AlexGriffiths526 ; an equivalent spring stiffness taking into account the cable angle and prestressing is a good first approximation to the real (complex) behaviour. Something like this: https://www.researchgate.net/publication/264168489_Equivalent_stiffness_method_for_nonlinear_analysis_of_stay_cables


Add/remove/update variables

What type of PR is this?
/kind feature
What this PR does / why we need it:
Add/update/remove variables to the new bootstrap contract
Which issue(s) this PR fixes:

Fixes #
Requirements:

[ ] uses conventional commit messages

[ ] includes documentation
[ ] adds unit tests
[ ] tested upgrade from previous version

Special notes for your reviewer:
Release note:
none

FeatureState ssh_status = 27; | Devin | Done |
-- | -- | -- | --
optional FeatureState   unattended_upgrade_status = 28; | Devin | Done |
string   message_of_the_day = 29; | Devin | Done |
KubeletConfig kubelet_config =   31; | Devin |   | https://github.com/Azure/AgentBaker/pull/4123/files/35035ae08cd83afcb6845101344211fa4fdc9f8a#r1508262209
FeatureState   hosts_config_agent_status = 32; | Devin | Done |
CustomCATrustConfig   custom_ca_trust_config = 33; | Devin | Done | removed variable status
string provision_output   = 34; | Devin | skipped | not used in Karpenter's cse_cmd.sh yet. TBC in AKS-RP
string hyperkube_url =   35; //will be removed later | Devin | Done | removed
string moby_version =   36; //will be removed later | Devin | Done | removed
string   container_runtime = 37; //will be removed later | Devin | Done | removed
string cli_tool = 38;    //will be removed later | Devin | Done | removed
bool needs_containerd =   39; //will be removed later | Devin | Done | removed
bool is_krustlet = 40;   //can be removed, this only depends on workload runtime, which is a better   contract input | Devin | Done | replaced with workload_runtime
bool needs_docker_login   = 41; //useless, will remove | Devin | Done | removed
optional FeatureState   ipv6_dual_stack_enabled = 42; //seems very specific to RP, discuss with Alex   wrt Karpenter | Devin | Done |
optional string   outbound_command = 43; //this is const depending on cloud, can be removed   later with smart refactoring | Devin | Done | add getDefaultOutboundCommand() and getOutBoundCmd() helper   functions
optional bool   ensure_no_dupe_promiscuous_bridge = 45; //this is little weird, check   cse_cmd.sh for actual condition | Devin | Done | removed from contract as it can be computed from others
optional   CustomSearchDomain custom_search_domain = 46; | Devin | Done | removed CustomSearchDomain.Filepath. Compute HasSearchDomain   from others

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
2293

Relevant Lines:
2890

💛  - Coveralls


mc snaps to idle animation after hitting head on ceiling

they also stay for the full jumping animation if they try to jump and can't

added a check on collisionEnter to see whether the y-pos of the object hit is below the player's, which fixed it


How to add children dynamically using JFXMasonryPane ?

Hi, I like JFXMasonryPane very much. The only thing I can't understand is how to add children dynamically? Pseudo code as below:
button.setOnClick(e -> {     masonryPane.getChildren().add(new Label("test")); });
I tried a lot but can't see "test" labels, do I really need to modify JFoenix source code?

Hi,
will debug this, thanks for pointing out the issue :+1:
Regards,

the issue has been fixed, you can test it using the latest JFoenix jar
this fix is not yet pushed to maven central, it will be pushed by the end of the month.
Regards,

Thank you very much admin, sorry for the late reply~
I'll try it ASAP. :-) :+1:


FileNotFoundException

When running your example code using Maven, I get:
java.io.FileNotFoundException: File /lib/bulldog-linux-native-beagleboneblack-hardfp.so was not found in classpath.

What else am I missing? I followed the instructions under Usage.

It looks like Maven isn't pulling bulldog-linux-native-beagleboneblack-0.1.2.so down from Maven Central.

I tried another approach to get this to work. I clone the repo and imported into Eclipse. When I run my LED blinking app, I get the following. Any help you can offer?
[main] ERROR io.silverspoon.bulldog.linux.sysinfo.CpuInfo - Cannot read file /proc/cpuinfo
java.nio.file.NoSuchFileException: /proc/cpuinfo
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:86)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
	at sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:214)
	at java.nio.file.Files.newByteChannel(Files.java:361)
	at java.nio.file.Files.newByteChannel(Files.java:407)
	at java.nio.file.Files.readAllBytes(Files.java:3152)
	at io.silverspoon.bulldog.linux.sysinfo.CpuInfo.readFile(Unknown Source)
	at io.silverspoon.bulldog.linux.sysinfo.CpuInfo.<clinit>(Unknown Source)
	at io.silverspoon.bulldog.beagleboneblack.BeagleBoneBlackBoardFactory.isCompatibleWithPlatform(BeagleBoneBlackBoardFactory.java:12)
	at io.silverspoon.bulldog.core.platform.Platform.createBoard(Unknown Source)
	at org.knowm.sbc_apps.bbb.BulldogLED.main(BulldogLED.java:14)
Exception in thread "main" java.lang.NullPointerException
	at io.silverspoon.bulldog.beagleboneblack.BeagleBoneBlackBoardFactory.isCompatibleWithPlatform(BeagleBoneBlackBoardFactory.java:12)
	at io.silverspoon.bulldog.core.platform.Platform.createBoard(Unknown Source)
	at org.knowm.sbc_apps.bbb.BulldogLED.main(BulldogLED.java:14)

Can you reproduce with the 0.2.0-SNAPSHOT version?

I'll let you know eventually. I've moved on to other things for now.


Preserve trailing newline at the end of the file

It would be nice if trailing newlines at the end of files were preserved - currently they're removed.

Hi @Gama11
Please update the extension to version v16.0.0
Now we preserve trailing newline at the end of the file.
Thanks,
Siva


Prepend or append strings to file and folders name

Description of the new feature / enhancement
I think it would be really usefull if Power Renamer could append and prepend strings to files and folders name
Scenario when this would be used?
In my opinion the best scenario it would be when organizing files/folders, like you've just come home from a trip and you want to add a prefix on photos about a certain place or event, or when you are renaming projects folders.
I can see my self and others using this a lot!
Supporting information
No response

There was already an open issue (#24471) about the same thing, didn't noticed it on my first search!


VertexAI - Decoding the Chat history fails with "No text, inline data or function call was found." when a functionResponse exists

Description
In order to save the Chat history, I encode it and save it to a file.  When the app starts, I load the Chat history from the file and decode it.  This works fine unless the Chat history contains a functionResponse.  Decoding the history when it contains a functionResponse fails.
Reproducing the issue
Use the code below to test.  Call the await test() function.
The first time, loading the chat history will fail because no file called"testFile" exists.  However, saving is successful so the file will exist the next time you call test().
The second time, the file exists but decoding fails.

let getExchangeRate = FunctionDeclaration(
    name: "getExchangeRate",
    description: "Get the exchange rate for currencies between countries",
    parameters: [
        "currencyFrom": Schema(
            type: .string,
            description: "The currency to convert from."
        ),
        "currencyTo": Schema(
            type: .string,
            description: "The currency to convert to."
        ),
    ],
    requiredParameters: ["currencyFrom", "currencyTo"]
)

func makeAPIRequest(currencyFrom: String,
                    currencyTo: String) -> JSONObject {
    // This hypothetical API returns a JSON such as:
    // {"base":"USD","rates":{"SEK": 10.99}}
    return [
        "base": .string(currencyFrom),
        "rates": .object([currencyTo: .number(10.99)]),
    ]
}

func test() async {
    let testFile : String = "testFile"
    // Initialize the Vertex AI service
    let vertex = VertexAI.vertexAI()

    // Initialize the generative model
    // Use a model that supports function calling, like a Gemini 1.5 model
    let model = vertex.generativeModel(
        modelName: "gemini-1.5-flash",
        // Specify the function declaration.
        tools: [Tool(functionDeclarations: [getExchangeRate])]
    )

    let history = loadChatHistory(from: testFile)
    let chat = model.startChat(history : history)

    let prompt = "How much is 50 US dollars worth in Swedish krona?"

    // Send the message to the generative model
    Task {
        let response1 = try await chat.sendMessage(prompt)

        // Check if the model responded with a function call
        guard let functionCall = response1.functionCalls.first else {
            fatalError("Model did not respond with a function call.")
        }
        // Print an error if the returned function was not declared
        guard functionCall.name == "getExchangeRate" else {
            fatalError("Unexpected function called: \(functionCall.name)")
        }
        // Verify that the names and types of the parameters match the declaration
        guard case let .string(currencyFrom) = functionCall.args["currencyFrom"] else {
            fatalError("Missing argument: currencyFrom")
        }
        guard case let .string(currencyTo) = functionCall.args["currencyTo"] else {
            fatalError("Missing argument: currencyTo")
        }

        // Call the hypothetical API
        let apiResponse = makeAPIRequest(currencyFrom: currencyFrom, currencyTo: currencyTo)

        // Send the API response back to the model so it can generate a text response that can be
        // displayed to the user.
        let response = try await chat.sendMessage([ModelContent(
            role: "function",
            parts: [.functionResponse(FunctionResponse(
                name: functionCall.name,
                response: apiResponse
            ))]
        )])

        // Log the text response.
        guard let modelResponse = response.text else {
            fatalError("Model did not respond with text.")
        }
        saveChatHistory(chat.history, to: testFile)
        print(modelResponse)
    }
}

func saveChatHistory(_ history: [ModelContent], to filename: String) {
    let fileManager = FileManager.default
    let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
    if let documentDirectory = urls.first {
        let fileURL = documentDirectory.appendingPathComponent(filename)
        let encoder = JSONEncoder()
        encoder.outputFormatting = .withoutEscapingSlashes
        do {
            let data = try encoder.encode(history)
            try data.write(to: fileURL)
            print("Chat history saved successfully.")
        } catch {
            print("Failed to save chat history: \(error)")
        }
    }
}

func loadChatHistory(from filename: String) -> [ModelContent] {

    let fileManager = FileManager.default
    let urls = fileManager.urls(for: .documentDirectory, in: .userDomainMask)
    if let documentDirectory = urls.first {
        let fileURL = documentDirectory.appendingPathComponent(filename)
        let decoder = JSONDecoder()
        do {
            let data = try Data(contentsOf: fileURL)
            if let jsonString = String(data: data, encoding: .utf8) {
                print("Loaded JSON string: \(jsonString)")
            }
            let history = try decoder.decode([ModelContent].self, from: data)
            print("Chat history loaded successfully.")
            return history
        } catch {
            print("Failed to load chat history: \(error)")
        }
    }
    return []
}

Firebase SDK Version
11.1
Xcode Version
16.0
Installation Method
Swift Package Manager
Firebase Product(s)
VertexAI
Targeted Platforms
iOS
Relevant Log Output
Failed to load chat history: Error Domain=NSCocoaErrorDomain Code=260 "The file “testFile” couldn’t be opened because there is no such file." UserInfo={NSUnderlyingError=0x600000cd36c0 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}, NSURL=file:///Users/Shane/Library/Developer/CoreSimulator/Devices/C98366BC-B53E-466D-AAEC-2D950385105D/data/Containers/Data/Application/D490FDC4-6CB9-4F46-90B4-AC9D76562B42/Documents/testFile, NSFilePath=/Users/Shane/Library/Developer/CoreSimulator/Devices/C98366BC-B53E-466D-AAEC-2D950385105D/data/Containers/Data/Application/D490FDC4-6CB9-4F46-90B4-AC9D76562B42/Documents/testFile}
nw_connection_copy_connected_local_endpoint_block_invoke [C1] Connection has no local endpoint
nw_connection_copy_connected_local_endpoint_block_invoke [C1] Connection has no local endpoint
Chat history saved successfully.
50 US dollars is worth 549.5 Swedish krona.

Submit function called
[FirebaseVertexAI] To enable additional logging, add `-FIRDebugEnabled` as a launch argument in Xcode.
[FirebaseVertexAI] Model projects/expense-tracking-59dac/locations/us-central1/publishers/google/models/gemini-1.5-flash initialized.
Loaded JSON string: [{"role":"user","parts":[{"text":"How much is 50 US dollars worth in Swedish krona?"}]},{"parts":[{"functionCall":{"name":"getExchangeRate","args":{"currencyTo":"SEK","currencyFrom":"USD"}}}],"role":"model"},{"role":"function","parts":[{"functionResponse":{"response":{"base":"USD","rates":{"SEK":10.99}},"name":"getExchangeRate"}}]},{"parts":[{"text":"50 US dollars is worth 549.5 Swedish krona. \n"}],"role":"model"}]
Failed to load chat history: dataCorrupted(Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "text", intValue: nil), CodingKeys(stringValue: "inlineData", intValue: nil)], debugDescription: "No text, inline data or function call was found.", underlyingError: nil))
Chat history saved successfully.
50 US dollars is worth 549.5 Swedish krona.

If using Swift Package Manager, the project's Package.resolved

Expand Package.resolved snippet

Replace this line with the contents of your Package.resolved.

If using CocoaPods, the project's Podfile.lock

Expand Podfile.lock snippet

Replace this line with the contents of your Podfile.lock!

Hi @TiVoShane, thank you for providing the the full code snippet. That made it easy to understand your use case for decoding FunctionResponse, even though it's not a type that comes from the backend. I've got a PR out for review to resolve the issue now and will keep you posted.

@TiVoShane The fix for this issue is merged into main now and will go out in the Firebase 11.3 (next next) release. As a heads up, if you try this out on main (or the upcoming Firebase 11.2 release) there will be a few breaking changes that might require you to tweak your code slightly if you use those APIs: https://github.com/firebase/firebase-ios-sdk/blob/3e2c79dd62289dc0c503eabbdb262ad6118432c8/FirebaseVertexAI/CHANGELOG.md?plain=1#L7-L14

Any idea when 11.3 will be released?    Thanks for fixing this!
Shane Miller
https://twitter.com/TiVoShane
https://www.instagram.com/tivoshane
https://www.instagram.com/tivoshane?igsh=OXV3amY0ejAzejgz&utm_source=qr
On Mon, Sep 9, 2024 at 2:42 PM Andrew Heard @.***>
wrote:

@TiVoShane https://github.com/TiVoShane The fix for this issue is
merged into main now and will go out in the Firebase 11.3 (next next)
release. As a heads up, if you try this out on main (or the upcoming
Firebase 11.2 release) there will be a few breaking changes that might
require you to tweak your code slightly if you use those APIs:
https://github.com/firebase/firebase-ios-sdk/blob/3e2c79dd62289dc0c503eabbdb262ad6118432c8/FirebaseVertexAI/CHANGELOG.md?plain=1#L7-L14
—
Reply to this email directly, view it on GitHub
https://github.com/firebase/firebase-ios-sdk/issues/13593#issuecomment-2338938056,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AA5ICKHRXIZRNSOPIVSRCNLZVX2ZBAVCNFSM6AAAAABNWWVKESVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMZYHEZTQMBVGY
.
You are receiving this because you were mentioned.Message ID:
@.***>

We plan to release 11.3 the week of September 30th


add flag to record sbatch script used with job

Add flag to make slurm record the sbatch script that was used with a job.
Tested on dev cluster:

Added flag
Reloaded slurm.conf file. sudo scontrol reconfigure
Ran job that uses a sbatch script
Verified that sbatch script was recorded sacct -j {job_id} -B. The -B option causes the command to output the sbatch script.

Test out adding it on dev cluster or even prod.
See where the scripts are stored and if they give us any valuable info before we commit it to main.

We can close this.


Added team at in the pull request

Summary
Add @cerner/terra in the pull request template. By this @ label, we can view all PR across all repos under terra team.
Additional Details
It looks like following screenshot(shows all open PR across all terra team's repos):

Github search syntax
Please add your name to the CONTRIBUTORS.md file. Adding your name to the CONTRIBUTORS.md file signifies agreement to all rights and reservations provided by the License.
Thanks for contributing to Terra.
@cerner/terra

+1

@windse7en can we delete this branch?


snowsight-privatelink-url support

Hello,
first of all thank you for this module!
I have a question, by running select SYSTEM$GET_PRIVATELINK_CONFIG(); I get following output where I put generated word for entries which are generated by your module, but
{
    generated "regionless-snowsight-privatelink-url": "app-a7113852843961-dp1merkledach.privatelink.snowflakecomputing.com",
    "privatelink-account-name": "eh18901.eu-central-1.privatelink",
    generated "privatelink-vpce-id": "com.amazonaws.vpce.eu-central-1.vpce-svc-0e506bf875de0062e",
    "snowsight-privatelink-url": "app.eu-central-1.privatelink.snowflakecomputing.com",
    "regionless-privatelink-ocsp-url": "ocsp.a7113852843961-dp1merkledach.privatelink.snowflakecomputing.com",
    generated "privatelink-account-url": "eh18901.eu-central-1.privatelink.snowflakecomputing.com",
    "privatelink-connection-ocsp-urls": "[]",
    generated"regionless-privatelink-account-url": "a7113852843961-dp1merkledach.privatelink.snowflakecomputing.com",
    generated "privatelink_ocsp-url": "ocsp.eh18901.eu-central-1.privatelink.snowflakecomputing.com",
    "privatelink-connection-urls": "[]"
}

following entries are not configured by the module:
"snowsight-privatelink-url": "app.eu-central-1.privatelink.snowflakecomputing.com",
"regionless-privatelink-ocsp-url": "ocsp.a7113852843961-dp1merkledach.privatelink.snowflakecomputing.com",

would you support these as well? I am new to Snowflake so not sure if it is needed or not.
Thanks for feedback.
Kind regards,
Ladislav Zitka

I tested connectivity via SnowCD and got following result:

Can we extend the module to support those 2 entries as well?

while studying more the module I think I can enable missing 2 hosts resolutions by adding records via additional_dns_records


Figure out upgrade story with regards to native host (needs to be re-registered)

One possibility is that the native host itself will perform the upgrade:
on upgrade, extension will ping the host, and it will place itself in the registry using new location.


sudo rpi-update failure

I flash  lastest  img
test@raspberrypi:~ $ sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
!!! Failed to download update for rpi-update!
!!! Make sure you have ca-certificates installed and that the time is set correctly
I  had install ca-certificates  date is right

test@raspberrypi:~ $ sudo apt install ca-certificates
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
ca-certificates is already the newest version (20210119).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
test@raspberrypi:~ $ sudo ntpdate ntp.aliyun.com
14 Jul 09:25:37 ntpdate[1936]: adjust time server <IP_ADDRESS> offset +0.005851 sec
test@raspberrypi:~ $ sudo rpi-update
*** Raspberry Pi firmware updater by Hexxeh, enhanced by AndrewS and Dom
*** Performing self-update
!!! Failed to download update for rpi-update!
!!! Make sure you have ca-certificates installed and that the time is set correctly


optimize SourceLine to not create a new instance of Error from String method

We noticed that ErrorStack() takes a considerable amount of cpu while computing the stack and the time is spent in SourceLine() method returning a New(err). This error is completely ignored in the String() method. The optimization is to give the builtin error instead of Error from an internal method which can be used by the String() method. SourceLine() is modified to invoke the internal method sourceLine() and returning an Error.

Thanks @kishoresenji

I've added you as a collaborator to this repo, thank you for the contribution! Please feel free to send pull requests more :)


Add support for dask-ctl

As mentioned in #543 it would be really nice for dask-jobqueue to support dask-ctl for convenient cluster management. However from what I understand about HPC scheduling systems this may not be a trivial task.
Dask Control aims to allow users to create/list/scale/delete Dask clusters via the CLI and a Python API. Support for dask-ctl is implements on a per-cluster manager basis with the following tasks.

It must be possible to delete a Cluster object without destroying the Dask cluster
It must be possible to list all running clusters
It must be possible to create a new instance of the Cluster object that represents an existing cluster

The main challenges here are around moving the state out of the Cluster object into a place that it can be retrieved later. On platforms like Kubernetes or the Cloud much of the state can be serialised into tags/labels on the various tasks, but I'm not sure how many HPC systems support this kind of metadata storage.
The other challenge is how to discover clusters. On Kubernetes for example we set a tag on all resources that marks it as being created by dask-ctl and stores an ID that can be used to retrieve the metadata. Again I'm not sure how flexible HPC schedulers are at being able to tag/label jobs with arbitrary metadata.
The last thing that maybe a blocker is that the Dask cluster must always run the scheduler remotely, it cannot be within the local (or login node) Python process. I'm not sure how that affects things here.
I'm keen to see this happen, and if folks have thoughts on how this can be implemented I'd be keen to hear.

Apologies in advance for naive questions, is a ClusterManager a dask-ctl concept or a more general dask concept?
On every HPC system I've used the head node and compute nodes have access to at least one shared filesystem, my brain naively jumped to storing the state of each cluster in text files there. Can you see obvious reasons this wouldn't work?
One potential limitation is that cluster admins sometimes kill long running jobs on head nodes (c.f. #471)

Yeah distributed.deploy.Cluster is an interface that we use all over Dask. The SLURMCluster, PBSCluster, etc classes in this project subclass Cluster. We also use it for Kubernetes, Cloud, Hadoop, Local, etc so that users can move between backends with some consistency.
I think we would need to think about moving the scheduler off the head node and into a job in the cluster, but I might be wrong here.
A shared filesystem feels like a reasonably safe assumption. It's just the inconsistency of the implementation that would worry me.
Let's use SLURM as an example. Cluster discovery and reconstruction would look like this:

We could in theory list all running jobs on a SLURM cluster looking for jobs running a dask-scheduler
We would need to find all the worker jobs associated with that scheduler

How would we find these? Perhaps in the metadata file?

We would need to find the config used to create those worker jobs (in order to scale up and create more)

How would we consistently find this file across systems?

Connect an RPC to the scheduler.
Reconstruct the SLURMCluster object around that config and RPC.

Gotcha, appreciate the explanation! - my confusion was about whether Cluster and ClusterManager were actually the same thing which is now clear 🙂

We could in theory list all running jobs on a SLURM cluster looking for jobs running the dask-scheduler command.
We would need to get the ID of each scheduler somehow.

This one could maybe be automatically encoded in the job name?

We would need to find all the worker jobs associated with each scheduler
How would we find these? Perhaps in the metadata file?

If we find a way to hook into the filesystem, something as simple as text files per scheduler which are created/destroyed on job start/end? Not sure if machinery for this already exists but it could be added

We would need to find the config used to create those worker jobs (in order to scale up and create more)
How would we consistently find this file across systems? While a shared filesystem likely exists we won't know where it is mounted.

This is tougher for sure - I'll have a think 🙂
Thanks for step-by-stepping it, super useful!

It is typical on HPC to use the --scheduler-file flag when starting a cluster, I wonder if we could repurpose this somehow?
We would have to check if all HPC schedulers support this but when we list the running jobs it is likely we would have the command that was invoked to start the scheduler. So if things like the ID and config path were passed to the scheduler as arguments we could parse those out again. Again that might be a big assumption though.

My knowledge of jobqueue systems is pretty limited, but I wonder if it would be possible to use environment variables for this? This is a standard OS feature so it is very likely that every single cluster implementation supports it (though the mechanism to export the variables to the job might vary).
It should also be possible to retrieve the values of the exported variables from the jobs.
The only issue I can imagine would be size limits on the environment variables, but it should be possible to work around those (and ID and config path do not sound like a lot of characters).


StaticQueue_t needs to have the same size as xQUEUE.

Without this change, building FreeRTOS with static allocation enabled succeeds, but trying to create a queue from a static buffer causes a runtime assert because the size of static and dynamic queues differ.

@igrr @Spritetm have you been able to check this one? It's a no-brainer ;-)

Yes! It is merged and should be in Github master soon.

Merged in 3830305, thanks.


ScaledObject type Cron with Min Replicas

Proposal
Configs in metadata.end of cron scheduler type to not set desired replicas to 0, just adjust to deployment default value.
defaultReplicas or minReplicas to scale after the warm up period ends.
Use-Case
Pre-warming deployments at certain times to prepare for access and periods
Anything else?
No response

Hi, can you clarify what you want to achieve, please?
Because from what you are describing, it sounds like you are describing what our Cron scaler does.
It scales a target to a given amount of replicas based on the schedule.

Maybe @msfidelis was talking about this.
Basically, we are scaling to 1 when we are out of the cron active time. Would it be nice if we support the selection of the amount of the replicas in case of active period and in case of inactive period?

The case of inactive is most probably covered by https://github.com/kedacore/keda/pull/1958 which is now in v2.4

Nice!

I'm sorry for delay. I found the solution for my problem. I need create a pre-warmup for predictive throughput and return to normal capacity after that.
To Keda don't set my tasks to 0 after cron triggers ends, i just set minReplicaCount to my default replica count.
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: example-app-warm-up
  namespace: example-app
spec:
  scaleTargetRef:
    name: example-app
  minReplicaCount: 10
  maxReplicaCount: 30
  triggers:
  - type: cron
    metadata:
      timezone: America/Sao_Paulo
      start: 00 00 * * *
      end: 00 06 * * *
      desiredReplicas: "30"

I'm sorry for the time the issue stay open and I appreciate your attention, folks!


wrong final block length error while decrypting

I'm using this line of code to decrypt a string:
var decryptedString = cryptoLib.decrypt(myString, returnShaKey, process.env.RETURN_TOKEN_AES_IV);

It works fine when I pass the generated encrypted string in myString
But suppose I sent no string / wrong string, it gives this error:

Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
at Decipheriv.final (crypto.js:181:26)
at CryptLib._encryptDecrypt (/home/ubuntu/rotor/api/node_modules/cryptlib/dist/CryptLib.js:98:24)
at CryptLib.decrypt (/home/ubuntu/rotor/api/node_modules/cryptlib/dist/CryptLib.js:180:19)
at guard (/home/ubuntu/rotor/api/app.js:94:33)
at Layer.handle [as handle_request] (/home/ubuntu/rotor/api/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:312:13)
at /home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:330:12)
at next (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:271:10)
at jsonParser (/home/ubuntu/rotor/api/node_modules/body-parser/lib/types/json.js:109:7)
at Layer.handle [as handle_request] (/home/ubuntu/rotor/api/node_modules/express/lib/router/layer.js:95:5)
at trim_prefix (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:312:13)
at /home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:280:7
at Function.process_params (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:330:12)
at next (/home/ubuntu/rotor/api/node_modules/express/lib/router/index.js:271:10)
at urlencodedParser (/home/ubuntu/rotor/api/node_modules/body-parser/lib/types/urlencoded.js:91:7)

It shows this error when I open the API url in my browser as well. Is there a way I can handle this error and display a custom message (so the API doesn't appear buggy) ?? @invalidred

hi @mridah maybe you can surround the code in try/catch block and try.

hi @invalidred , sorry was a little busy...thanks :)
it's working fine now !!


Determine a list of converters and renderers

We talked about a bunch of formats that are used by learning/classroom management systems. We need to decide the first set of converters and renderers we attempt for the first release of this.

There are QTI ←→ SCORM converters out there, e.g., http://www.aspect-project.org/node/121


[SHIP-316] Delete deleting for app, plugin, appversion, pluginversion

This implies that the tests will not clean up after themselves as well.

LGTM I updated with main, hopefully, all the tests pass now. 🤞
I suggest we merge this before #165 to avoid too many merge conflicts.


Broken links to source code of examples

The examples (e.g. the Hurricanes example) have a "Source code" link in the footer, but these links are broken.
Looking in the gh-pages branch, the main.html file that should be inside geojs/examples/hurricanes/docs/ is in fact inside the nested subdirectories home/runner/work/geojs/geojs/examples/hurricanes/ inside that directory.

Thanks for reporting this.


proposal: InboundTrafficPolicy

Relates to
#1492
#1821
#1845
What is this?
InboundTrafficPolicy is a proposal for a new policy attachment resource that can be applied to Gateway resources. It is meant to supplement a lot of config that Gateway API currently lacks while also providing a way to specify global defaults and is the counterpart to the other proposed BackendTrafficPolicy resource.
How would I use this resource?
You can attach a InboundTrafficPolicy to a Gateway to configure behaviour for how Envoy Proxy communicates with downstream clients.
What if Gateway API implements a GEP that delivers the same functionality as some of the fields of this resource?
If Gateway improves any of their existing resources to deliver functionality that meets all of the needs of any of the below config,
then we will deprecate the field in this resource and use the Gateway API config instead. Ideally, a lot of this config can be
upstreamed into Gateway API in some form eventually since this resource only exists to solve areas where Gateway API is lacking for the needs of Envoy Gateway.
Can you use multiple InboundTrafficPolicy resources at the same time?
You may use multiple InboundTrafficPolicy that target different Gateways, but you may not attach multiple InboundTrafficPolicies to the same Gateway. Merging config in this scenario would quickly become convoluted and confusing, and there are many edge-case scenarios that make supporting this undesirable.
How will this be developed/implemented?
This issue serves as a proposal for the high-level design and fields of the API, but that does not mean that every field included below will be immediately available. My plan for the implementation is to add and implement one high-level field at a time until the whole resource is implemented.
API outline
---
apiVersion: gateway.envoyproxy.io/v1alpha1
kind: InboundTrafficPolicy
metadata:
  name: example-policy
spec:
  tls: # optional
    clientCerts: # optional
      forwarding: Enum(sanitize/forward-only/append-forward/sanitize-set/always-forward-only) # required
      setDetails: string # optional
      requireClientCert: bool  # optional
    version: # optional
      min: string # optional
      max: string # optional
    cipers: []Enum(list of supported cipher suites...) # optional
    ecdhCurves: []string # optional
    alpnProtocols: []Enum(h2/http-1.1) # optional
    sniOverride: string # optional
    certificateRevocationList: # optional
      secretRef: # required
        name: string # required
        namespace: # optional
  protocols: # optional
    protocolOrder: []Enum(http/https/proxy/tcp/tls/udp)
    # How we consider incoming requests to be originally using https or not
    httpsTrustModel: Enum(x-forwarded-proto/secure/insecure)
    http10: # optional
      enabled: bool # required, default=false
      defaultHost: string # optional
      enableTrailers: bool bool # optional, default=false
    grpc: # optional
      enableGRPCHttp11Bridge: bool # optional, default=false
      enableGRPCWeb: bool # optional, default=false
  requests: # optional
    path: # optional
      mergeAdjacentSlashes: bool # optional, default=false
      escapedSlashesAction: Enum(keep/reject/unescape-redirect/unescape-forward)
    headers: # optional
      serverName: string # optional
      allowChunkedLength: bool # optional, default=false
      maxHeaderCount: int # optional, default=100
      maxHeaderKbs: int # optional, default=60
      underscoreInNameAction: Enum(allow/reject/drop-header) # optional, default=allow
      stripMatchingHostPort: bool # optional, default=false
      stripAnyHostPort: bool # optional, deftault=false
      preserveExternalRequestId: bool # optional, default=false
  responses: # optional
    headers: # optional
      suppressEnvoyHeaders: bool # optional, deftault=false
    body: # optional
      bufferBytesLimit: int # optional, default=1MiB
  connections: # optional
    clientIps: # optional
      useXForwardedFor: bool # optional, default=false
      l7ProxyCount: int # optional, default=0
    # keepAliveProbes are also on the BackendTrafficPolicy. Here they will probe the downstream client,
    # on the BackendTrafficPolicy they will probe the backend service.
    keepAliveProbes: # optional
      idleTime: duration # optional, default=7200s
      interval: duration # optional, default=75s
      idleInterval: duration # optional, default=0s (not enabled)
  targetRef: # This struct is defined as part of Gateway API
    group: "" # Empty string means core - this is a standard convention
    kind: Service
    name: fooService

Open questions

This resource can be attached to a Gateway, but you can configure multiple listeners on a single Gateway. Realistically, this resource makes the most sense targeting listeners instead of forcing this to apply to the entire gateway. There should be a way to specify which listeners it applies to so that you can have different config for each listener.

After discussion with @arkodg in the Gateway meeting today, we agree that the best approach is likely to start with making this apply to the entire Gateway and then adding in support for @zhaohuabing's  SectionName to PolicyTargetReference enhancement when it lands and becomes available.

Gateway API already provides a way to support additional tls settings via the options field on the listener. We could add support for a new annotation there such as gateway.envoyproxy.io/config-from-inboundtrafficpolicy: true or similar to defer logic here, but I'm open to ideas on how to handle this.
Additionally, some of the fields such as protocolOrder would technically overwrite Gateway's protocol field. Is this fine, or do we want to handle these cases differently?

Edits / Changes
Renamed DownstreamTrafficPolicy to InboundTrafficPolicy to reduce potential user confusion about the types of traffic this resource will affect.

thanks for designing this @AliceProxy ! im a +1 on the Name (DownstreamTrafficPolicy),  Type of Policy Attachment (Direct) and the Resource its attached to (Gateway ) .
The above issue defines a lot of fields that already intersect with some defaults we have in Envoy or fields defined upstream. My vote would be to start off with most asked features such as proxyProtocol & keepAlive that have been asked by numerous users.

thanks for designing this @AliceProxy ! im a +1 on the Name (DownstreamTrafficPolicy), Type of Policy Attachment (Direct) and the Resource its attached to (Gateway ) . The above issue defines a lot of fields that already intersect with some defaults we have in Envoy or fields defined upstream. My vote would be to start off with most asked features such as proxyProtocol & keepAlive that have been asked by numerous users.

Yeah I think starting with keepAlive is fine. I was just trying to provide an "initial"/"example" API to showcase what all these other fields we probably need to support at some point to at least have feature parity with other solutions like Emissary might look like. After all this is just a rough proposal and I'm sure there will be further refinement when I go to file implementation PRs (probably one top-level field at a time).

sg @AliceProxy do you want to convert this issue into a design doc & API or wait until agreement on UpstreamTrafficPolicy so we've covered all the bases before proceeding ? im fine either ways

one more question around overlapping intent (which doesnt need to be tackled now since the problem doesnt exist today) - what happens when a user defines a DownstreamTrafficPolicy for the entire Gateway as well as another policy for a specific listener within the Gateway,

does the most specific policy win ?

imo multiple DownstreamTrafficPolicy on the same Gateway or the same Gateway listener should not be supported

one more question around overlapping intent (which doesnt need to be tackled now since the problem doesnt exist today) - what >happens when a user defines a DownstreamTrafficPolicy for the entire Gateway as well as another policy for a specific listener >within the Gateway,
does the most specific policy win ?
imo multiple DownstreamTrafficPolicy on the same Gateway or the same Gateway listener should not be supported

Great question. I would say that we limit it to one per listener. That way if you want a unique one for each listener then you can do that. If you have one attached to the entire Gateway then you cannot attach another to the Gateway or it's listeners.

one more question around overlapping intent (which doesnt need to be tackled now since the problem doesnt exist today) - what >happens when a user defines a DownstreamTrafficPolicy for the entire Gateway as well as another policy for a specific listener >within the Gateway,
does the most specific policy win ?
imo multiple DownstreamTrafficPolicy on the same Gateway or the same Gateway listener should not be supported

Great question. I would say that we limit it to one per listener. That way if you want a unique one for each listener then you can do that. If you have one attached to the entire Gateway then you cannot attach another to the Gateway or it's listeners.

@AliceProxy this has been addressed upstream and is part of the PolicyAttachment GEP thanks to @zhaohuabing !
and here's the relevant snippet
When multiple Policies of the same type target the same object, one with a sectionName specified, and one without, the one with a sectionName is more specific, and so will have all its settings apply. The less-specific Policy will not attach to the target.

im hoping the first few features/fields added to this API are

Downstream Keep Alive
Downstream Proxy Protocol
HTTP3

thanks for updating the API name @AliceProxy
was chatting with @ZackButcher earlier today who recommended we use InboundTrafficPolicy or ListenerTrafficPolicy, since DownstreamTrafficPolicy might be too technical & confusing for the end user

Proxy protocol is an interesting one -- @arkodg and I talked about this in the Envoy Gateway API meeting today, and there are interesting interactions between proxy here and in the Gateway's Listener. I'll try to talk to some of the Gateway API folks about this.


Release Google.Cloud.Dlp.V2 version 4.4.0

Changes in this release:
New features

ExcludeByHotword added as an ExclusionRule type, NEW_ZEALAND added as a LocationCategory value (commit fde47e7)

Created release for Google.Cloud.Dlp.V2-4.4.0


Does it support swift ?

Does it support swift ?

No yet, but it is in the plan. please keep in concern.


Undo a sort action?

I'm using this library for sorting a list, and I'm saving the sort order server-side.  I do this by listening to the end event, looping through items between event.oldIndex and event.newIndex, and performing an upsert to the database setting the order field to the new index.
This works, but what do I do if there's a network error?  How can I reorder the list back to the way it was before an element was moved?  I'm kind of stumped because this version of Sortable doesn't have a value/modelValue  property, only a list property.  And this list's order seems to be stored internally within this Sortable component.  Updating the list value does nothing.  I assume it's read once at initialization, and then the component handles the list internally from there.  That's fine, but how can I manually change the order of elements if I want to, such as in this case?

Would something as described here work? Otherwise I'm open to suggestions on how an API could look for your use case.


Adds support to serialize and deserialize timestamps with different resolutions

As discussed in #647 this merge request adds the ability to serialize and deserialize timestamps with milliseconds, microseconds and nanoseconds.
For now I have only implemented the milliseconds because I want to see if it looks right to you @jhpratt if so then I do the rest.
The idea is that you can do the following:
use serde::{Deserialize, Serialize};
use time::serde::timestamp;
use time::OffsetDateTime;

#[derive(Serialize, Deserialize, Debug)]
struct TimestampSeconds {
    #[serde(with = "timestamp")]
    dt: OffsetDateTime,
}

#[derive(Serialize, Deserialize, Debug)]
struct TimestampMilliseconds {
    #[serde(with = "timestamp::milliseconds")]
    dt: OffsetDateTime,
}

At quick glance this looks correct. My nits are minor at this point: I would split the tests for seconds/milliseconds/etc. into different functions, rather than just keeping it as one. I'd also indicate in the module documentation that it's the Unix timestamp in milliseconds (as appropriate).

LGTM. Thanks and good work!


Package fails to install and reports missing elm-package.json

When I try to install the package (using Elm 0.15) I get this error:
[vagrant@localhost game]$ elm-package install johnpmayer/elm-webgl
To install johnpmayer/elm-webgl I would like to add the following
dependency to elm-package.json:

    "johnpmayer/elm-webgl": "1.0.1 <= v < 2.0.0"

May I add that to elm-package.json for you? (y/n) y

Error: Unable to get elm-package.json for johnpmayer/elm-webgl 1.0.1
Missing field "elm-version", acceptable versions of the Elm Platform (e.g. "0.15.0 <= v < 0.16.0").
    Check out an example elm-package.json file here:
    <https://raw.githubusercontent.com/evancz/elm-html/master/elm-package.json>

Is the published package missing this file (the dependencies all installed ok manually)?

Most recent published version is updated for 0.15.1, so should have all necessary package config.


Add Set/GetFocused APIs for TizenView

Add getter and setter of focused state of TizenView
Change Unfocus() method to SetFocus().

This PR is based on https://github.com/flutter-tizen/engine/pull/352.

This PR is based on https://github.com/flutter-tizen/engine/pull/352.
The actual created patch is https://github.com/flutter-tizen/engine/pull/354/commits/2f87e1dbac40d39897045722fc218952c4ee9c8e .
I will rebase again when #352 is applied.

The getter/setter names should be IsFocused and SetFocus.

The getter/setter names should be IsFocused and SetFocus.

I updated patch


Donation

I want to encourage you to add a donation option within the app, even if it is simply a link to your paypal or similar.
Or, I really like what Cryptomator does in offering a paid donation, which unlocks Dark Mode via a text key emailed to the donor.
Thanks for considering!  I hope this idea is of interest, especially if you consider offering this outside the Google Play store.

Thank you for your interest, I added a donation link.
FDroid release will also come soon...


Check the modification date of multiple files

Is your feature request related to a problem? Please describe.
I sometimes have to manipulate files but I cannot trust the editor for the freshness of the data transmitted. I must then control what is transmitted to me.
Describe the solution you'd like
For a list of given files, I check that the modification date of each file corresponds to the date of my application night.
Describe alternatives you've considered
One might be tempted to go through the scheduler to perform this check, but it is not successful at the moment.
Additional context
None.

Example


Add richardbizik/nvim-toc

Repo URL:
https://github.com/richardbizik/nvim-toc
Checklist:

[x] The plugin is specifically built for Neovim, or if it's a colorscheme, it supports treesitter syntax.
[x] The lines end with a .. This is to conform to awesome-list linting and requirements.
[x] The title of the pull request is Add/Update/Remove `username/repo`  (notice the backticks around `username/repo`) when adding a new plugin.
[x] The description doesn't mention that it's a Neovim plugin, it's obvious from the rest of the document. No mentions of the word plugin unless it's related to something else.
[x] The description doesn't contain emojis.
[x] Neovim is spelled as Neovim (not nvim, NeoVim or neovim), Vim is spelled as Vim (capitalized), Lua is spelled as Lua (capitalized), Tree-sitter is spelled as Tree-sitter.
[x] Acronyms should be fully capitalized, for example LSP, TS, YAML, etc.

Thanks for the PR!


Use objectjs

This PR is meant as a (working) example of widgetjs using objectjs.

bower.json:
sample/bootstrap/app.js:
sample/bootstrap/app_main.js:
sample/bootstrap/code.js:
sample/recipes/app.js:
sample/recipes/app_main.js:
sample/recipes/documents/aboutDocument.js:
sample/recipes/documents/exportDocument.js:
sample/recipes/documents/recipeDocument.js:
sample/recipes/documents/recipeEditorDocument.js:
sample/recipes/documents/recipesDocument.js:
sample/recipes/model/recipe.js:
sample/recipes/model/recipeRepository.js:
sample/recipes/widgets/navigationWidget.js:
sample/recipes/widgets/regionWidget.js:
src/router/abstractSegment.js:
src/router/hashLocation.js:
src/router/optionalParameterSegment.js:
src/router/parameterSegment.js:
src/router/route.js:
src/router/routeFactory.js:
src/router/routeMatchResult.js:
src/router/router.js:
src/router/staticSegment.js:
src/router/url.js:
src/widget.js:
test/router/routeTest.js:
test/tests.js: Use objectjs for building classes.

BTW, monitor works just fine with this version of widgetjs :-)

:+1: LGTM


Color System: Part II

Description
Now that the #1187 is nearing completion, here are some next steps!
#1187 didn't add any new functionality- it just prepared us to do cool things.
Let's use this foundation to do something cool: add colorblindness modes.
Create a new color scheme for Red/Green Colorblindness
As per this link, red/green colorblindness can be broken down into two categories- deuteranopia and tritanopia - and these account for the overwhelming majority of colorblindness experienced by people (north of 99%).
Researching both an updated color scheme for just one of these would be a fine start.
You'll need to augment the colors.json file with these new schemes, and the json will need to have each of these color schemes in a separate entry.  Name the current scheme something like 'default' and have the colorSystem load it, well, by default. :)
Make some UI controls
This improved color system isn't useful unless we plumb some controls up into user-land!
We'll need a combobox control in the 'preferences' panel that shows all the different color schemes available.
So the color system would need:

[ ] Another class method that returns the list of all available color schemes. This should use an enum.
[ ] A way to 'set' the current color scheme with one of those enum entries.
[ ] To signal the map to redraw whenever the color scheme is changed.

The preferences panel [P] would need:

[ ] To call the API that gets the list of all available schemes
[ ] To render a new section (in addition to the existing Privacy and Map Interaction sections) called 'Map Color Scheme', it should render a new combo box with all of the enum options provided by the color system
[ ] To call the color system setColorScheme()

Here's what the preferences panel looks like right now:

Task List
So the color system would need:

[x] Another class method that returns the list of all available color schemes. This should use an enum.
[ ] A way to 'set' the current color scheme with one of those enum entries.
[ ] To signal the map to redraw whenever the color scheme is changed.

The preferences panel [P] would need:

[ ] To call the API that gets the list of all available schemes
[ ] To render a new section (in addition to the existing Privacy and Map Interaction sections) called 'Map Color Scheme', it should render a new combo box with all of the enum options provided by the color system
[ ] To call the color system setColorScheme()

PR reference #1230

This was done!