admin: Support /drain_close?graceful

Signed-off-by: Auni Ahsan<EMAIL_ADDRESS>Calling /drain_close?graceful will trigger the drain manager drain sequence prior to closing listeners.
Risk Level: Low.
Testing: Tested that connections are terminated on request complete during the graceful drain period, that new connections can still be opened, H1/H2-specific response behaviour.
Docs Changes:

We'd discussed automatically graceful draining on StopListeners::All, but that actually complicates the testing because it removes the ability to force drain in the StopListeners::All case. I'd prefer to just keep this simple for now rather than adding another query parameter that overrides it. (The current testing strategy is to invoke a long graceful drain period, do the testing, then invoke a non-graceful drain to close out.)

What docs/api notes are needed for query parameter changes?

This this makes sense to me. You will want to add docs here:
https://www.envoyproxy.io/docs/envoy/latest/operations/admin
https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/operations/draining
/wait

Added docs, not sure if more detail is needed. I think the drain docs probably need an overhaul, but I don't really have the context with other parts of it to want to take that on.

Mac OS X CI failure seemed unrelated (looks like it was just hanging, CC @asraa as on-call).


refactor: remove the push endpoint http prefix

This change requires that the push endpoint is defined including the protocol as either the environment variable string or docker labels.
I'm aware this is a breaking change so you may want to discuss alternatives.

Support for HTTPS is 👍 - thanks for doing the legwork
Can I offer this up as an alternative approach that retains backwards compatibility...
https://github.com/thinkfluent/pubsubc/pull/3


better specifications of audio and video time

If multiple users are in a video or audio call, is the total amount the length of the call * the number of users, or just the duration of the call itself regardless of the number of users?
For our relatively small organization (1000 active users on a busy day) 4,500,000 minutes per day seems like a lot!

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

ID: 2758a3d6-c646-dcb0-2a31-c7b9b84e780b
Version Independent ID: 8704c9fe-f8b0-82d2-bd83-3fd1a9ad638d
Content: Microsoft Teams user activity report - Microsoft Teams
Content Source: Teams/teams-analytics-and-reports/user-activity-report.md
Service: msteams
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

Thank you for submitting feedback.
I think the best way forward is if you open a service ticket in your tenant so this can get resolved ASAP. Based on the outcome let me know if it is something that can be called out in the docs.
Please follow this link to contact support for business products:https://docs.microsoft.com/office365/admin/contact-support-for-business-products
Please keep us posted here on the resolution so we can feed whatever information you discover into the content.


Option to allow array comparisons in linear complexity

Hello again :wave:
We hit some problems using HashDiff in a web application at request time. We noticed the problem occurred when we were comparing arrays with lots of items in (909 length array with each item a hash) and noticed our request times spiking.
We traced this issue back to the approach used to work out the longest common subsequence. This PR introduces the ability to disable the LCS algorithm for a simpler one that runs at a linear complexity.
The LCS algorithm produces excellent diffs. Unfortunately it has a n2 complexity which can lead to extremely slow computations on large arrays.
> require 'hashdiff';require 'benchmark'
> x = (1..100).map { |i| { key: i, foo: :bar } }
> puts Benchmark.measure { HashDiff.diff(x, x) }
  0.420000   0.000000   0.420000 (  0.430212)

If the size of the array is 1000 then we see it get really painful
> x = (1..1000).map { |i| { key: i, foo: :bar } }
> puts Benchmark.measure { HashDiff.diff(x, x) }
 42.680000   0.590000  43.270000 ( 43.530287)

This commit introduces an option to sacrifice the quality of the diff for a faster computational result with the use_lcs option, which can be set to false to disable use of the LCS algorithm.
With use_lcs as false the array comparison is much simpler with a complexity of at worst 2n for an array.
> x = (1..100).map { |i| { key: i, foo: :bar } }
> puts Benchmark.measure { HashDiff.diff(x, x, use_lcs: false) }
  0.010000   0.000000   0.010000 (  0.004894)
> x = (1..1000).map { |i| { key: i, foo: :bar } }
> puts Benchmark.measure { HashDiff.diff(x, x, use_lcs: false) }
  0.040000   0.000000   0.040000 (  0.042547)

The linear approach to comparing the array works on the basis that if arrays are the same length it treats the array as having no additions or deletions, only changes.
> HashDiff.diff([0,1,2], [3,4,5], use_lcs: false)
=> [["~", "[0]", 0, 3], ["~", "[1]", 1, 4], ["~", "[2]", 2, 5]]

compared to:
> HashDiff.diff([0,1,2], [3,4,5])
=> [["-", "[2]", 2], ["-", "[1]", 1], ["-", "[0]", 0], ["+", "[0]", 3], ["+", "[1]", 4], ["+", "[2]", 5]]

Whereas if there are more items in one array than the other it checks the items surrounding the index for a match to calculate additions and removals.
> HashDiff.diff([0, 3, 5], [0, 1, 2, 3, 4, 5], use_lcs: false)
=> [["+", "[1]", 1], ["+", "[2]", 2], ["+", "[4]", 4]]
> HashDiff.diff([0, 3, 5], [0, 1, 2, 3, 4, 5], use_lcs: false) == HashDiff.diff([0, 3, 5], [0, 1, 2, 3, 4, 5])
=> true

For a combination of added and changed items the diff will appear different to the LCS approach:
> HashDiff.diff([0, 1, 2], [0, 2, 2, 3], use_lcs: false)
=> [["~", "[1]", 1, 2], ["+", "[3]", 3]]
> HashDiff.diff([0, 1, 2], [0, 2, 2, 3])
=> [["-", "[1]", 1], ["+", "[1]", 2], ["+", "[3]", 3]]

However all diffs produce same results through patch! and unpatch! methods.

Codecov Report

Merging #35 into master will increase coverage by 0.11%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #35      +/-   ##
==========================================
+ Coverage   99.27%   99.38%   +0.11%
==========================================
  Files          10       12       +2
  Lines         688      814     +126
==========================================
+ Hits          683      809     +126
  Misses          5        5

Impacted Files
Coverage Δ

spec/hashdiff/diff_array_spec.rb
100% <100%> (ø)
:arrow_up:

lib/hashdiff/diff.rb
95.78% <100%> (+0.09%)
:arrow_up:

lib/hashdiff.rb
100% <100%> (ø)
:arrow_up:

spec/hashdiff/diff_spec.rb
100% <100%> (ø)
:arrow_up:

lib/hashdiff/linear_compare_array.rb
100% <100%> (ø)

spec/hashdiff/linear_compare_array_spec.rb
100% <100%> (ø)

Continue to review full report at Codecov.

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

Thanks @kevindew , LGTM.

Thanks for merging @liufengyun 👍
I've just realised I forgot to add documentation, will drop a PR for that shortly.


User defined handlers erases any extension defined handler

Initial checklist

[X] I read the support docs
[X] I read the contributing guide
[X] I agree to follow the code of conduct
[X] I searched issues and couldn’t find anything (or linked relevant results below)

Affected packages and versions
1.2.0
Link to runnable example
No response
Steps to reproduce
When a user defines custom handlers, the extensions defined handlers get erased.
The following example uses the gfmToMarkdown extension which defines some handlers.
I also defined a custom handler. Because I have defined a custom handler, all extension handlers will get erased.
import { toMarkdown } from 'mdast-util-to-markdown';
import { gfmToMarkdown } from 'mdast-util-gfm';

// Imagine this is a function that generates an mdast
const tree = makeTree();

const markdown = toMarkdown(tree, {
    extensions: [gfmToMarkdown()],
    handlers: {
       // Custom handler for adding text without escaping
       literal: (node, _parent, _context) => node.value || '',
    },
 });

By looking at the source code of mdast-util-to-markdown, in the file configure.js, I see the following lines:
for (key in extension) {
    if (key === 'extensions') {
      // Empty.
    } else if (key === 'unsafe' || key === 'join') {
      /* c8 ignore next 2 */
      // @ts-expect-error: hush.
      base[key] = [...(base[key] || []), ...(extension[key] || [])]
    } else if (key === 'handlers') {
      base[key] = Object.assign(base[key], extension[key] || {})
    } else {
      // @ts-expect-error: hush.
      base.options[key] = extension[key]
    }
  }

Object.assign(base[key], extension[key] || {}) is erasing the extension handlers.
Expected behavior
I would expect user defined handlers to be merged with extension defined handlers and only override those that have the same type name.
Actual behavior
All extension handlers get erased and this breaks the extension.
Runtime
Node v16
Package manager
npm v7
OS
Linux
Build and bundle tools
No response

As a workaround, I have done the following which works but it's not pretty:
    // It's an array of extensions
    // See: https://github.com/syntax-tree/mdast-util-gfm/blob/main/index.js#L36
    const {extensions} = gfmToMarkdown();
    const handlers = extensions
        .map(extension => extension.handlers)
        .reduce((acc, curr) => ({...acc, ...curr}), {});

    const markdown = toMarkdown(root(tree), {

        // Needed so we can have support for creating table nodes and inlineCode nodes
        // See: https://github.com/syntax-tree/mdast#gfm
        extensions,

        handlers: {
            // We want to be able to write literal text without escaping it for the descriptions
            literal: (node, _parent, _context) => node.value || '',

            // extension handlers
            ...handlers,
        },
    });

Looks like you found a bug, can you help to fix it?

I will create a PR during the day to provide a fix!

There is nothing wrong. I'm closing the issue.


Catch up Incubation

Waiting a bit for the team to see if they want anything else in before the release is cut.


Flutter Driver Terminates Appium Server After Test Completion

Dear Appium Community,
I hope this message finds you well. I am writing to report an issue I've encountered while using Appium in conjunction with Flutter Driver for mobile app testing. The problem involves the Appium server being terminated by the Flutter Driver when the test is completed.
Here are the details of the issue:
Appium Version and Driver Versions:
**Appium Version: 2.0.1 (REV 9600617c52d0d2e48493424c529ac6c945d2775b)
Loaded Drivers<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Loaded Plugins<EMAIL_ADDRESS>
Issue Description:
When running tests using Flutter Driver in conjunction with Appium, the Appium server gets unexpectedly terminated at the end of the test execution. This behavior occurs even though the test completes successfully, leading to disruption in the automation workflow.
Logs:
Below is a snippet of the relevant logs that illustrate the sequence of events:
log
**[debug] [FlutterDriver@a5cf (68cd7f96)] Calling AppiumDriver.deleteSession() with args: ["68cd7f96-62c1-4a05-85eb-36367bbbde0c"]
[debug] [AppiumDriver@40a6] Event 'quitSessionRequested' logged at<PHONE_NUMBER>221 (17:31:25 GMT+0200)
[AppiumDriver@40a6] Removing session 68cd7f96-62c1-4a05-85eb-36367bbbde0c from our master session list
[debug] [FlutterDriver@a5cf (68cd7f96)] Deleting Flutter Driver session
...
[debug] [AppiumDriver@40a6] Event 'quitSessionFinished' logged at<PHONE_NUMBER>495 (17:31:25 GMT+0200)
[debug] [AppiumDriver@40a6] Received response: null
[debug] [AppiumDriver@40a6] But deleting session, so not returning
[debug] [AppiumDriver@40a6] Responding to client with driver.deleteSession() result: null**

Expected Behavior:
The expected behavior is that the Appium server should remain active and available to handle additional automation tasks even after the test execution is completed.
Additional Information:
This issue occurs consistently in my test environment.
The test cases are executed successfully using Flutter Driver, but the termination of the Appium server disrupts the overall automation workflow.
Request for Assistance:
I kindly request assistance from the Appium community in diagnosing and resolving this issue. Any insights, guidance, or solutions would be greatly appreciated. If additional information or logs are needed, please let me know, and I will provide them promptly.
Thank you for your time and support.
Best regards,

Please attache the full appium server log

Follow the link
https://gist.github.com/baselalali/f17fd8c4661d0514e8a6375bc9e19d0e

the Appium server gets unexpectedly terminated at the end of the test execution.

What do you mean...?
[HTTP] --> DELETE /session/77896cc9-fade-457c-a463-932ea6139ef6
[HTTP] {}
[debug] [FlutterDriver@f919 (77896cc9)] Calling AppiumDriver.deleteSession() with args: ["77896cc9-fade-457c-a463-932ea6139ef6"]
[debug] [AppiumDriver@f824] Clearing new command timeout pre-emptively since plugin(s) will handle this command
[AppiumDriver@f824] Plugins which can handle cmd 'deleteSession': images
[AppiumDriver@f824] Plugin images is now handling cmd 'deleteSession'
[AppiumDriver@f824] Executing default handling behavior for command 'deleteSession'
[debug] [AppiumDriver@f824] Event 'quitSessionRequested' logged at<PHONE_NUMBER>333 (09:28:07 GMT+0200 (Mitteleuropäische Sommerzeit))
[AppiumDriver@f824] Removing session 77896cc9-fade-457c-a463-932ea6139ef6 from our master session list
[debug] [FlutterDriver@f919 (77896cc9)] Deleting Flutter Driver session
[debug] [AndroidUiautomator2Driver@f383 (e78bf917)] Deleting UiAutomator2 session
[debug] [AndroidUiautomator2Driver@f383 (e78bf917)] Deleting UiAutomator2 server session
[debug] [AndroidUiautomator2Driver@f383 (e78bf917)] Matched '/' to command name 'deleteSession'
[debug] [AndroidUiautomator2Driver@f383 (e78bf917)] Proxying [DELETE /] to [DELETE http://<IP_ADDRESS>:8200/session/ac29c10a-bd9c-4e9e-a5ff-dcbdb3503ad3] with no body
[debug] [AndroidUiautomator2Driver@f383 (e78bf917)] Got response with status 200: {"sessionId":"ac29c10a-bd9c-4e9e-a5ff-dcbdb3503ad3","value":null}
[debug] [ADB] Running '/Users/baselalali/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5555 shell dumpsys activity services io.appium.settings/.recorder.RecorderService'
[debug] [ADB] Running '/Users/baselalali/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5555 shell am force-stop de.dfb.eventapp.refz.debug'
[FlutterDriver] Connection to ws://<IP_ADDRESS>:44323/8rcunDj8XCY=/ws closed
[FlutterDriver] Connection to ws://<IP_ADDRESS>:44323/8rcunDj8XCY=/ws closed
[debug] [Logcat] Stopping logcat capture
[debug] [ADB] Removing forwarded port socket connection: 8200
[debug] [ADB] Running '/Users/baselalali/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5555 forward --remove tcp:8200'
[AndroidUiautomator2Driver@f383 (e78bf917)] Restoring hidden api policy to the device default configuration
[debug] [ADB] Running '/Users/baselalali/Library/Android/sdk/platform-tools/adb -P 5037 -s emulator-5555 shell 'settings delete global hidden_api_policy_pre_p_apps;settings delete global hidden_api_policy_p_apps;settings delete global hidden_api_policy''
[debug] [AppiumDriver@f824] Event 'quitSessionFinished' logged at<PHONE_NUMBER>625 (09:28:07 GMT+0200 (Mitteleuropäische Sommerzeit))
[debug] [AppiumDriver@f824] Received response: null
[debug] [AppiumDriver@f824] But deleting session, so not returning
[debug] [AppiumDriver@f824] Responding to client with driver.deleteSession() result: null
[HTTP] <-- DELETE /session/77896cc9-fade-457c-a463-932ea6139ef6 200 295 ms - 14

After calling delete request as above, your appium server process stopped?
Usually, Appium prints like below hook log when it gets a signal, but your log did not.
[Appium] Received SIGINT - shutting down

Thus, do you mean the appium server crashed unexpectedly?

I mean that the Appium server is stopped after finishing the execution. All AfterHooks are executed for this session.
Usually, Appium prints a hook log like the one below when it receives a signal, but your log did not.
So, do you mean the Appium server crashed unexpectedly?
I don't think the Appium server crashed. It was stopped by the execution of [HTTP] --> DELETE /session/77896cc9-fade-457c-a463-932ea6139ef6. Who is responsible for initiating this delete request? Is there any solution for this?"

Fixed by updating decencies
```

<appium.version>8.5.1</appium.version>
<selenium.version>4.12.1</selenium.version>
<cucumber.version>7.14.0</cucumber.version>


I can't install steroids

/Volumes/HHD/wtc/titanium $ _ npm install steroids -g                                                                                15-02-01 0:10:03
Password:
/

<EMAIL_ADDRESS>preinstall /usr/lib/node_modules/steroids
node ./bin/preinstall

sh: node: command not found
npm ERR<EMAIL_ADDRESS>preinstall: node ./bin/preinstall
npm ERR! Exit status 127
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>preinstall script.
npm ERR! This is most likely a problem with the steroids package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./bin/preinstall
npm ERR! You can get their info via:
npm ERR!     npm owner ls steroids
npm ERR! There is likely additional logging output above.
npm ERR! System Darwin 14.1.0
npm ERR! command "node" "/usr/bin/node_modules/npm/bin/npm-cli.js" "install" "steroids" "-g"
npm ERR! cwd /Volumes/HHD/wtc/titanium
npm ERR! node -v v0.10.36
npm ERR! npm -v 1.4.28
npm ERR! code ELIFECYCLE
npm ERR! not ok code 0
How can I resolve this promble, thanks!

You get this error because you don't have Node.js properly set up.
Please follow the "show me how" steps under the Installation Wizard to get Node.js installed.
My personal recommendation is to use NVM.
If you have further questions, please ask them in the Forums. This is not a bug, so I'll close this issue.


Wrong heading from VTG message

In the VTG message, the field true_course is parsed as safe_float, but it should be convert_deg_to_rads as in the RMC message. NMEA reference, where field 1 (Track made good) is in degrees: https://receiverhelp.trimble.com/alloy-gnss/en-us/NMEA-0183messages_VTG.html
I'm extracting robot orientation using the direction of the published velocity vector in the /vel topic, but the orientation is jumping wildly.
Replacing safe_float with convert_deg_to_rads fixed the issue for me:
https://github.com/ros-drivers/nmea_navsat_driver/blob/b168f499349e5f26e3aed9982deb44ed2f41f8e2/src/libnmea_navsat_driver/parser.py#L265

Thanks for finding this. If you have time, I would appreciate a pull request with the fix.

Sure, sorry for not providing it right away... :-)


Generated routes ignore base paths when using pushState

I'm submitting a bug report

Library Version:
CLI 0.26.1
Framework 1.1.0

Please tell us about your environment:

Operating System:
Windows 10

Node Version:
6.9.4

NPM Version:
4.1.1

Browser:
Chrome 57 & FF 52 but I guess it happens in other browsers as well

Language:
TypeScript 2.2.1

Current behavior:
route-href bindings produce links with a leading / which makes them relative to the current domains root. This breaks generated links when using a base tag which is not /.
Here are the details:

I'm using the routers pushState, set it's root option to /subpath and the base tag in index.html to <base href="/subpath/">
:heavy_check_mark: All links of my navigation view which are composed with <a href.bind="row.href"> in a loop over router.navigation use relative paths without a leading / which are working just fine. E.g. the href user leads to www.mypage.com/subpath/user.
:x: Links generated with <a route-href="route.bind: _curRouteName; params.bind: { userId: user.id }"> result in routes with leading / which makes them relative to the current domains root instead of my set base path and leads to the issues:

:heavy_check_mark: When clicking those links, the correct URL is opened in the current tab (e.g. www.mypage.com/subpath/user/12)
:x: When only hovering over the link, the browser shows an incorrect URL which is missing the base path: www.mypage.com/user/12
:x: Consequently, when opening the link in a new window or tab, it opens the incorrect URL which is not working...

Browser behavior feels like a bug to me but I'm not sure since all tested browser behave exactly the same (Chrome 57, FF 52, IE 11 & Edge 38).
Despite the fact that browser behavior is really weird here, I'd suggest removing the leading / in order to make the generated URLs consistent with the ones used in the generated navigation view.

I just realized that I've manually set the href attributes of my routes to relative URLs without the leading / which is why the links in the navigation view are "correct".
If I omit the custom href attributes from the routes, the generated links do also have the leading / and act the same way as the generated links from route-href...
Nonetheless this behavior is breaking my app and needs to be fixed somehow. If simply omitting the / by default would break existing code I'd suggest to make it optional.
Also, can I somehow hook into the URL generation already in order to manually remove the leading / when needed in my project?

Any ideas on whether this is a browser bug or not?
Also I'd really appreciate some input on how to override Aurelias URL generation to omit the leading / manually.

@Chinchilla
Directly editing files within the external dependencies (like node_modules/aurelia-templating-router/src/route-href.js) is very dangerous since the changes will be overwritten the next time npm install or npm update provides a new version of aurelia-templating-router.
Therefore such overrides should be encapsulated in your own code repository. I've managed to do so in the following way:
// mycode/src/overrides/app-router.ts
import {AppRouter} from 'aurelia-router';

export function apply() {
	/**
	 * Override the original AppRouter.generate function by removing leading "/"
	 * See https://github.com/aurelia/templating-router/issues/57
	 */
	(function fixGeneratedRoutes(generateOrig: Function) {
		AppRouter.prototype.generate = function(name: string, params?: any, options?: any): string {
			let href = generateOrig.call(this, name, params, options);

			if (href.charAt(0) === '/') {
				href = href.substr(1);
			}

			return href;
		}
	})(AppRouter.prototype.generate);
}

// mycode/src/main.ts
// ...
import * as AppRouterOverride from './overrides/app-router';
// ...
AppRouterOverride.apply();
// ...

I'd still appreciate any thoughts and improvement ideas on the way I implemented this override.

@suamikim
My (quick and temporary) fix was aimed at fixing the problem I was experiencing and minimizing unintended side effects.
I agree with you that it's better to encapsulate the code in your own repository, but my concern over your fix is that it overrides the AppRouter.generate function, and I didn't have time to check that this function is only called in this circumstance.
My change, or using your override method to replace the processChange function in route-href.js, would limit the scope of the change to fix only the problem I'm experiencing without affecting other calls to AppRouter.generate

@AshleyGrant brought this to my attention, and I'm looking into it. If anyone has a working example that would save me the time of spinning up an instance for debugging purposes.

This problem still persists. Has there been any progress? Has this been solved in vNext?

Pinging @davismj for an update on vCurrent
And @jwx for vNext

Pinging @davismj and @fkleuver again for an update on this long standing issue.

I'd be reluctant to try to fix this in v1 right now, out of fear of introducing breaking changes that the tests may not catch.
I've added this issue to the v2 backlog to make sure we at least solve it there.


Links of form foo/bar.ts:line:col ..." may not get

Looks like duplicate of #179322

Wonder how that happened


Biological application of Moscot: 1.6M cells scRNA data (TOME)

We will be comparing Moscot to TOME (Trajectories Of Mouse Embryogenesis,  puplication: https://www.nature.com/articles/s41588-022-01018-x).
TOME is a rather simple approach. In the 30-dim PCA-space they performed: (their words) "For each pair of adjacent stages (=time points), we performed anchor-based batch correction followed by projecting cells into a shared embedding space. After co-embedding, we applied a k-nearest neighbor (k-NN) based heuristic to connect cell states between adjacent stages. Briefly, for each cell state at the later timepoint, we identified the 5 closest cells from the antecedent timepoint in the co-embedding.
Bootstrapping to obtain a robust estimate (500 iterations with 80% subsampling), we then calculated the
median proportion of such neighbors derived from each potential antecedent cell state, and treated this
as the weight of the corresponding edge."
You end up with a tree connecting the different cell types (they have a really nice interactive website: http://tome.gs.washington.edu/):

(the tree only displays edges with a weight>0.2 in the graph)
The idea is now that Moscot should outperform this k-NN heuristic.  We want to obtain a similar tree as TOME, but with hopefully "better" edge weights. We can then compare the TOME-tree with the Moscot-tree. Qiu et al  (=authors of TOME) already point out several shortcomings of TOME and we can directly test if Moscot performs better in these instances. Additionally, Marius and I have already been thinking about an objective validation metric and we came up with calculating the amount of edge-weights crossing germ layers (Mammals consist of 3 germ layers, Ecto-, Meso-, and Endoderm, and transitions between these germ layers are extremely uncommon). The less edge-weight that crosses germ layers, the better the algorithm.

closing this as paper-related things should not be discussed here.


added a few more pokémons

I added 5 more pokémon to the list. Would love if you could mark the PR as hacktoberfest-accepted :)

I really appreciate your effort. Thanks for helping in expanding the website by adding these pokemons. I will label it and merge it as well! Thank  you  for contributing.


Added sc v4 to peerDependency.

probably the easiest PR review of your entire life.

Coverage remained the same at 89.625% when pulling 33686d6145322fb15a8facde7ebdd51ce6b2d37f on alansouzati:fix/sc-v4 into 9b10a8b28947425a3737f26d8b46d6f3a0301fb8 on mbasso:master.

Coverage remained the same at 89.625% when pulling 33686d6145322fb15a8facde7ebdd51ce6b2d37f on alansouzati:fix/sc-v4 into 9b10a8b28947425a3737f26d8b46d6f3a0301fb8 on mbasso:master.

Coverage remained the same at 89.625% when pulling 33686d6145322fb15a8facde7ebdd51ce6b2d37f on alansouzati:fix/sc-v4 into 9b10a8b28947425a3737f26d8b46d6f3a0301fb8 on mbasso:master.

I'm using styled-components v4 and it works without issues.
I think adding a test with v4 is a good idea, but I'm not sure how to install both v3 and v4 at the same time.

potentially you would would a test for every version you declare in your peerDependency.


Make icon hashes clickable in history

[22:33:37]  why did you close #234
[22:33:52] <Timmy_> oh wait
[22:33:59] <Timmy_> am I just dumb
[22:34:03] <Timmy_> yes
[22:34:04]  yes
[22:34:05]  yes
[22:34:11] <Timmy_> thanks


As an employee, I want to access a list of all countries in the world sorted by population so that I can use the information for data entry purposes.

Edit title to include smallest from largest to match report 1:
All the countries in the world organised by largest population to smallest.

Testing phase of this feature. Database connects and successfully return print out of line line result.
Features to be added next:

Iterate over all entries in the World table and display a completed report
Separate code to get the information from World Database and code to display/print information from World Database


Scroll doesn't work correctly in test details tab on Mobile

Steps to reproduce

Login to Zafira from Mobile (Admin/User)
Open test run tab
Open test run
Click 3 dots on test
Click Details (eye)

Actual behavior
Scroll doesn't work correctly in test details. unable to see the last log item (only after repeating scroll)
Environment
Mobile
iOS 13.1.3
ui v.1.290-SNAPSHOT | server v.1.464-SNAPSHOT | client v.4.0.33-SNAPSHOT

Available on UI from v. 1.292-SNAPSHOT

Verified in ui v.1.293-SNAPSHOT | server v.1.468-SNAPSHOT | client v.1.0-SNAPSHOT.


[language-text] Fix summarization test

Packages impacted by this PR
ai-language-text
Issues associated with this PR
Describe the problem that is addressed by this PR
Fix the expectation for the extractive summarization test
What are the possible designs available to address the problem? If there are more than one possible design, why was the one in this PR chosen?
Are there test cases added in this PR? (If not, why?)
Provide a list of related PRs (if any)
Command used to generate this PR:**(Applicable only to SDK release request PRs)
Checklists

[ ] Added impacted package name to the issue description
[ ] Does this PR needs any fixes in the SDK Generator?** (If so, create an Issue in the Autorest/typescript repository and link it here)
[ ] Added a changelog (if necessary)

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-ai-language-text


Lower log level for validator latency

Fixes #2526

coverage: 94.317%. remained the same when pulling 43eebc4c288d061a17baea9a728a9f35454a8e6c on latency-log-level into b0a0636d3def08a6167741617fb407a12c55edbd on main.

Related: https://github.com/medplum/medplum/discussions/2006


Create dataset loader for HPLTDatasets v1.2

Dataloader name: hplt/hplt.py
DataCatalogue: http://seacrowd.github.io/seacrowd-catalogue/card.html?hplt

Dataset
hplt

Description
The dataset is part of the High Performance Language Technologies project (HPLT), a 3-year EU-funded project started in September 2022. HPLT derives monolingual and bilingual datasets from the Internet Archive and CommonCrawl and builds efficient and solid machine translation (MT) as well as large language models (LLMs). HPLT aims at providing free, sustainable and reusable datasets, models and workflows at scale using high-performance computing (HPC).

Subsets
-

Languages
ind, zlm, tha, mya, fil

Tasks
Language Modeling

License
Creative Commons Zero v1.0 Universal (cc0-1.0)

Homepage
https://hplt-project.org/datasets/v1.2

HF URL
https://huggingface.co/datasets/BramVanroy/hplt_monolingual_v1_2

Paper URL
https://aclanthology.org/2023.eamt-1.61/

#self-assign


StatisticManager::AddLocalUser crashes when a user is added twice

Is there a C++ example that uses the Statistics namespace for writing to and reading from the xbox live services (stats/leaderboard information)?
How do I check if a user was already added to the StatisticManager? If I call AddLocalUser more than once for the same user the SDK crashes.

If your using our WinRT API and calling from C++/CX or C#, AddLocalUser throws an exception that says user already added.
If your using our C++ API, it returns an error:
https://github.com/Microsoft/xbox-live-api/blob/master/Source/Services/Stats/Manager/stats_manager_impl.cpp#L101
You can ignore this exception/error if you need to.  It's best to add the user when a user is added to the game and remove it when a user is removed from the game.
btw, if you are using C++/CX be sure to do proper error handling by catching the exceptions:
https://docs.microsoft.com/en-us/windows/uwp/xbox-live/using-xbox-live/error-handling/error-handling-winrt
There isn't a C++ sample yet but its on our backlog

Feel free to re-open if you have other issues


CO-OP (Multiplayer)

As the title said: multiplayer would be really nice! There are probably servers for needed (vps or ds) so to support gorescript, I can host a lobby/ lobbies on a 1gb vps if you like to!
Greatings!

I'm working on this over the weekend

@SyntaxStacks Contact me if you need a vps!

Multiplayer would actually be pretty awesome. I recommend using Python for
it. The only problem in using it is that it will be difficult to transfer
code across multiple coding languages since gorescript is coded in JS.
Unless you keep them separate somehow...
I actually don't know how to do that lol. 😅 I'm interested in finding out
though.
As for the character, maybe you could make them customizable and similar to
a Minecraft skin and namable. But that probably wouldn't fit on a 1 GB vps.
Anyways, it's good to know that you guys are better at coding than me. I
have some ideas for different gamemodes.
Co-op Survival: You and your team fight off hordes of enemies. The enemies
have triple the health and damage though. No medkits or ammo.
Team Deathmatch: You and your team try to defeat the other team. Pistols
would do 5 damage to the player, Shotguns would do 5-50, depending on the
range. Hyperblaster would do 2 damage per bullet. Medkits and ammo arrive
every 10 seconds.
Infection: One player starts as a Nom with 5x the health. Biting other
players turns them into Noms. The last player who is not a Nom wins
temporary perks in-game (Extra ammo capacity, higher speed, etc.) If a Nom
is killed, they respawn away from other players and the killer recieves
full ammo on all weapons.
Hunger Games: Everybody starts with a Pistol and has to get weapons and
ammo from the middle of the map. Winner recieves Trophies, which show up
next to their name in a multiplayer game.
Let me know if these ideas can be implemented in the code. THANKS!!!
On Sun, Jul 10, 2016 at 5:43 AM, jollesnaas<EMAIL_ADDRESS>wrote:

@SyntaxStacks https://github.com/SyntaxStacks Contact me if you need a
vps!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/gorescript/gorescript/issues/13#issuecomment-231580064,
or mute the thread
https://github.com/notifications/unsubscribe/AOW-V02LOkd62HkRKC6Uixq_783kHfEZks5qUL6ngaJpZM4JAHyP
.

--
Gunpowder
"Get shrekked."

I was going to go with node for the server side, I created a simple multiplayer game (dead simple) with a node server and javascript client. That'd help w/ code reuse.
https://github.com/SyntaxStacks/bubbles
and all the ideas are totally do-able. I wasn't able to make as much progress as I would have like this weekend but I'll push up a branch for feedback later today.

@CreepiumShards, good idea's! I can of coure upgrade my server but than I have to upgrade my resources and that cost money (I just have to pay one time to upgrade: server is at my home)
Greatings!

Good to know!

Any updates on this?

I think I can help hosting too, if we need it. Got some good stuff at AWS/EC2. For a while, at least.

Hacked on this over the weekend, I have a branch that I'm working out of here:
https://github.com/SyntaxStacks/gorescript/tree/dev/online
Nothing fancy and really buggy but I'll continue my work there for those interested.
on the lobby screen you need to click "enter", enter a room, hit enter and then click join.

Currently doors and items are all local, but I have plans to sync all that


scroll the closest element to center

fixes https://github.com/excalidraw/excalidraw/issues/1260
cc @lipis

Any update on this?

I wonder why it doesn't work when restoring from backend: https://excalidraw-git-fork-ad1992-aakansha-scroll.excalidraw.now.sh/#json=4886668171542528,YKGMF2vYfpe-EOQJD6GP7A
it should use the same API :thinking:

I wonder why it doesn't work when restoring from backend: https://excalidraw-git-fork-ad1992-aakansha-scroll.excalidraw.now.sh/#json=4886668171542528,YKGMF2vYfpe-EOQJD6GP7A
it should use the same API 🤔

@dwelle I think I know the reason because when it imports from backend it doesn't have any data on appState except viewBackgroundColor as the scene is not loaded hence it's not able to scroll to the element.
I have added the scroll to the content option on local storage as well.  Not sure if it wasn't there for some reason.

I have added the scroll to the content option on local storage as well. Not sure if it wasn't there for some reason.

Actually, we don't do that for localStorage for a reason, so that it doesn't trigger on page reload.

I have added the scroll to the content option on local storage as well. Not sure if it wasn't there for some reason.

Actually, we don't do that for localStorage for a reason, so that it doesn't trigger on page reload.

Ok, I will remove it then but now if you try to import a file it should scroll the content to center, just that when you share the link it won't work since the app state doesn't have the data (scene not rendered yet).

just that when you share the link it won't work since the app state doesn't have the data (scene not rendered yet).

Where in the calculation do you take into account render data? I'm pretty sure it's related to the Event thing I mentioned in the comments.

just that when you share the link it won't work since the app state doesn't have the data (scene not rendered yet).

Where in the calculation do you take into account render data? I'm pretty sure it's related to the Event thing I mentioned in the comments.

I am now using the app state scrollX and scrollY instead of event data as you suggested.
What I meant is when you import the file it will work now but when you share the link and at that time when data is restored, the app state doesn't have any data except for viewBackgroundColor hence it's not able to scroll to element

Ok, I misunderstood you. In that case, the calculateScrollCenter should be passed current appState (with scrollX/Y set to 0).

I wonder why it doesn't work when restoring from backend: excalidraw-git-fork-ad1992-aakansha-scroll.excalidraw.now.sh/#json=4886668171542528,YKGMF2vYfpe-EOQJD6GP7A
it should use the same API 🤔

I didn't follow the whole conversation.. but this should work!

Yes, I initially thought of passing scrollX and scrollY as 0 but missed zoom so it wasnt working. Now It should work. But I am not able to understand the error in build due to which deployment is failing! as it's intentional and I want to override the values if present with savedState.

So it used to work in typescript 3.8.3 and hence was working in my local. Since. 3.9.3 it has become stricter and gives this error if the attributes are marked required https://github.com/microsoft/TypeScript/issues/38535#issuecomment-632218222
So marking this optional is breaking lot of other type checks so. I added ts ignore check but I will check if there is a better way to fix instead of adding ts ignore.

We definitely don't want to be silencing the error. We've recently updated typescript, so you'll need to run npm i.
It says that the scrollX etc will be overwritten by the ...savedState which declares it contains it (even though it doesn't). That's a good error, because it also reminds me we should make sure the appState passed to restore() is fully-qualified (in which case it would already contain scrollX etc., and you shouldn't be passing it manually).

We definitely don't want to be silencing the error. We've recently updated typescript, so you'll need to run npm i (EDIT: I missed your last comment, where you already noticed).
It says that the scrollX etc will be overwritten by the ...savedState which declares that it contains it (even though it doesn't). That's a good error, because it also reminds me we should make sure the appState passed to restore() is fully-qualified (in which case it would already contain scrollX etc., and you shouldn't be passing it manually).

Yup agreed, fixed it.

Let's also make the from non-optional, and make the appState & scene top parameters (not nested in from).
The only place where calculateScrollCenter() isn't passing those is actionZoomToFit action. And there I'd not use calculateScrollCenter() helper anymore, and inline the necessary calculation instead.

But let's wait for @dwelle for the final OK :)

Looking good, thanks!


Question about integration with yanky.nvim

Hi, I recently learned about your plugins and I'm taking them for a test drive
I had a question about the integration:

In yank.nvim, it's mentioned to use this to integrate with  substitute.nvim:

require("substitute").setup({
  on_substitute = require("yanky.integration").substitute(),
})

And in substitute.nvim, it's mentioned to use this to integrate with yanky.nvim:

require("substitute").setup({
  on_substitute = function(event)
    require("yanky").init_ring("p", event.register, event.count, event.vmode:match("[vV�]"))
  end,
})

So, I was wondering which one is the correct one 🤔
(also the last character in ...vmode:match("[vV<this-char>]") appears as a question mark for me when I copy/paste, so I'd appreciate (if that's the one I can use) if you let me know which character it is
Thank you

Hey @farzadmf !
Thanks for giving a try to my plugins, any feedback are welcome.
About the integration, both works but it's betterto use the one from Yanky documentation:
require("substitute").setup({
  on_substitute = require("yanky.integration").substitute(),
})

(The last character is the <c-v> char, using yanky.integration avoid copy/paste problem)
I should update substitute readme, thanks for your feedback!

README updated :)

Hey @gbprod , really appreciate the quick action and sorry for the late reply
Now that I see you're a nice person 😆, can I ask a few questions (they'll probably be stupid because in my [neo]vim years, I haven't used a substitute plugin), so please answer if they make sense and you have the time, and ignore if either is not the case

For the integration with yanky (I'm enjoying it BTW), what exactly are we trying to achieve? I mean you mention "to enable yanky swap when doing substitution", what is the "swap" here that we're enabling?

After reading the README, I learned about vim-abolish, which seems very nice as well, but I was wondering about the "integration" with it (again in the README):

It's mentioned to set range.prefix to S to use vim-abolish by default, but I'm a bit confused: seems to me that vim-abolish is not a replacement for this plugin (I may be wrong, but I think it's basically replacing a word with some variants of it?), so what are we trying to achieve here by this integration?

Another thing I'm confused about: what's the effect of setting range.prefix to a key (still in the context of vim-abolish)? It's mentioned in the README that this plugin provides no default mappings, so even if we set range.prefix to something, wouldn't it be "overwritten" by what we set in the mappings?

Needless to mention again that you have no obligation whatsoever to explain these things to me, but I think this plugins is one of those that will deeply affect my workflow; I feel that's gonna happen, but I haven't yet figured out the full potential

For the integration with yanky (I'm enjoying it BTW), what exactly are we trying to achieve? I mean you mention "to enable yanky swap when doing substitution", what is the "swap" here that we're enabling?

It means that you can cycle throught yank-ring after a substitution, this will replace substituted text with previous items of your yank ring (maybe I should be more precise about this in the readme).

After reading the README, I learned about vim-abolish, which seems very nice as well, but I was wondering about the "integration" with it (again in the README):
* It's mentioned to set `range.prefix` to `S` to use `vim-abolish` by default, but I'm a bit confused: seems to me that `vim-abolish` is not a replacement for this plugin (I may be wrong, but I think it's basically replacing a word with some variants of it?), so what are we trying to achieve here by this integration?

* Another thing I'm confused about: what's the effect of setting `range.prefix` to a key (still in the context of `vim-abolish`)? It's mentioned in the `README` that this plugin provides no default mappings, so even if we set `range.prefix` to something, wouldn't it be "overwritten" by what we set in the mappings?

Abolish introduce a new substitution operator that you can use in command line (Subvert or just S) as you can see in the documentation : https://github.com/tpope/vim-abolish#substitution
(It also exists in text-case.nvim as Subs). This allows to substitute text keeping the same text case.
When using substitute over range motion, it basicly generate a command to substitute text in the selected range motion, range.prefix allows to choose the substitution method.
Eg. By default, this will create a substitution like :'[,']s/search/replace/g, but if you set range.prefix to Subvert, this will create :'[,']Subvert/search/replace/g (and use the power of vim-abolish :) )
Is that any clearer to you?

@gbprod thank you for answering these mate, had the exact same questions and you explained it perfectly... I think it might be great if these were added in the docs as it's definitely confusing for noobs like me  🙈


Shop

Add a shop where you can buy items and buffs

Must include:

Seeing items
Buying them

35fe0242f914c5742d67f541c8d503efa67377b4


Bug fix for spacing around image

Bug fix: When the image is scaleType="fitCenter", there can be extra space left or above the image depending on the layout. The bug is that the extra space is either making the wrong area get cropped or an exception is thrown by createBitmap (width/height cannot be 0 or negative).
https://github.com/edmodo/cropper/issues/134

I don't know if the original contributor tried to address special cases with the more complicated current version of the code. I figured submitting a pull request would make it easier to review and test.


Added Go implementation

This PR adds Go support to the library. It is based on the C/C# versions, with no significant changes other than employing Go naming conventions and making the public API idiomatic for Go.

Thanks for working on this, I don't really know anything about Go but I had a scan through the code and it looks like it uses some form of templating to support float32 and 64?
The only thing I would change is using float64 for the constant arrays. I'd probably make them all float32, they don't need the precision and the smaller size is more cache friendly.
Also the FastNoise ASCII art in the header looks a bit wonky 😄
Thanks!

it looks like it uses some form of templating to support float32 and 64?

Exactly, it is the Go equivalent of generics. If the C# implementation supported generics, the following two examples would be the idiomatic equivalents for each language:
noise := fastnoise.New[float32]()

var noise = new FastNoise<float>()

The only thing I would change is using float64 for the constant arrays. I'd probably make them all float32, they don't need the precision and the smaller size is more cache friendly.

Will do. I was torn on which to use, and actually went back and forth a few times. I can't even remember what led me to finally settle on 64-bit, but disregarding caching was an oversight on my part of, and a good reason to use 32-bit.

Also the FastNoise ASCII art in the header looks a bit wonk

Ugh, auto-formatters are a double-edged sword...
One question: should I include the tests in the repository? I omitted them for the simple reason that I didn't see any others have them included. They also rely upon a small C# project to generate the "control" values to test against, so not sure how helpful they would be to the average Go consumer of the library, who may not also be familiar with C# tooling.

Sorry for the long delay, this fell off my radar. Thanks for making those changes!
With regards to the tests, I've looked into it before but I couldn't settle on a good method of doing it that would work for all languages. If possible could you put the test setup in another repo and link to it in the go readme, I'd be interested to see how you set it up.

Sure, I will clean it up a bit to a be more universal and make a repo for it; perhaps others might be able to make use of it as well. I have just been changing the configured values (type, seed, etc) in the editor and re-running when needed, but it would be trivial to add some proper command-line args, and output to JSON or some other common format that most languages have built-in support for.

I wouldn't worry too much about cleaning it up, I'm more just interested to see your approach

I can make a repo if it helps, but it is really just a few methods that I can show in its entirety here.
On the C# side, I simply generate some values and output them to a file as rudimentary JSON, one for 2D noise, and another for 3D noise.
Program.cs
using System.Text.Json;

const int numSamples = 32;

var rand = new Random();
var noise = new FastNoiseLite();

using var file2D = File.Open("noise2D.json", FileMode.Create, FileAccess.Write);
using var file3D = File.Open("noise3D.json", FileMode.Create, FileAccess.Write);

var opts = new JsonWriterOptions { Indented = true };
var writer2D = new Utf8JsonWriter(file2D, opts);
var writer3D = new Utf8JsonWriter(file3D, opts);

writer2D.WriteStartObject();
writer3D.WriteStartObject();

foreach (var type in Enum.GetValues<FastNoiseLite.NoiseType>())
{
    noise.SetNoiseType(type);
    writer2D.WriteStartArray(Enum.GetName(type)!);
    writer3D.WriteStartArray(Enum.GetName(type)!);

    int x, y, z;
    for (var i = 0; i < numSamples; i++)
    {
        writer2D.WriteStartObject();
        writer3D.WriteStartObject();

        x = rand.Next(int.MinValue, int.MaxValue);
        y = rand.Next(int.MinValue, int.MaxValue);
        z = rand.Next(int.MinValue, int.MaxValue);

        writer2D.WriteNumber("x", x);
        writer2D.WriteNumber("y", y);

        writer3D.WriteNumber("x", x);
        writer3D.WriteNumber("y", y);
        writer3D.WriteNumber("z", z);

        writer2D.WriteNumber("value", noise.GetNoise(x, y));
        writer3D.WriteNumber("value", noise.GetNoise(x, y, z));

        writer2D.WriteEndObject();
        writer3D.WriteEndObject();
    }

    writer2D.WriteEndArray();
    writer3D.WriteEndArray();
}

writer2D.WriteEndObject();
writer3D.WriteEndObject();

writer2D.Flush();
writer3D.Flush();

Then in a Go test, deserialize those values and test them against the actual output from the Go implementation. You can probably figure whats going on in the Go code without being familiar with the language, but just ask if you want any clarification on something.
noise_test.go
package fastnoise

import (
	"encoding/json"
	"os"
	"testing"
)

type NoiseTest2D struct {
	X     int     `json:"x"`
	Y     int     `json:"y"`
	Value float32 `json:"value"`
}

type NoiseTest3D struct {
	NoiseTest2D
	Z     int     `json:"z"`
}

func unmarshal[T NoiseTest2D | NoiseTest3D](t *testing.T, path string) map[string][]T {
	result := make(map[string][]T)
	if data, err := os.ReadFile(path); err != nil {
		t.Fatal(err)
	} else if err = json.Unmarshal(data, &result); err != nil {
		t.Fatal(err)
	}
	return result
}

func setType(t *testing.T, noise *State[float32], name string) {
	switch name {
	case "OpenSimplex2":
		noise.NoiseType(OpenSimplex2)
	case "OpenSimplex2S":
		noise.NoiseType(OpenSimplex2S)
	case "Cellular":
		noise.NoiseType(Cellular)
	case "Perlin":
		noise.NoiseType(Perlin)
	case "ValueCubic":
		noise.NoiseType(ValueCubic)
	case "Value":
		noise.NoiseType(Value)
	default:
		t.Fatal("unknown noise type")
	}
}

func assertValue(t *testing.T, actual, expected float32) {
	const epsilon = 0.00001
	if fastAbs(actual-expected) > epsilon {
		t.Errorf("Expected: %f, Actual: %f", expected, actual)
	}
}

func TestRanges(t *testing.T) {
	expected2D := unmarshal[NoiseTest2D](t, "/path/to/noise2D.json")
	expected3D := unmarshal[NoiseTest3D](t, "/path/to/noise3D.json")

	noise := New[float32]()
	for name, values := range expected2D {
		setType(t, noise, name)
		for _, value := range values {
			assertValue(t, noise.Noise2D(value.X, value.Y), value.Value)
		}
	}

	for name, values := range expected3D {
		setType(t, noise, name)
		for _, value := range values {
			assertValue(t, noise.Noise3D(value.X, value.Y, value.Z), value.Value)
		}
	}
}

Thanks for your work on this and posting the test code!


Printing detected words

After setting up the project, i realised that it does not print the detected words, it only show them on an image

this repo is a word DETECTOR so it only detects the positions.
If you also want to read the words you have to use this repo: https://github.com/githubharald/HTRPipeline

ok thanks i appreciate


changes to package json

Is this for npm?

Please ignore this , Mike. It was a mistake.
On Thu, Nov 5, 2020, 5:11 AM Mike Cao<EMAIL_ADDRESS>wrote:

Is this for npm?
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/mikecao/umami/pull/348#issuecomment-722033753, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AFCEGKPYMIMVGPN3CIM6ZTTSOHRCVANCNFSM4TF427QA
.


edits

Sorry, I've merged a couple of urgent pull requests adding new tutorials in the past several days that introduced conflicts in this one, and I'll have to do another two in the next few days. Could you please revisit this PR once I'm done with adding new items to this list? I'll be able to do a more detailed review at that point as well. Thank you!
I took a quick glance at your edits, and I'm not sure I understand the idea behind editing the summaries in the list of the tutorials and katas. I tried to stick to a unified, if a bit verbose, phrasing of "This tutorial/kata does something...". Your suggestions seem to mix several styles:

"Introduces complex numbers..." which is a shorthand for the previous phrasing,
"Learn about qubits" which is a call to action for the reader, and
"Standard teleportation protocol and variations." which is a description of the topic covered.

It seems a bit jarring to me (though English is not my first language, so I'm not very confident in my reading). Wouldn't it read better if all summaries were structured in a similar way?

Hi, just saw this (been heads down on another project). What I was aiming for is scanability. I'll take another look.

@tcNickolas , I updated the Katas descriptions to be consistently imperative. See what you think.


New/default categorisation

What
Describe what you have changed and why.
How to review
Describe the steps required to test the changes.
Who can review
Describe who worked on the changes, so that other people can review.

It looks like the case Jit mentioned of only validating dimension options if the dimension changes is not covered
@ChrysmOre it is now covered, felt like the write thing to do was to set as default empty list in the case that the option changes to some default categorisation


Cannot create asynchronous query while in a write transaction

*** Terminating app due to uncaught exception 'realm::InvalidTransactionException', reason: 'Cannot create asynchronous query while in a write transaction'
Goals
I want to check whether there are changes in Post objects, if there are i would like to reload my data.
Expected Results
Table reload and data refreshed.
Actual Results

Steps to Reproduce
I am not sure when does it happen. I saw them in crash logs.
Code Sample
ListingVC viewdidload
self.notification = [[Post allObjects] addNotificationBlock:^(RLMResults *data, RLMCollectionChange *changes, NSError *error) {
        if (error)
        {
            NSLog(@"Failed to open Realm on background worker: %@", error);
            return;
        }

        UITableView *tv;

        if (weakSelf.isSearchMode)
        {
           tv = weakSelf.searchDisplayController.searchResultsTableView;
        }
        else
        {
             tv = weakSelf.tblListing;
        }

        // Initial run of the query will pass nil for the change information
        if (!changes)
        {
            [tv reloadData];
            return;
        }

        [weakSelf updateArray];

    }];

Version of Realm and Tooling
Realm framework version: 3.0.2
Xcode version:8.3.3
iOS version: 11.0.3

Can you show us the code for the updateArray method you're calling?

Here. I just reloading the tableview.
- (void)updateArray{

    if (self.isSearchMode) {
        [self.searchDisplayController.searchResultsTableView reloadData];
    } else {
        [self.tblListing reloadData];
    }
}

The error message says adding notification block within a write transaction. Could you make sure not to call -[RLMRealm beginWriteTransaction:] or enclosing -[RLMRealm transactionWithBlock:] that method?
Also, you seem different version of Realm. RLMResults.mm:427 is not addNotificationBlock: and so on. Can you please confirm what version of Realm are you using? @AyeChanPyaeSone


Unexpected suggest scoring

open user settings.json
do ctrl+space
type git.pull
observe that the textual suggestion "pull" comes before the git.pullBeforeCheckout suggestion
this behaves differently if using ctrl+space after typing

https://user-images.githubusercontent.com/5047891/203990466-c36b7a31-af43-4b45-8002-a086fa210546.mp4

Fishy... Word based and smart completions shouldn't show together to begin with

I was able to reproduce this like ~3 months ago in settings.json. Unfortunately, I cannot remember from which version it started.

Moving to December because this isn't a regression. The problem is two fold. When auto triggering completions we carry over existing completion items (e.g those from the JSON language server) and don't ask their providers again. We only ask all the other providers. In that case the bucket-logic fails, the higher ranked JSON completion doesn't cancel out the lower ranked word-based completion provider. That's why pull, pullBeforeCheckout etc are added to the mix. They then score higher because JSON's git.pullBeforeCheckout-suggestion uses as filter-text "git.pullBeforeCheckout" (leading quote) which scores lowers


Add full_fee_amount column

Fixes #1162
Step 1 of per-order fee computation. First, we save the original unsubsidized fee to the database, so we can use it later.
The database column is non-null, and set to be 0 for all existing orders. The idea here is to release a version that writes full_fee_amount but never reads it. After the release, we wait till all orders without full_fee_amount are either setteled or expired. Then we release a full version.
For now, the unsubsidized fee computation and validation logic is simple, we will change it later.
Test Plan
Unit tests are in progress.

Codecov Report

Merging #1173 (26dbffc) into main (efb7428) will increase coverage by 0.00%.
The diff coverage is 78.33%.

@@           Coverage Diff           @@
##             main    #1173   +/-   ##
=======================================
  Coverage   66.77%   66.78%
=======================================
  Files         135      135
  Lines       27015    27047   +32
=======================================
+ Hits        18039    18062   +23
- Misses       8976     8985    +9

Looks good to me already! What is missing to for the PR to leave draft?

I'll fix the test, then it'll be ready to merge.

What was the issue you were having before with the local DB stuff?

Wrong migration file name (needed capital V in V017.sql), plus some other things that I've missed.

I tend to agree and also slightly prefer 0's (see original comment https://github.com/gnosis/gp-v2-services/pull/1173#discussion_r721218685)

@nlordell do we merge it?

Oh no wait, I haven't renamed the functions.

Oh no wait, I haven't renamed the functions.

Done

Looks like CI is failing on cargo fmt.


Question about unk

The dict is build in file \fairseq\preprocess.lua in tok.buildDictionary->tokenizer.buildDictionary->addFileToDictionary
Building dictionaries is done by repeatedly calling addSymbol() using src.traintxt and tgt.traintxt.
In the lmc.binarizeCorpus->tokenizer.binarize process below, the files is
files = {
            {dest=lang.trainbin, src=lang.traintxt},
            {dest=lang.validbin, src=lang.validtxt},
            {dest=lang.testbin, src=lang.testtxt},
        },

 tokenizer.binarize = argcheck{
    {name='filename', type='string'},
    {name='dict', type='Dictionary'},
    {name='indexfilename', type='string'},
    {name='datafilename', type='string'},
    {name='tokenize', type='function', default=tokenizer.tokenize},
    call = function(filename, dict, indexfilename, datafilename, tokenize)
        local writer = tnt.IndexedDatasetWriter{
            indexfilename = indexfilename,
            datafilename = datafilename,
            type = 'int',
        }
        local nseq, ntok, nunk = 0, 0, 0
        local ids = torch.IntTensor()
        local replaced = tds.Hash()
        for s in io.lines(filename) do
            local words = tokenize(s)
            local nwords = #words
            ids:resize(nwords + 1)
            nseq = nseq + 1
            for i, word in pairs(words) do
                local idx = dict:getIndex(word)
                if idx == dict.unk_index and word ~= dict.unk then
                    nunk = nunk + 1
                    if not replaced[word] then
                        replaced[word] = 1
                    else
                        replaced[word] = replaced[word] + 1
                    end
                end
                ids[i] = idx
            end
            ids[nwords + 1] = dict.eos_index
            writer:add(ids)
            ntok = ntok + ids:nElement()
        end
        writer:close()

        return {
            nseq = nseq,
            nunk = nunk,
            ntok = ntok,
            replaced = replaced,
        }
    end
}

The dict is build from traintxt, and when it binarizeCorpus the traintxt, I think the unk of traintxt should be 0. But the result is not as my expected.
The result of my test is below:
| [x] Dictionary: 62673 types
| [x] data/qqData/train.x: 1000000 sents, 6427491 tokens, 3.67% replaced by <unk>
| [x] data/qqData/valid.x: 50000 sents, 320760 tokens, 4.28% replaced by <unk>
| [x] data/qqData/test.x: 50001 sents, 321867 tokens, 4.18% replaced by <unk>
| [x] Wrote preprocessed data to data-bin/qqData
| [y] Dictionary: 60838 types
| [y] data/qqData/train.y: 1000000 sents, 5688803 tokens, 4.17% replaced by <unk>
| [y] data/qqData/valid.y: 50000 sents, 283708 tokens, 4.89% replaced by <unk>
| [y] data/qqData/test.y: 50001 sents, 284169 tokens, 4.80% replaced by <unk>
| [y] Wrote preprocessed data to data-bin/qqData

I don't know where is the problem of my thought.
Thanks!

How did you call preprocess.lua? If you really do not want to have any unks
in the train data, then you need to use -thresholdsrc 0 -thresholdtgt
0. However,
this means your model will only see unks at test time, and never at
training time.
On 23 June 2017 at 01:54, Yangbin Zhang<EMAIL_ADDRESS>wrote:

The dict is build in file \fairseq\preprocess.lua in tok.buildDictionary->
tokenizer.buildDictionary->addFileToDictionary
Building dictionaries is done by repeatedly calling addSymbol() using
src.traintxt and tgt.traintxt.
In the lmc.binarizeCorpus->tokenizer.binarize process below, the files is
files = {
{dest=lang.trainbin, src=lang.traintxt},
{dest=lang.validbin, src=lang.validtxt},
{dest=lang.testbin, src=lang.testtxt},
},
tokenizer.binarize = argcheck{
{name='filename', type='string'},
{name='dict', type='Dictionary'},
{name='indexfilename', type='string'},
{name='datafilename', type='string'},
{name='tokenize', type='function', default=tokenizer.tokenize},
call = function(filename, dict, indexfilename, datafilename, tokenize)
local writer = tnt.IndexedDatasetWriter{
indexfilename = indexfilename,
datafilename = datafilename,
type = 'int',
}
local nseq, ntok, nunk = 0, 0, 0
local ids = torch.IntTensor()
local replaced = tds.Hash()
for s in io.lines(filename) do
local words = tokenize(s)
local nwords = #words
ids:resize(nwords + 1)
nseq = nseq + 1
for i, word in pairs(words) do
local idx = dict:getIndex(word)
if idx == dict.unk_index and word ~= dict.unk then
nunk = nunk + 1
if not replaced[word] then
replaced[word] = 1
else
replaced[word] = replaced[word] + 1
end
end
ids[i] = idx
end
ids[nwords + 1] = dict.eos_index
writer:add(ids)
ntok = ntok + ids:nElement()
end
writer:close()
    return {
        nseq = nseq,
        nunk = nunk,
        ntok = ntok,
        replaced = replaced,
    }
end

}
The dict is build from traintxt, and when it binarizeCorpus the traintxt,
I think the unk of traintxt should be 0. But the result is not as my
expected.
The result of my test is below:
| [x] Dictionary: 62673 types
| [x] data/qqData/train.x: 1000000 sents, 6427491 tokens, 3.67% replaced by
| [x] data/qqData/valid.x: 50000 sents, 320760 tokens, 4.28% replaced by
| [x] data/qqData/test.x: 50001 sents, 321867 tokens, 4.18% replaced by
| [x] Wrote preprocessed data to data-bin/qqData
| [y] Dictionary: 60838 types
| [y] data/qqData/train.y: 1000000 sents, 5688803 tokens, 4.17% replaced by
| [y] data/qqData/valid.y: 50000 sents, 283708 tokens, 4.89% replaced by
| [y] data/qqData/test.y: 50001 sents, 284169 tokens, 4.80% replaced by
| [y] Wrote preprocessed data to data-bin/qqData
Thanks!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/facebookresearch/fairseq/issues/67, or mute the
thread
https://github.com/notifications/unsubscribe-auth/ADGSfiNyDlhvUAPKPGuaebkiyWkeishvks5sG31JgaJpZM4ODTgy
.

@michaelauli
I am sorry I didn't express my thought clearly. I am confused about that if we addsymbol of all words of traintxt, what kind of words will be treated as unk in traintxt.
Thanks!

It depends on what you specified for -thresholdsrc/tgt or nwordstgt/src. If you did not set any limits, then all words that have not been see in the training data will be treated as unk.

@michaelauli
I've got it. Thanks. It is really kind of you!


updated contributing and getting started pages added npmrc file

This PR contains the following changes:

updated code of conduct page to specify to fork the repo before cloning to contribute.
updated the getting started page to include the npm command to install the block-ui library and dependencies.
to reduce conflicts with npm users, I added an .npmrc file to prevent lock files from being created as that caused me trouble on this initial commit. :)

Thanks!


IP cannot parse "M9 Minimal Media w 50mg per L TRP"

We are running into an issue trying to submit an ER for execution at Strateos:
https://docs.google.com/document/d/1_c1A9F9PBSh6vc-mDfnMcJxlurqtXMANQQ9aFJOTcUk
What we're seeing: When the control table has a content element linked inside it: "M9 Minimal Media w 50mg per L TRP" that links to https://hub.sd2e.org/user/sd2e/design/Modified0x20M90x20Media0x200x2B0x2050mg0x2FL0x20Trp/1 the IP returns an error:
{"errors": ["Controls table has invalid Contents value: Unable to parse M9 Minimal Media w 50mg per L TRP\n"]}

From what I can see, this should not return an error - this looks like a viable contents entry to me. I'm not sure where that newline is coming from - the entry has no such newline.
I've verified the that SD2 program dictionary does indeed contain an entry for "M9 Minimal Media w 50mg per L TRP" that maps to the above URI. The SD2 Common Name is the same for this value.

Edit: we may be able to get around this by using a different set of values (discussing this now with Josh), but I suspect this issue will still remain and could affect us in the future. Something is potentially confusing the contents parsing here.

Edit 2: We did indeed work around for now this by using an alternative value ("modified_m9_media_with_50mg_per_l_trp"). I'm not sure why the original value does not work.


[SPARK-31589][INFRA] Use r-lib/actions/setup-r in GitHub Action

What changes were proposed in this pull request?
This PR aims to use r-lib/actions/setup-r because it's more stable and maintained by 3rd party.
Why are the changes needed?
This will recover the current outage. In addition, this will be more robust in the future.
As of now, this is tested via https://github.com/dongjoon-hyun/spark/pull/17 .
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Pass the GitHub Actions, especially Linter R and Generate Documents.

Test build #121951 has started for PR 28382 at commit 88ce87d.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/26626/
Test PASSed.

Thank you! I optimized a little by removing pandoc from Linter (R).

no problem. still lgtm as long as it fixes the build.

Test build #121952 has started for PR 28382 at commit c6a8b12.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder-K8s/26627/
Test PASSed.

Merged to master, branch-3.0, and branch-2.4. Seems we're all good.

It has a conflict against branch-2.4. Can you backport this too @dongjoon-hyun?

Thank you. Sure!

Test build #121951 has finished for PR 28382 at commit 88ce87d.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Test build #121952 has finished for PR 28382 at commit c6a8b12.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/121952/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/121951/
Test FAILed.


[WARN] UDM cannot find UDR.

While running TestRegistration, I noticed the following Warning in UDM:
0-06-02T16:53:37Z]/src/udm/udm_producer/ue_context_management.go:31 free5gc/src/udm/udm_producer.createUDMClientToUDR() Use default UDR Uri bacause ID[suci-0-208-93-0-0-0-00007487] does not match any UDR  UDM=Handler

In udm/udm_producer/ue_context_management I saw that in the getUdrUri method, there is no if-condition to check if the string contains suci, which then yields the above Warning.
I'm not sure if this is a bug or not, but I wanted to report it nonetheless.

This is a bug, we'll fix it in our next release.
Thanks for your report!

Dear @endrigoshi ,
free5GC has fix this bug on v3.0.3. Please try and check it.
Thanks for your report!


unexpected getStateForAction value in nested navigators.

Current Behavior
I have this navigation structure:
export const Tabs = TabNavigator({
  feed: {
    screen: Feed
  },
  logout: {
    screen: Logout
  }
});

const AppNavigator = StackNavigator({
  login: {
    screen: Login
  },
  screen1: {
    screen: Screen1
  },
  screen2: {
    screen: Tabs,
    navigationOptions: {
      gestureEnabled: false
    }
  }
});

Now If I do this:

AppNavigator.router.getStateForAction(AppNavigator.router.getActionForPathAndParams(
  "screen2"
))

I will get the output(state) as:
{"index":0,"routes":[{"routeName":"screen2","key":"Init-id-1511202869081-1"}]}

But If I do this:

AppNavigator.router.getStateForAction(AppNavigator.router.getActionForPathAndParams(
  "screen2"
),
  AppNavigator.router.getStateForAction(
    AppNavigator.router.getActionForPathAndParams('login')
  )
)

I will get the output state as:
{
	"index": 1,
	"routes": [
		{
			"routeName": "login",
			"key": "Init-id-1511202855232-0"
		},
		{
			"routes": [
				{
					"key": "feed",
					"routeName": "feed"
				},
				{
					"key": "logout",
					"routeName": "logout"
				}
			],
			"index": 0,
			"key": "id-1511202855232-1",
			"routeName": "screen2"
		}
	]
}

Expected Behavior

I was expecting this behavior:

AppNavigator.router.getStateForAction(AppNavigator.router.getActionForPathAndParams(
  "screen2"
))

should return this:
{
	"index": 0,
	"routes": [
		{
			"routes": [
				{
					"key": "feed",
					"routeName": "feed"
				},
				{
					"key": "logout",
					"routeName": "logout"
				}
			],
			"index": 0,
			"key": "id-1511202855232-1",
			"routeName": "screen2"
		}
	]
}

Is the current behavior happening right or is it some bug?
Your Environment

software
version

react-navigation
^1.0.0-beta.15

react-native
0.49.3

node
7.1.0

npm or yarn
4.2.0

Uhm does it happen with newer versions of the lib?
Moreover, is it related to https://github.com/react-community/react-navigation/issues/2622? If so, can you please close this in favor of that?

@kelset I think these two are different issues. I have doubts specifically regarding getStateForAction().
One doubt, what will getStateForAction(action) return if the action doesn't define any route? let's say if the action is {"type":"persist/PERSIST"}, should it return null or what?

Quick update: this getStateForAction may be solved via:

https://github.com/react-community/react-navigation/pull/1515
or
https://github.com/react-community/react-navigation/pull/1888

Can you please let me know if that's the case via a comment in the PR that fixes it?

hi there! if this is still a bug can you create a new issue that reproduces the bug on https://snack.expo.io? thanks!


Support and Backing you

Hi mrkeuz
Phenomenal work on this script!! I'm using it to sync projectors for projection mapping. Now for my issue:
How can we support your development with this script? Can we send you some beer or coffee money as a token of thanks?
I (and probably a bunch of us) really want to support the development of this script.
Only item for a future release (and it's not a deal breaker in anyway) is having all the players jump to the next file in their individual play lists once the "next media in playlist" command is given or a file in a certain playlist position is selected.
Thank you once again and please let us know how we can support you!

Hi @NiTOXide,
Thanks for the kind words! To be honest, I am inspired by myself. This project was born primarily because of formula 1 (with additional screens). Just imaging! If you will be able to get all driver onboards (rear camera, back camera, helmet, etc.) Analyzing incidents interesting moments. Even later (not in live).
So in the end you will be able to rewind, slow, etc. any moment.
Especially candy here as in my opinion i.e. throttle and gas pedals. Inside cockpit (new in this season as I know). So you can see how does the driver work with car and pedals. They work on the edge of the control, although it looks quite simple in the broadcast. Sorry for TL;DR; I just love car mechanics. I can talk about it endlessly. )))
About coffee, accept tips with pleasure. Prefer Latte :)
But just not have crypto wallet jet. Didn't study crypto topic jet (any advices welcome).
Need to dive to topic for myself. When all will ready I notice here.
About you FR:

Using playlists. Seems quite simple feature and simple to implement.
Just require review and consult with VLC protocol.

Please create issue for this with couple use cases.
And thank you for appreciating the project.
It's nice to see someone use it other than me.
You use case with projections is rich and interesting idea, actually.
Just tip: in next release you will be able sync even with remote instances.
It won't restrict you on hardware (only locally) and you will be able to use i.e. Raspberry PI as target screen. ;)

Another Use Case: Watching films with different languages together.
You have to set up multiple audio outputs first for two different headphones, then start the same video twice. On one instance the audio track and device is language1, and on the second it is language2 and vlcsyn synchronizes it perfectly. This way we can watch the same series with our preferred language and still watch it together :) vlcsync is awesome!


Use coveralls for coverage reports

Move to coveralls.

Modify pipeline to upload coverage report to coveralls.
Use coveralls CLI (check their docs) to upload coverage


Prepare and Record Nice MPAS Product Demo for Website and to share with others

As a OCM Dev Product team,
I want to record a nice walkthrough demo of the MPAS system for a public mixed technical audience,
So that I can easily highlight the benefits of the MPAS system.
Acceptance Criteria:

The demo should be easy to follow and understand by any type of technical audience (no mental shortcuts).
The demo should showcase the key features and functionalities of the MPAS system.
The demo should clearly demonstrate the benefits and value proposition of the MPAS system.
Team members should go through the demo before it is made public.
The demo should be recorded and hosted on a suitable platform, such as YouTube, as to be confirmed with  OSPO.
publish on https://ocm.software

Definition of Done:

The demo recording is complete and meets the quality standards.
The demo is reviewed and approved by the OCM Dev Product team.
The demo is published on the https://ocm.software for customers and stakeholders to access.
The demo is easily accessible and prominently featured on the website.
The demo is promoted and shared with the target audience to maximize its reach and impact.

Recording uploaded on video share: https://sapvideoa35699dc5.hana.ondemand.com/?entry_id=1_2u4p4u7z
can be embedded in the Readme / documentation, etc.


Reddit feeds not loading...

Add-on version
Add-on version: 2.2
Describe the bug
Try to add a feed from old.reddit.com gives error.
To Reproduce
Steps to reproduce the behavior:

Go to https://old.reddit.com/r/uBlockOrigin/.
Click on rss feed icon in the address bar.
Scroll down to '....' n/a
See error (screenshot below)

Expected behaviour
See the content of the feed and be able to successfully subscribe to it.
It should open https://old.reddit.com/r/uBlockOrigin/.rss.
Extra context
Any already existing feeds from old.reddit.com are not updating.
And yes, I have already tried disabling Tracking Protection in Firefox.
That does not make any difference.
Screenshot of the error:

I have pinpointed the cause of this.
Trying in an even cleaner new profile with the default preferences unchanged the Reddit feeds were loading fine!
Under 'Enhanced Tracking Protection' ---> 'Custom' ---> 'Tracking content' must be set to 'Only in Private Windows'...

I don't really like that (never use private windows), but OK.
I guess uBlock Origin and uMatrix take care of the rest.

Duplicate of #38


Hard coded values for sampling and gradient dwell time in sync_traj_and_data! function

Hi,
First of all great work!
I am trying to apply it to a pulseq spiral and I am taking a look at the package.
Is that normal to have hard-coded values in the sync_traj_and_data! function
https://github.com/BRAIN-TO/GIRFReco.jl/blob/34c9f0fdc3332ac2a74113865a740528b4b71aef/src/utils/utils.jl#L209
Thanks

Thanks @aTrotier for picking that up, definitely it is not normal to have hard-coded values, it would be ideal to have the user be able to pass in parameters for the dwell times for their trajectory and data. I will work on a feature branch with the change, I think it should be straightforward.

Hi, First of all great work! I am trying to apply it to a pulseq spiral and I am taking a look at the package.
Is that normal to have hard-coded values in the sync_traj_and_data! function
https://github.com/BRAIN-TO/GIRFReco.jl/blob/34c9f0fdc3332ac2a74113865a740528b4b71aef/src/utils/utils.jl#L209
Thanks

Thank you @aTrotier for bringing this up. Do you know whether this dwell time is included somewhere in the MRD header? It would be ideal to have it passed automatically.

The dwell time is available in each profiles in the MRD format (RawAcquisitionData) according to : https://ismrmrd.readthedocs.io/en/stable/mrd_raw_data.html
raw_temp.profiles[1].head.sample_time_us

But weirdly It gives me 3.3 for your spiral datasets.

@aTrotier the 3.3 us dwell time in the ismrmrd header comes from the fact that the Siemens .dat to .mrd converter creates an incorrect header entry

Ok, in my case my conversion from pulseq to mrd seems to work correctly. I can share my xsl/xml parameters maps if you want

Glad to hear that your Pulseq conversion to mrd is correct, we don't use Pulseq to program the spiral. @nbwuzhe can you comment on if the inaccurate MRD header is still an issue with current versions of our spiral implementations? Or would we be able to start trusting the header parameters in the mrd file?

Hi @aTrotier @alexjaffray
Sorry for the late response. This discrepancy in ADC dwell time is because we manually adjusted the ADC sampling rate, while the header was calculated from the given UI values (Base Resolution in unit of px, and Bandwidth in unit of Hz/px), which were not adopted in the actual acquisition. The conversion in SIEMENS_TO_ISMRMRD is correct.
I can correct this UI issue in the next version of the sequence.
Best regards,
Tim


Spell points active, extra step to enable in configure game settings.

foundry v12 331
dnd 5e v4.0.3
spell points v2.4.21
Nothing serious to mention, Just figured I'd drop this in to help.
When adding the module, reset server to apply and it appears as active under module management. At this state everything looks like its up and running, but after adding the spell points it doesn't update the resources after spell use or spell point bar underneath the hp hit die.
I had to go into configure settings, select the Spell points system and then enable it. It does successfully work and apply all visuals and resource use after this. Maybe a mention in the set up instructions to double check this configure game settings section to ensure everything works as it should.

Thanks for the module!
Cheers!

oh yes, you are right, thank you for reminding it to me, I have to remove that setting... and the code bound to that setting.
that is a leftover from the version where spellpoints module was using the actor's resurces. There is no real need for it since now only actors with the item can use spellpoints.
It is confusing now, I will remove it.

https://github.com/misthero/dnd5e-spellpoints/releases/tag/v2.4.22
latest version has old settings removed


Multiple key activation

The activateKey function takes a callback function as the second parameter. Unfortunately this callback is not the same as the purchaseResponse event.
I want to activate multiple keys in one shot, but since I do not know when the responses come, I cannot match the response to the entered key.
Is there a way to distinguish which key activation belongs to which purchaseResponse event?

Were you able to activate multiple keys in one shot? I was unaware that this was a possibility as I thought there would be some sort of rate limiting.
I'd be careful with activating multiple in one-shot though if that's a possibility. The servers will eventually deny all requests to activate keys if you attempt to activate multiple invalid/used keys.

You can activate up to 10 keys per hour. Maybe you can inject the activated key in the response callback object?

I'll check and see if that's possible in a few hours. Though I don't believe the key activation message allows for tagging them in that way (by using job IDs; this is possible for certain game coordinators though).

Did some research. Looks like there is a JobID associated with the registration action and the purchase response. (Look at the jobid_source and jobid_target in the images below). It should be possible to match these up and make the callback work better. Won't be able to work on it until I have some free time though.
ClientRegisterKey

ClientPurchaseResponse

How are you debugging the steam client traffic?

@zumicts SteamKit.

Having no luck in sending target_job_name. I've also tried trace_tag but no results with that either.

Commit c34b1e91897c640ff9a90d7c0e52c1fbc1e62b2f fixes/adds callback functionality with the activateKey method.

Thank you very much.


Class static used to pass info between stream steps

Kafka_Streams_TensorFlow_Image_Recognition_Example use class static variables to pass information between foreach and mapValues steps.
So I expect rather interesting problems if executed with multiple threads.
I have fix for this, but it is on top of changes related to #11

Similar problems noticed also in other classes.

Yeah, to be honest, my first implementation was "quick and dirty". Thank you so much for these improvements and pull requests.

I merged your fix. Thank you.
I will keep the ticket open as reminder for the other classes. I will refactor the other classes, too.

@jukkakarvanen
Hey! im a newbie at this... im trying to run this repo using mvn clean package. Do I have to use kafka as well? or just use mvn clean package and everything would run?
kindly help me out on this.


Add a lab to Advanced Topics for Aspects

General Information

[ ] I may be able to implement this feature request
[ ] This feature might incur a breaking change

Description
Aspects are a powerful feature for custom corrective actions, and an important feature for CDKv2 from an enterprise adoption angle. You should draw attention to this feature as an Advanced Topic within the workshop.
Proposed Solution
Create an Advanced Topics/Compliance section.
Add a guide for Aspects to this new section.
CDK CLI Version
No response
Section
Advanced Topics/Compliance/Aspects
Browser
all
Language
all
Other information
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.Aspects.html

Thanks for creating feature request.


Sort the user lists alphabetically

Sort the user lists alphabetically
Previously the user lists are semi random which leads to situations like this:

groupname = user1, user2, user3, user4

groupname = user1, user3, user2, user4

As you can see nothing has actually changed here except the order in which users are listed.
This is unacceptable if the produced user list is versioned in SVN and then used directly from SVN using the following syntax in the httpd.conf file
AuthzSVNGroupsFile file:///path/to/svn/reponame/authz/svn.groups
This is also unacceptable in the case that the user list is versioned in SVN and then used as an audit trail.

I pushed two commits in together by accident.

Next time we'll break this up into two separate PRs.  Thanks for your help.