ONTAP:Disk Dashboard user_(write|read)_chain length displayed as kbytes

A note for the community

Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
If you are interested in working on this issue or have submitted a pull request, please let us know in a comment

Problem
In https://github.com/NetApp/harvest/blob/main/grafana/dashboards/cmode/disk.json the two panels for read/write chains incorrectly display as chain_length as kbytes.

Read Chain panel:

"unit": "kbytes"
"title": "Top $TopResources Aggregates by User Read IOP Size",

Write Chain panel:

"unit": "kbytes"
"title": "Top $TopResources Aggregates by User Write IOP Size",

Recommend we display as either a (count) float or a computed value of (chain_length * 4KB)
Configuration
No response
Poller
n/a (dashboards/cmode/disk.json)
Version
harvest version 24.02.1221-nightly (commit fb74b201) (build date 2024-02-12T21:36:16+0000) linux/amd64
Poller logs
No response
OS and platform
Amazon Linux 2023, native
ONTAP or StorageGRID version
9.14.1
Additional Context
No response
References
No response

Thanks for reporting @george-strother. We'll fix that.
I'll change the unit to locale, that feels like a good fit for "Average number of blocks transferred".
The locale unit adds grouping separators depending on locale, so in the US that means 12990 is displayed as 12,990.

@george-strother and I discussed and he is going to submit PR for this change. Thanks @george-strother!

Fixed by #2666


Can't add to a project in Xcode 11.5

Failed to resolve package dependencies because every version of VisualEffects contains incompatible tools version and root depends on VisualEffects 1.0.2..<2.0.0, version solving failed.

Yeah, this currently has a swift-tools-version setting of 5.3. I could try pushing it down to 5.2 so it opens on Xcode 11, but I'm not sure whether the actual code is fully compatible. Would you be able to test it out?

Sure!

On Jul 20, 2020, at 3:34 PM, Paul Hudson<EMAIL_ADDRESS>wrote:
Yeah, this currently has a swift-tools-version setting of 5.3. I could try pushing it down to 5.2 so it opens on Xcode 11, but I'm not sure whether the actual code is fully compatible. Would you be able to test it out?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/twostraws/VisualEffects/issues/6#issuecomment-661291180, or unsubscribe https://github.com/notifications/unsubscribe-auth/AINW33V347JWBXM3ZXJIS3TR4SL55ANCNFSM4PCV5PDQ.

There you go; try pulling from the "main" branch directly.

Works great in 11.5 now! Just forked and added it to my project and it was successful.

Great! I shall tag this now 👍


Uncaught exception

There's something deep in the bowels which is killing processes intermittently.
Should toss the following in as a default
process.on('uncaughtException', function (err) {
  var stack = '';
  if (err) {
    stack = err.stack;
  }
  console.error('uncaughtException', err, 'stack: ' + stack);
});

Winston now handles this. If folk want to catch them, they'll need to override the logger.


Update Composer DAG example on DVT

The current Airflow dag in the samples/ directory does not work. This should be updated to a working DAG.

This should also include limitations when working with Artifactory and using the virtualenv operator


RDBC-531 Tests for DocumentQuery

Fixed many bugs, including group_by
https://issues.hibernatingrhinos.com/issue/RDBC-531

@poissoncorp please fix builds:
Cloning git://github.com/psf/black to /tmp/pip-req-build-wxol7hcd
  Running command git clone --filter=blob:none --quiet git://github.com/psf/black /tmp/pip-req-build-wxol7hcd
  fatal: remote error:
    The unauthenticated git protocol on port 94[18](https://github.com/ravendb/ravendb-python-client/runs/5710945987?check_suite_focus=true#step:21:18) is no longer supported.
  Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
  error: subprocess-exited-with-error

  × git clone --filter=blob:none --quiet git://github.com/psf/black /tmp/pip-req-build-wxol7hcd did not run successfully.
  │ exit code: 128
  ╰─> See above for output.


Background tabs text not quite visible

I've installed the theme and it looks great but the only problem I've seen is that the text in the tabs not being used are a bit dark and, some times, it's hard to read them.
Any chance the text can be a bit brighter or even white?
Thanks in advance.

Hi
I wouldn't really set them to white as then it will make them easily mistaken for the active tab.
I just released a small update that makes the background color slightly dark. Let me know if you think it's better this way and if it is easier to read.

It does work better but the text on good light condition is still not to easy to read.
Any chance to not make it white but maybe slightly clearer? Maybe something like this? #D6ACFF
I know it also will depend a lot on the monitor and light conditions I work but make the text a bit lighter in color should do the trick.

The problem here is that It is a bit hard to find the right balance for everybody
If i change that color, a lot of people will say that the chosen color is not in the color list for the original theme and they will complain.
I have created a manifest file just for you so that you can have it modified as per your request. Inside the xip file you have a manifest file (the theme) and a readme on how to install it on your version of chrome
google-chrome-custom.zip
Hope this is good enough for you :)

Well I was saying to stick with the colors but use the one at the top of the selected tab as for the characters colors.
Thank you very much for your help. I really like this theme but not being able to properly read the background tabs was a bit complicated for me.
I was checking the color palette and I agree with you actually, the chosen color is the best one mostly because the one I want to use, although it makes the color brighter and more readable to me, it definitely looks to bright and it kind of makes me loose focus. I will play around a bit as Dracula color palette seems to be a little bit limited for this purpose.
Thank you very much for your help! I really appreciate it.

Glad to help!
Feel free to re-open the ticket if you think something more comes up.
Closing it for now


AI.Luis project exists in samples/ but doesn't compile when added to Solution

We should delete the project from the repo, or add to SLN & fix it so it compiles

Working on it to make it alive again

fixed in #331


Displaying/Parsing/Rendering Post Body

Expected behavior
I should be able to use a HTMLView or markdown-render module to display the post content.
Actual behavior
Pictures don't show up, html or markdown text shows up in the post body. Approaching it either as HTML or markdown doesn't work (maybe a mix of both would?)
How to reproduce
Take a post body from the API. Try running it through either of these:
import Markdown from "react-native-easy-markdown";
import HTMLView from 'react-native-htmlview';

<Markdown>
    {item.body}
</Markdown>

<HTMLView value={item.body}/>

Markdown view:

HTML view:

What is your method - does the body use a special format/protocol that I should be aware of? Thanks!

I've also had a go at rendering the post content on a website with Remarkable JS. Here's the result:

I also faced same problem finally this guy helped me.
Try this https://junn.in/archives/690


[node, client] Redis + Webdis lock services

Merge this after it works.

@kthomas implemented distlock algo with Webdis as well.

@kthomas implemented distlock algo with Webdis as well.

Preference for letting the hub serve as the gatekeeper for the distributed lock.

Yes. There should be an IndraLockService instead to proxy lock acquisition.
On Mon, Sep 16, 2019 at 9:59 AM Bo<EMAIL_ADDRESS>wrote:

@bohendo commented on this pull request.
In modules/client/src/connext.ts
https://github.com/ConnextProject/indra/pull/312#discussion_r324691104:

@@ -104,6 +114,12 @@ export async function connect(opts: ClientOptions): Promise {

const appRegistry = await node.appRegistry();

// create the lock service for cfCore
// const lockService = new WebdisLockService(webdisUrl);
// TODO: switch back to webdis!!

Goal is to remove webdis entirely, right?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ConnextProject/indra/pull/312?email_source=notifications&email_token=AABHL3M6PT7OVIHMC7GS2XDQJ6GM7A5CNFSM4IVWORWKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCE2G7NY#pullrequestreview-288649143,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABHL3OX3YOZZEPK54LRIRTQJ6GM7ANCNFSM4IVWORWA
.

I think it makes decent sense to separate redis client factory from the
lock module.
On Mon, Sep 16, 2019 at 10:11 AM Bo<EMAIL_ADDRESS>wrote:

@bohendo commented on this pull request.
In modules/node/src/redis/redis.provider.ts
https://github.com/ConnextProject/indra/pull/312#discussion_r324697482:

+export const redisClientFactory: FactoryProvider = {

inject: [ConfigService],
provide: RedisProviderId,
useFactory: (config: ConfigService): Redis.Redis => {
const redisClient = new Redis(config.getRedisUrl(), {

 retryStrategy: (times: number): number => {

   console.log("Lost connection to redis. Retrying to connect...");

   const delay = Math.min(times * 50, 2000);

   return delay;

 },

});
return redisClient;
},
+};

+export const redlockClientFactory: FactoryProvider = {
This seems like it should be part of the lock module. Is a separate redis
module even needed or is this here just in case we need redis somewhere
else for something (YAGNI?)
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ConnextProject/indra/pull/312?email_source=notifications&email_token=AABHL3I3YSCCEYZOELSSF5TQJ6H23A5CNFSM4IVWORWKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCE2JBZI#pullrequestreview-288657637,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABHL3JKQ5A73CWGBFQ5UHDQJ6H23ANCNFSM4IVWORWA
.

This was a hack. Should use timeout.
On Mon, Sep 16, 2019 at 10:22 AM Bo<EMAIL_ADDRESS>wrote:

@bohendo commented on this pull request.
In modules/redis-lock/src/index.ts
https://github.com/ConnextProject/indra/pull/312#discussion_r324703646:

 // see https://www.awsarchitectureblog.com/2015/03/backoff.html

 retryJitter: 1000, // time in ms

});

this.redlock.on("clientError", err => {

 console.error("A redis error has occurred:", err);

});
}

async acquireLock(
lockName: string,
callback: (...args: any[]) => any,
timeout: number,
): Promise {
const lockTTL = 10000;
timeout = lockTTL; // HACK-- switch bck to using given timeout

Why not use given timeout here?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ConnextProject/indra/pull/312?email_source=notifications&email_token=AABHL3MNC6O6UVNIQU6TWMLQJ6JEFA5CNFSM4IVWORWKYY3PNVWWK3TUL52HS4DFWFIHK3DMKJSXC5LFON2FEZLWNFSXPKTDN5WW2ZLOORPWSZGOCE2LAFQ#pullrequestreview-288665622,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AABHL3O7PGDAOL6HU4TORVLQJ6JEFANCNFSM4IVWORWA
.

Yes. There should be an IndraLockService instead to proxy lock acquisition.

https://github.com/ConnextProject/indra/blob/redis-plus-node-lock/modules/redis-lock/src/index.ts#L109


NPM reports incorrect Laravel Mix version (Regression of 478, also)

Laravel Mix Version: 0.8.8
Node Version 7.7.1:
NPM Version 4.3.0:
OS: MacOS Sierra

Description:
GitHub tells me the latest version is 0.8.2. NPM is reporting that Laravel Mix 0.8.8 is installed, and I am suffering from #478. I assume this is something to do with the incorrect version of 0.8.8 being reported.
I have removed my node_modules folder and reinstalled using npm install, and also updated all of my dependencies with npm update.
Below is my package.json:

{
"private": true,
"scripts": {
"dev": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch-poll": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --watch --watch-poll --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"hot": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"production": "node node_modules/cross-env/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
"devDependencies": {
"axios": "^0.15.3",
"bootstrap-sass": "^3.3.7",
"jquery": "^3.1.1",
"laravel-mix": "^0.8.1",
"lodash": "^4.17.4",
"vue": "^2.1.10"
},
"dependencies": {
"chart.js": "^2.5.0"
}
}

Steps To Reproduce:
Install Laravel Mix with ^0.8.1 as the version specifier, and then run npm list | grep mix, to report the incorrect version of Laravel Mix. Running npm run dev then reports #478.
I get the same result whether I run on MacOS Sierra or Laravel Homestead (5.4, Ubuntu 16.04).

npm run dev starts working after following the steps in #450.

0.8.8 isn't a GitHub tag, but is declared as such in package.json on the master branch.


clean up doxygen errors

Description
Clean up doxygen errors in current math repo.
Expected Output
Doxygen running without errors from Stan code.
Current Version:
v4.3.2

Duplicate of #2687


Animation.event 'style property is not supported'

Description
I have a problem with Animated.event with interpolate on scroll event. When I use Animated.event with
useNativeDriver: true
I receive next error:
Style property 'height' is not supported by native animated module
If I use opacity property - it works fine.
opacity - works.
height - didn't works.
Without useNativeDriver: true - all works fine.
Reproduction Steps and Sample Code
render() {
		this.yOffset = new Animated.Value(0);

		let event = Animated.event([
			{
				nativeEvent: {
					contentOffset: {
						y: this.yOffset
					}
				}
			}
		], {useNativeDriver: true});

		let opacity = this.yOffset.interpolate({
			inputRange: [0, 120],
			outputRange: [1, 0],
		});

		let height = this.yOffset.interpolate({
			inputRange: [0, 180],
			outputRange: [200, 100],
		});

		return (
			<View>
				<Header
					style={{
						opacity,
						height
					}}
				/>

				<ScrollView
					scrollEventThrottle={16}
					onScroll={event}
				>

					// some content

				</ScrollView>
			</View>
		);
	}

Solution
None.
Additional Information

React Native version: 0.43.0-rc.4
Platform: Tested on Android Emulator Accelerated_x86 API 23
Development Operating System: Windows 10 x64
Dev tools: Android Studio latest

It's not a bug, Native Animation only support non layout props, such as transform and opacity, you can try to achieve your intention using transform translateY if you want to use Native Animation

Working as expected. Animating layout props is not supported by the native driver.

I am sure you will find all answers to your questions reading this article: https://facebook.github.io/react-native/blog/2017/02/14/using-native-driver-for-animated.html


Add history recorder

cc @dstufft @jamesls @kyleknap @joguSD @JordonPhillips

Codecov Report

Merging #1315 into develop will increase coverage by 0.01%.
The diff coverage is 100%.

@@             Coverage Diff             @@
##           develop    #1315      +/-   ##
===========================================
+ Coverage    98.05%   98.06%   +0.01%
===========================================
  Files           45       46       +1
  Lines         7421     7460      +39
===========================================
+ Hits          7277     7316      +39
  Misses         144      144

Impacted Files
Coverage Δ

botocore/utils.py
95.99% <ø> (ø)
:arrow_up:

botocore/client.py
99.73% <100%> (ø)
:arrow_up:

botocore/history.py
100% <100%> (ø)

botocore/endpoint.py
97.33% <100%> (+0.13%)
:arrow_up:

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 7c9a03f...d4af8b6. Read the comment docs.


runtime: goroutine execution stalled during GC

This issue is occurring with Go 1.6.2 on linux/amd64.
We have a Go server that exhibits large latency spikes (hundreds of ms) during GCs even though the STW periods are small (1-2ms). The symptoms are somewhat similar to #14812; I'm reporting a new issue on @RLH's guidance.
Background on the Go program: it is a key/value store that fulfills put/get requests from clients via a simple custom protocol over TCP. The server creates a goroutine per connection, like net/http. The heap contains an extremely large map (>100M keys). The server is written to be reasonably careful about memory allocation and the only GCs are those forced by sysmon every 2 minutes.
When the server starts, the maximum request latency is a few ms. Requests touch disk so occasionally there are latency spikes of at most a few dozen ms. After about 5 days, the server is exhibiting ~500ms latency spikes at every GC. After a week or two, the spikes can grow to 1s or more.
The latency spikes do not affect every request that arrives during the GC; only a few requests seem affected (maybe just one?)
Last week I restarted this server using GODEBUG=gctrace=1,gcpacertrace=1 and with net/http/pprof enabled. Then a couple of days ago I captured both GC logs from a spike as well as a runtime execution trace.
Here is what the spikes look like:

(The time series is bucketed at 10s intervals; the mis-alignment between the spike and the GC line is partly due to that and partly an artifact of how we collect runtime metrics.)
We'll take a closer look at the 18:35 spike. Here are the logs:
2016/07/06 18:35:09 GC forced
2016/07/06 18:35:09 pacer: assist ratio=+8.551347e-003 (scan 81 MB in 9720->19297 MB) workers=2+0
2016/07/06 18:35:09 pacer: H_m_prev=10117323976 h_t=+9.500000e-001 H_T=19728781753 h_a=+7.435357e-003 H_a=10192549896 h_g=+1.000000e+000 H_g=20234647952 u_a=+3.749354e-001 u_g=+2.500000e-001 W_a=85852208 goalΔ=+5.000000e-002 actualΔ=-9.425646e-001 u_a/u_g=+1.499742e+000
2016/07/06 18:35:09 gc 3407 @409224.383s 0%: 0.099+504+0.77 ms clock, 0.79+504/508/9.2+6.2 ms cpu, 9720->9720->9648 MB, 19297 MB goal, 8 P
2016/07/06 18:35:10 pacer: sweep done at heap size 9649MB; allocated 0MB of spans; swept 1246890 pages

Here's a screenshot of the trace:

Note the long "GC" and "gcBgMarkWorker" lines that run for about 500ms and the single (*Server).handleConn line that runs for the same period. It seems that the goroutine managing that connection was stalled during the GC, yet many other requests were served on other connections in a few ms or less.
I have added some further instrumentation to my code to pinpoint the delays, so I will attach more information later. (But I'll have to wait a few days.)
The program isn't open-source but I can provide the binary and execution trace privately. I might also be able to send over the source in some form, but it will take some work on my end to come up with a driver that can reproduce the problem.

/cc @RLH @aclements

@cespare, could you try patching in https://go-review.googlesource.com/c/23540/? You mentioned that there's a large map, so my guess is that one of the mutator assists (handleConn in the screenshot you posted) is grabbing that and spending a long time scanning it. That would also be consistent with just one of the requests being delayed per GC, and sometimes no request being delayed (if the background worker was the one to grab the map).

2016/07/06 18:35:09 pacer: assist ratio=+8.551347e-003 (scan 81 MB in 9720->19297 MB) workers=2+0

Just checking: is the vast majority of your heap non-pointer data? What's the type of your map? It's also a little weird it took a whole second to scan just 81 MB of pointer data...

Would it also be possible to post a longer gctrace? I'm particularly interested in whether things have obviously changed between when the server has recently started and has low latency and when it's older and exhibiting high latency. Some snippets of the gctrace/gcpacertrace at different ages would also be fine.

@aclements thanks for taking a look. I'll patch in CL 23540 and report back in a week or so. As for the rest of your questions:

is the vast majority of your heap non-pointer data? What's the type of your map?

Yes. The vast majority of the heap is that single map. The type is map[keyHash]RecordRef:
type keyHash [12]byte

type RecordRef struct {
	seq    uint32
	offset uint32
}

(This server is a later version of the same program that caused me to file #9477 a couple of years ago; at that time it was important to eliminate all pointers in order to keep pause times under control.)
If your theory is correct, it sounds like I could simply shard the map to partially work around the problem.

Would it also be possible to post a longer gctrace? I'm particularly interested in whether things have obviously changed between when the server has recently started and has low latency and when it's older and exhibiting high latency. Some snippets of the gctrace/gcpacertrace at different ages would also be fine.

I restarted the process at around 2016-07-02T00:55:17Z. Here are some snippets from the log from each day between then and the logs I posted above:
2016/07/02 12:01:40 GC forced
2016/07/02 12:01:40 pacer: assist ratio=+2.138854e-003 (scan 17 MB in 8485->16878 MB) workers=2+0
2016/07/02 12:01:40 pacer: H_m_prev=8849114144 h_t=+9.500000e-001 H_T=17255772580 h_a=+5.442970e-003 H_a=8897279608 h_g=+1.000000e+000 H_g=17698228288 u_a=+2.503884e-001 u_g=+2.500000e-001 W_a=18793824 goalΔ=+5.000000e-002 actualΔ=-9.445570e-001 u_a/u_g=+1.001554e+000
2016/07/02 12:01:40 gc 339 @40015.564s 0%: 0.12+101+0.51 ms clock, 0.98+0.31/6.0/110+4.1 ms cpu, 8485->8485->8436 MB, 16878 MB goal, 8 P
2016/07/02 12:01:40 pacer: sweep done at heap size 8436MB; allocated 0MB of spans; swept 1086754 pages
2016/07/02 12:02:15 scvg266: inuse: 8462, idle: 5311, sys: 13774, released: 5260, consumed: 8513 (MB)
...
2016/07/03 12:01:35 GC forced
2016/07/03 12:01:35 pacer: assist ratio=+3.950049e-003 (scan 34 MB in 8738->17379 MB) workers=2+0
2016/07/03 12:01:36 pacer: H_m_prev=9111766208 h_t=+9.500000e-001 H_T=17767944105 h_a=+5.644927e-003 H_a=9163201464 h_g=+1.000000e+000 H_g=18223532416 u_a=+2.500166e-001 u_g=+2.500000e-001 W_a=35753936 goalΔ=+5.000000e-002 actualΔ=-9.443551e-001 u_a/u_g=+1.000066e+000
2016/07/03 12:01:36 gc 1058 @126411.045s 0%: 0.34+197+0.91 ms clock, 2.7+0.026/6.4/208+7.3 ms cpu, 8738->8738->8693 MB, 17379 MB goal, 8 P
2016/07/03 12:01:36 pacer: sweep done at heap size 8694MB; allocated 0MB of spans; swept 1119763 pages
2016/07/03 12:02:15 scvg842: 1 MB released
2016/07/03 12:02:15 scvg842: inuse: 8722, idle: 5572, sys: 14295, released: 5511, consumed: 8783 (MB)
...
2016/07/04 12:00:55 GC forced
2016/07/04 12:00:55 pacer: assist ratio=+5.573086e-003 (scan 52 MB in 9556->19028 MB) workers=2+0
2016/07/04 12:00:55 pacer: H_m_prev=9976379976 h_t=+9.500000e-001 H_T=19453940953 h_a=+4.495774e-003 H_a=10021231528 h_g=+1.000000e+000 H_g=19952759952 u_a=+2.500208e-001 u_g=+2.500000e-001 W_a=55319360 goalΔ=+5.000000e-002 actualΔ=-9.455042e-001 u_a/u_g=+1.000083e+000
2016/07/04 12:00:55 gc 1776 @212770.689s 0%: 0.13+333+1.0 ms clock, 1.1+0.055/336/13+8.3 ms cpu, 9556->9556->9514 MB, 19028 MB goal, 8 P
2016/07/04 12:00:55 pacer: sweep done at heap size 9515MB; allocated 0MB of spans; swept 1225150 pages
2016/07/04 12:02:16 scvg1418: 3 MB released
2016/07/04 12:02:16 scvg1418: inuse: 9564, idle: 4730, sys: 14295, released: 4716, consumed: 9578 (MB)
...
2016/07/05 12:01:45 GC forced
2016/07/05 12:01:45 pacer: assist ratio=+8.636990e-003 (scan 81 MB in 9576->19057 MB) workers=2+0
2016/07/05 12:01:46 pacer: H_m_prev=9991664936 h_t=+9.500000e-001 H_T=19483746625 h_a=+4.967289e-003 H_a=10041296424 h_g=+1.000000e+000 H_g=19983329872 u_a=+2.501286e-001 u_g=+2.500000e-001 W_a=85842496 goalΔ=+5.000000e-002 actualΔ=-9.450327e-001 u_a/u_g=+1.000515e+000
2016/07/05 12:01:46 gc 2494 @299221.000s 0%: 0.27+436+0.80 ms clock, 2.1+0.44/7.8/442+6.4 ms cpu, 9576->9576->9528 MB, 19057 MB goal, 8 P
2016/07/05 12:01:46 pacer: sweep done at heap size 9529MB; allocated 0MB of spans; swept 1228103 pages
2016/07/05 12:02:17 scvg1994: 3 MB released
2016/07/05 12:02:17 scvg1994: inuse: 9563, idle: 4731, sys: 14295, released: 4692, consumed: 9602 (MB)
...
2016/07/06 12:01:29 GC forced
2016/07/06 12:01:29 pacer: assist ratio=+8.515688e-003 (scan 81 MB in 9701->19318 MB) workers=2+0
2016/07/06 12:01:30 pacer: H_m_prev=10128628744 h_t=+9.500000e-001 H_T=19750826050 h_a=+4.366870e-003 H_a=10172859152 h_g=+1.000000e+000 H_g=20257257488 u_a=+2.500632e-001 u_g=+2.500000e-001 W_a=85846568 goalΔ=+5.000000e-002 actualΔ=-9.456331e-001 u_a/u_g=+1.000253e+000
2016/07/06 12:01:30 gc 3211 @385604.769s 0%: 0.36+498+0.97 ms clock, 2.9+0.25/8.7/502+7.8 ms cpu, 9701->9701->9655 MB, 19318 MB goal, 8 P
2016/07/06 12:01:30 pacer: sweep done at heap size 9655MB; allocated 0MB of spans; swept 1244427 pages
2016/07/06 12:02:18 scvg2570: 0 MB released
2016/07/06 12:02:18 scvg2570: inuse: 9699, idle: 4595, sys: 14295, released: 4560, consumed: 9734 (MB)

I'm having trouble reproducing the issue now. Once I can reliably reproduce it again I'll patch in CL 23540 and report back (otherwise it will be hard to say if it's helping).
One hint that @rhysh gave me was that I could be running into #16070 as well. It's possible I wouldn't notice the leaked memory because the size of the overflow buckets is dwarfed by the size of map data, and it could explain how the latency spikes grow worse over time.

I've seen this recently in some of my applications with go1.6.x and go1.7—but with large slices and large channels (both with pointers) instead of large pointerless maps.
I have a reproducer for this. Using go1.6.3 and go1.7 with a live heap of around 1GB, it can show mutator unavailability in excess of a second (in "slice-livepointer" mode). It can show mutator unavailability of tens of milliseconds with a large pointer-free map—after churning the map for several minutes to simulate what I suspect are @cespare 's program's operation conditions.
Applying https://golang.org/cl/23540 PS3 to go1.7 brings the pauses for all test modes are down to only a few milliseconds.

package main

import (
	"flag"
	"log"
	"os"
	"os/signal"
	"runtime/trace"
	"time"
)

const (
	ballastBytes      = 1000 << 20
	tickInterval      = 1 * time.Millisecond
	desiredGCInterval = 1 * time.Second
	workers           = 10
	testDuration      = 10 * time.Second

	ptrBytes = 8 // 8 bytes per pointer on amd64
)

var (
	ballast interface{}
	sink    = make([]interface{}, workers)
)

// makeBallast controls which GC pause experiment is active.
var makeBallast func() interface{} = makeMapNopointer

// makeSliceNopointer creates a large pointer-free slice.
//
// In go1.6.3 and go1.7, this has no measured effect on mutator availability.
func makeSliceNopointer() interface{} { return make([]uintptr, ballastBytes/ptrBytes) }

// makeSlicePointer creates a large slice of nil pointers.
//
// In go1.6.3 and go1.7, this leads to long periods of mutator unavailability
// (hundreds of milliseconds).
func makeSlicePointer() interface{} { return make([]*uintptr, ballastBytes/ptrBytes) }

// makeSliceLivePointer creates a large slice containing pointers to many
// pieces of live memory.
//
// In go1.6.3 and go1.7, this leads to long periods of mutator unavailability
// (around a second).
func makeSliceLivePointer() interface{} {
	b := make([]*uintptr, ballastBytes/ptrBytes/2)
	for i := range b {
		b[i] = new(uintptr)
	}
	return b
}

// makeChanPointer creates a large channel of nil pointers.
//
// In go1.6.3 and go1.7, this leads to long periods of mutator unavailability
// (hundreds of milliseconds).
func makeChanPointer() interface{} { return make(chan *uintptr, ballastBytes/ptrBytes) }

// makeChanPointer creates a large channel of nil pointers.
//
// In go1.6.3 and go1.7, this leads to long periods of mutator unavailability
// (around a second).
func makeChanLivePointer() interface{} {
	c := make(chan *uintptr, ballastBytes/ptrBytes/2)
	for i := 0; i < cap(c); i++ {
		c <- new(uintptr)
	}
	return c
}

// makeMapNopointer creates a large map with non-pointer keys and values.
//
// In go1.6.3 and go1.7, this leads to long periods of mutator unavailability
// (tens of milliseconds).
//
// Populating and churning the map may take a few minutes.
func makeMapNopointer() interface{} {
	const (
		// mapMemoryInefficiencyEstimate estimates how many bytes of memory
		// does a map require to store one additional byte of key+value
		mapMemoryInefficiencyEstimate = 2

		kvsize     = 4
		mapsize    = (ballastBytes / ptrBytes) / kvsize / mapMemoryInefficiencyEstimate
		churnTimes = 30
	)

	b := make(map[uintptr][kvsize - 1]uintptr)
	// the key size and value size must both be below 128 bytes:
	// https://github.com/golang/go/blob/go1.7/src/runtime/hashmap.go#L70-L75

	// populate and churn the map to grow (https://golang.org/issue/16070) the
	// overflow bucket list:
	// https://github.com/golang/go/blob/go1.7/src/runtime/hashmap.go#L117-L126
	for i := 0; i < mapsize*(1+churnTimes); i++ {
		b[uintptr(i)] = [kvsize - 1]uintptr{}
		delete(b, uintptr(i-mapsize))
	}
	return b
}

func main() {
	tname := flag.String("trace", "", "Execution trace file name")
	exp := flag.String("experiment", "",
		"Name of experiment (slice-nopointer, slice-pointer, slice-livepointer, map-nopointer, chan-pointer, chan-livepointer)")
	flag.Parse()

	if *tname == "" {
		log.Fatalf("The -trace flag must be used to set the execution trace file destination")
	}

	switch *exp {
	case "slice-nopointer":
		makeBallast = makeSliceNopointer
	case "slice-pointer":
		makeBallast = makeSlicePointer
	case "slice-livepointer":
		makeBallast = makeSliceLivePointer
	case "map-nopointer":
		makeBallast = makeMapNopointer
	case "chan-pointer":
		makeBallast = makeChanPointer
	case "chan-livepointer":
		makeBallast = makeChanLivePointer
	case "":
	default:
		log.Fatalf("Unknown -experiment %q", *exp)
	}

	sigs := make(chan os.Signal, 1)
	signal.Notify(sigs, os.Interrupt)

	tfile, err := os.Create(*tname)
	if err != nil {
		log.Fatalf("trace open: %v", err)
	}
	defer func() {
		err := tfile.Close()
		if err != nil {
			log.Fatalf("trace close: %v", err)
		}
	}()

	err = trace.Start(tfile)
	if err != nil {
		log.Fatalf("trace start: %v", err)
	}
	defer trace.Stop()

	ballast = makeBallast()

	ticker := time.NewTicker(tickInterval)
	defer ticker.Stop()

	for i := 0; i < workers; i++ {
		go work(ticker.C, i)
	}

	select {
	case <-sigs:
	case <-time.After(testDuration):
	}
}

func work(ch <-chan time.Time, i int) {
	for t := range ch {
		d := time.Since(t)
		if d > 1*time.Millisecond {
			log.Printf("long pause: %s", d)
		}

		sink[i] = make([]byte, ballastBytes/(desiredGCInterval/tickInterval))
	}
}

@cespare — does this look like it reproduces your issue, or does it illustrate a different bug?
@aclements — this makes garbage collections pause all mutators that allocate memory for nearly the whole duration of the GC. My company has a couple of programs I'm aware of that see their applications pause for ~100ms whenever a GC happens, so for some applications (those with goroutines that allocate, and whose live heaps are concentrated in a few giant allocations), GCs are effectively stop-the-world.
Do you have recommendations for how to work around this, particularly for applications where breaking the few large allocations into many smaller ones would require significant effort?
Is there a safe runtime change to address this that could make it into a 1.7.x point release? You seemed skeptical of https://golang.org/cl/23540 for 1.7.
Thanks!

@rhysh -- thanks for the repro case. I think it does replicate the problem I've been seeing.
I'm able to reproduce the problem again on my end and I've now patched in CL 23540 PS3. I'll report back later about whether that fixed the problem.

@rhysh, that's a great benchmark. Can I have your permission to adapt it into the suite at https://github.com/aclements/go-gcbench/ (which will one day become part of x/benchmarks)?

Do you have recommendations for how to work around this, particularly for applications where breaking the few large allocations into many smaller ones would require significant effort?

If you can't break up the large allocations (or patch in CL 23540), the only other trick I can think of is to raise GOMAXPROCS. Given N large objects, at most N OS threads can get tied up in scanning those large objects, while the others continue to run (mostly) normally. You also need enough goroutines for this workaround to work, since it would still be possible for N goroutines to get tied up on those N OS threads.

Is there a safe runtime change to address this that could make it into a 1.7.x point release? You seemed skeptical of https://golang.org/cl/23540 for 1.7.

Given that this isn't a regression and I can't think of a super-low-risk way to do this, it doesn't fit the requirements for a point release.
I have a rebased and updated version of CL 23540 ready and am running benchmarks as I write this, so I should have a real version of that ready soon.

@cespare, did you get a chance to try CL 23540? I just uploaded a rebased and updated version, but the code is no different from PS 3.

@aclements I patched it into my server two days ago. I'll report back later this week with the results.

@cespare, great! Looking forward to the results.

Can I have your permission to adapt it

Yes, please do!

Given N large objects, at most N OS threads can get tied up in scanning those large objects, while the others continue to run (mostly) normally.

That's part of the story, @aclements. There's an additional implication of this bug that I think makes the workaround less practical than that.
My view is that this bug affects availability of all goroutines which allocate. With most of the process's memory tied up in N allocations (with N==1 for my reproducer), N goroutines which allocate during the concurrent mark phase will be assigned to scanning those large allocations. They'll tie up a P, and the G will be unable to run user code. Any additional goroutines that allocate during the concurrent mark phase will wait until the large scan tasks are done. These goroutines won't consume a P but their G will not be runnable, at least until there's scan credit available to steal (which might not be until nearly the end of the cycle). So long as there's a P available, each goroutine will be able to run until it attempts to allocate memory. At that point, they end up stuck at the end of runtime.gcAssistAlloc on goparkunlock(&work.assistQueue.lock, "GC assist wait", traceEvGoBlock, 2)
Given the "GC forced" logs in the first message on this issue, I suspect that @cespare 's server is careful to not allocate any memory at all in most goroutines which is why there continues to be a fair amount of goroutine scheduling activity and "Network" activity in the first message's execution trace.
Less finely tuned servers—including ones built with net/http.Server—allocate at least a little in many goroutines. Those goroutines end up un-runnable for long periods of the GC cycle.
In servers built with net/http.Server, this bug affects a small number of threads and a large number of goroutines. All of our http.Handlers end up stalled during the GC, not just the unluckiest one.

Given that this isn't a regression and I can't think of a super-low-risk way to do this, it doesn't fit the requirements for a point release.

Thank you for considering it.

I agree with @rhysh -- it seems like for the "have extra goroutines" workaround to help, I'd need to make some goroutines that only do dummy allocations purely to maximize the probability that they'll take the hit.
In my code, the place where a goroutine actually gets stuck for hundreds of ms is a 1-byte allocation!
	var scratch [1]byte                                                  <---------
	if _, err := io.ReadFull(r, scratch[:]); err != nil {
		...
	}

Yes, please do!

Thanks!

These goroutines won't consume a P but their G will not be runnable, at least until there's scan credit available to steal (which might not be until nearly the end of the cycle).

Shoot. I was thinking that scanobject would flush scan credit as it went and wake up these assists, but you're right. That flush is one level higher, in gcDrain, so it doesn't happen incrementally. I guess that's another good reason for oblets.

Just a workaround suggestion, but do you care about what is read into that one-byte allocation? If it's throwaway, maybe you could preallocate a static (or a static array of bytes, randomly accessed to avoid fighting over cache lines)?  I was looking at it with an eye to escape analysis, had that thought instead.

@dr2chase, and special case in the race detector that it's not a race? I think we'd all agree that's super class.
But I think @cespare just cited that as the first example. There are allocations after that.

@cespare: Friendly ping to see if you have results with the CL.

@aclements thanks for the reminder. I just checked the numbers and indeed, the large latency spikes are not happening anymore—CL 23540 fixes this problem for me. Thanks!

@cespare, awesome! I'll finish polishing that CL up and get it in.

It looks like this commit solves the high latency measured in https://github.com/spion/hashtable-latencies.
Today, I reran the benchmark with Go current master branch (78c46581f4da82473f3efcbbe1f3b48625f88471) and now Go's latency is similar and even inferior to OCaml:

Thanks @aclements!

Super cool.


Does dreambooth correctly read text from external captions?

This is how it is shown to me in the process of training the model.

This is what my caption looks like. Is this just a visual bug or not?

yes, I set the maximum of words displayed, but that's just the display, the training uses the whole caption

I noticed that after it goes through the image set once, the displayed caption is just the instance word, not sure if it's actually reading the whole caption after that.

set the text encoder steps to 0 to use the captions the whole training

even if i set to 0 text encoder training, the captions still disappear from the the display during training

try setting the text encoder steps the same as of the unet steps

my bad, it was actually working if we set text encoder training step to 0. My captions were not copied in the folder and thus it could not used them.


Extending native string

In short, is it possible to make a string with its own method?
Something like
color.toString() === `hsl(120, 20%, 50%)` // true
color.h // 120
color.s // 0.2
color.l  // 0.5
color.lighten(0.5).toJString() === `hsl(120, 20%, 100%)` // true

function print(content: string) {
  console.info(content)
}

print(s) // no semantic error here

I think, since 'str'.toString() works, it might make sense to attach even more methods to the string?
It doesn't actually need to be a string, as long as it has a static type compatible with string and after converted to string it has the intended value.

Is this what you are looking for? Check towards the end of the file

@blendsdk Not exactly. I'm not trying to attach methods to all strings. I try to make an object that has a static type of string. It'll ideally affect only a few objects, not every instance of string.

You would do it like you would in JavaScript, by augmenting the String.prototype.
If you want to modify the interface String, interfaces are open ended:
interface String {
    h: number;
}

Of course augmenting globals like this is generally considered a bad design pattern though and subclassing built-ins would be better.

you can extend a global interface locally
declare global {
    interface String {
        myMegaMethod(): void;
    }
}
'hey'.myMegaMethod(); // works

thank to https://github.com/Microsoft/TypeScript/issues/4166 that was shipped with TypeScript 1.8


BUG: config suggests value that is not possible

# <Optional> Defines the logging target. [possible values: terminall, file, combined]. Default: terminal
# --log <LoggerType>
--log=combined

error: 'combined' isn't a valid value for '--log <STRING>...'
        [possible values: file, terminal]

Still an issue

Also typo: terminall


pull request for e2e test at 11/18/2016 21:26:20

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Added ability to exclude comments from SRS/SVP reports.

Coverage increased (+0.1%) to 89.522% when pulling ceee0589b3b686a00d21226e3084b29ef3ade372 on thongsav-usgs:master into 793a5825b50e78f2ec616cd2ad3240689e45469e on USGS-R:master.

👍  Looks good to me.


\mmlToken does not evaluate TeX in its argument

Issue Summary
The \mmlToken macro cannot be used to wrap TeX into custom MathML. It can currently only be used to wrap plain text.
Steps to Reproduce:
Here is sample code and a screenshot. The first and third line render as expected because they are plain (Latin and Greek) text, while the second line leaks TeX code to the page. I would expect lines two and three to look identical.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script<EMAIL_ADDRESS></head>
<body>

\(\newcommand{\vec}[1]{\mmlToken{mi}[mathvariant="bold-italic"]{#1}}\)

\begin{align}
a &= \vec{a} \\
\alpha &= \vec{\alpha} \\
α &= \vec{α}
\end{align}

</body>
</html>

Technical details:

MathJax Version: 3.1.4
Client OS: macOS 11.4
Browser: Safari 14.1.1, Chrome 91.0.4472.101

Notes
@dpvc's answers in https://github.com/mathjax/MathJax/issues/2671 and https://github.com/mathjax/MathJax/issues/2595 led me to \mmlToken. The documentation on it is somewhat sparse.
I assume this can be worked around by implementing a custom \vec macro on the JavaScript level, but I have not succeeded at doing that. My TeX code is coming from an external source and I can't easily change that to deliver α instead of \alpha, so I need to get the formatting right via MathJax.

You are correct that the argument to \mmlToken is raw text, and is not processed as TeX.  The contents of a token element in MathML must be text, and things like \alpha produce <mi>α</mi>, which is not allowed in a token element, so the argument can't be processed in that way.
It is also true that \mathbfit will not affect \alpha, just as it doesn't in actual TeX.  But you can use \boldsymbol to make a bold version of \alpha (and many other symbols).  So perhaps using
\let\vec=\boldsymbol

would do what you need.  (Or \newcommand{\vec}[1]{\boldsymbol{#1}} if you want to be more semantic about it.  You can  use the macros property of the tex configuration block to add this definition to your configuration:
MathJax = {
  tex: {
    macros: {
    }
  }
};

The \vec example above was a bit simpler than what I actually had in mind. Maybe we should convert this issue into a feature request along the lines of "There should be something like \mmlToken that evaluates its argument as TeX".
I'm trying to get an ISO 80000-2 style, which would look something like this (with a custom definition of \ifstrequal that comes from lwarp):
\newcommand{\vec}[1]{\ifstrequal{#1}{\nabla}{\mmlToken{mo}[mathvariant="bold"]{\unicode{x2207}}}{\mmlToken{mi}[mathvariant="bold-italic"]{#1}}}
\newcommand{\tens}[1]{\mmlToken{mi}[mathvariant="bold-sans-serif"]{#1}}

That is, vectors should be bold-italic and operators like \nabla should be bold-upright.
Your suggestion of \boldsymbol is actually pretty close, I was not previously aware that it produced upright nablas. The nabla does end up in <mi> MathML tags though (irrespective of the use of \boldsymbol), while I thought it should be <mo>. \boldsymbol does not work on \alpha when the latter is defined using \(\def\alpha{\unicode{x1D6FC}}\), which for some reason is inserted by lwarp.

I believe that is exactly what the physics package implements. Can you simply use that? For example use
  MathJax = {
    loader: {load: ['[tex]/physics']},
    tex: {
          packages: {'[+]': ['physics']},
          physics: {
            arrowdel: true
          }}
  };

and you can then get the gradient operator with
\[\grad\]

Note that the arrowdel option is implemented in the upcoming 3.2 only (also see issue #2449). In older versions you cannot specify arrowdel and will only get the bold, upright Nabla without vector arrow. But 3.2 should be out soon.

@zorkow, I think he wants the nabla without an arrow, so arrowdel should be false.
@mkuron:

Your suggestion of \boldsymbol is actually pretty close, I was not previously aware that it produced upright nablas.

It should produce the same thing as the original symbol, but in bold, so if it was italic before it would be bold italic, and if was upright, it would just be bold.

The nabla does end up in <mi> MathML tags though ... while I thought it should be <mo>.

In TeX, \nabla has TeX class ORD (not OP), and so MathJax places it in <mi mathvariant="normal"> rather than <mo>.  One reason to make this choice is that MathJax tries to make its MathML work for native MathML renderers (not just for MathJax).  While MathJax uses TeX spacing rules (and would render it correctly either way), other renderers use the MathML spacing rules, and using an <mo> for nabla would cause the wrong spacing (from the TeX point of view).

\boldsymbol does not work on \alpha when the latter is defined using \(\def\alpha{\unicode{x1D6FC}}\)

The symbols in the Math Aphanumeric Symbols unicode block specify both a character and its weight and style, and the MathML standard explicitly states that these should not be affected by mathvariant attributes.  So U+1D6FC will always render as an italic lowercase alpha, regardless of the mathvariant.  It is unfortunate that lwarp redefines them in this way, as that does disable the \boldymbol functionality.  I suppose an argument could be made that \boldsymbol should modify the Math Alphanumerics as well.

Maybe we should convert this issue into a feature request along the lines of "There should be something like \mmlToken that evaluates its argument as TeX".

I can mark this as a feature request, if you want, but it is not likely to be something we pursue (though it could be a community contribution).  As I mentioned above, the contents of a token element must be text, not other MathML elements, and "evaluating ... as TeX" in MathJax means concerting to MathML.  With the definition from lwarp, \alpha would produce <mtext>𝛼</mtext>, which can't be placed inside an <mi>.  Perhaps you will say that \mmlToken should take just the text content of the processed TeX; that might be reasonable, but what do you do with \mmlToken{mi}{\frac{a^2}{b} + \sqrt{1-x}}?  Will it be <mi>a2b+1ࢤx</mi>, and does that make sense?

Thanks for the explanations.

Perhaps you will say that \mmlToken should take just the text content of the processed TeX; that might be reasonable

I guess it should be restricted to TeX elements that translate into a single Unicode code point, e.g. \nabla, \alpha, or \unicode{x1D6FC}. But given all the ambiguities, I can see why you wouldn't want to do this. Maybe I should preprocess my equations and replace all \alpha, \nabla, \unicode{...}, etc. with the corresponding Unicode characters before passing them to MathJax.

@zorkow, I think he wants the nabla without an arrow, so arrowdel should be false.

That's even easier, as it should already work now. \grad will give you a bold, upright Nabla.
For 3.2 arrowdel is false by default.
The upgreek package new in v3.2 would at least take care of upright Greek characters. It will not help with bold, though.

Maybe I should preprocess my equations and replace all \alpha, \nabla, \unicode{...}, etc. with the corresponding Unicode characters before passing them to MathJax.

That would work, but another option would be to redefine \mmlToken to do more preprocessing on the argument string.  For example, here is a configuration that would allow you to process the greek letters, \nabla, \unicode, and any other symbols you care to define.
MathJax = {
  tex: {packages: {'[+]': ['mmltoken-update']}},
  startup: {
    ready() {
      const {Configuration} = MathJax._.input.tex.Configuration;
      const {CommandMap} = MathJax._.input.tex.SymbolMap;
      const BaseMethods = MathJax._.input.tex.base.BaseMethods.default;

      const mmlSymbol = {
        nabla:  '\u2207',
        alpha:  '\u03B1',
        beta:   '\u03B2',
        gamma:  '\u03B3',
        /*  etc.  */
      };
      const mmlSymbolRE = new RegExp(`\\\\(${Object.keys(mmlSymbol).join('|')})`, 'g');

      new CommandMap('mmltoken-update', {
        mmlToken: 'MmlToken'
      }, {
        MmlToken(parser, name) {
          const kind = parser.GetArgument(name);
          const attr = parser.GetBrackets(name, '');
          const text = parser.GetArgument(name)
            .replace(mmlSymbolRE, (match, c) => mmlSymbol[c])
            .replace(
              /\\unicode\{(.*?)\}/g,
              (match, n) => String.fromCodePoint(n.charAt(0) === 'x' ? parseInt(n.slice(1), 16) : parseInt(n))
            );
          parser.string = `{${kind}}[${attr}]{${text}}`;
          parser.i = 0;
          BaseMethods.MmlToken(parser, name);
        }
      });
      Configuration.create('mmltoken-update', {
        handler: {macro: ['mmltoken-update']}
      });

      MathJax.startup.defaultReady();
    }
  }
}

you can fill in the rest of the mmlSymbol list to suit your needs.
On the other hand, you might want to redefine \vec rather than \mmlToken so that you can do the argument checking in javascript itself, rather than through TeX.  Something like
MathJax = {
  tex: {packages: {'[+]': ['vec-update']}},
  startup: {
    ready() {
      const {Configuration} = MathJax._.input.tex.Configuration;
      const {CommandMap} = MathJax._.input.tex.SymbolMap;

      const mmlSymbol = {
        nabla:  '\u2207',
        alpha:  '\u03B1',
        beta:   '\u03B2',
        gamma:  '\u03B3',
        /*  etc.  */
      };
      const mmlSymbolRE = new RegExp(`\\\\(${Object.keys(mmlSymbol).join('|')})`, 'g');

      new CommandMap('vec-update', {
        vec: 'BoldVector'
      }, {
        BoldVector(parser, name) {
          const base = parser.GetArgument(name)
            .replace(mmlSymbolRE, (match, c) => mmlSymbol[c])
            .replace(
              /\\unicode\{(.*?)\}/g,
              (match, n) => String.fromCodePoint(n.charAt(0) === 'x' ? parseInt(n.slice(1), 16) : parseInt(n))
            );
          let kind = 'mi';
          let mathvariant = 'bold-italic';
          if (base === '\u2207') {
            kind = 'mo';
            mathvariant = 'bold';
          }
          parser.Push(parser.create('token', kind, {mathvariant}, base));
        }
      });
      Configuration.create('vec-update', {
        handler: {macro: ['vec-update']}
      });

      MathJax.startup.defaultReady();
    }
  }
}

should do the trick.

I updated the code, so use the code from the GitHub comment rather than from the original email.

Thanks, your redefined \vec seems to be doing exactly what I was hoping for.


paginate_array() with total_count as option returns whole array for every page when total_count is larger than array size

I'm fetching information via a web API so I don't have or want access to the entire array of things at once. Pagination is already occurring in the API. I set total_count to what the API tells me is the total count, and pass in the array of the current page I get from the API.
The catch is, if for some reason the API's current page is larger than the page size, Kaminari does not truncate to the per amount and leaves the array alone. One case where this happens is when testing with fake data from the API.
Kaminari.paginate_array([1,2,3,4,5], total_count: 100).page(1).per(3)
Despite the per(3) this will return all 5 elements of the array as is.
There's a unit test for the number of elements being the same as the total count, and for the total count being smaller, but not for the total count being larger, which is this case.
Although the API is handling the pagination as far as the data goes, I still want to use Kaminari's paginate helper in the view for page links, so it would be nice if we could make this work as well.
References:
#516 - similar issue
https://github.com/amatsuda/kaminari/blob/master/spec/models/array_spec.rb#L173-L189 - Existing tests

I'm not sure if this is something we should be fixing as it sounds like a case that doesn't happen in production.
There are way too many use cases of PaginatableArray and even a small change will cause an unexpected issue. I'm a little hesitant to make any changes unless the use case makes a lot of sense.


chore: release main

:robot: I have created a release beep boop
auto-instrumentations-node: 0.51.0
0.51.0 (2024-10-16)
⚠ BREAKING CHANGES

auto-instrumentations-node: disable @opentelemetry/instrumentation-fs by default (#2467)

Features

auto-instrumentations-node: disable @opentelemetry/instrumentation-fs by default (#2467) (a558044)

Dependencies

The following workspace dependencies were updated

dependencies

@opentelemetry/instrumentation-pg bumped from ^0.45.1 to ^0.46.0
@opentelemetry/resource-detector-container bumped from ^0.4.3 to ^0.4.4

instrumentation-pg: 0.46.0
0.46.0 (2024-10-16)
Features

instrumentation-pg: add operation name attribute to db duration metric (#2475) (b043ffb)

Bug Fixes

instrumentation-pg: not add duplicate listeners to pg pool (#2484) (33c093d)

resource-detector-container: 0.4.4
0.4.4 (2024-10-16)
Bug Fixes

detector-container: properly detect container ID when using Podman (#2448) (ad560df)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

resource-detector-container-v0.4.4
auto-instrumentations-node-v0.51.0
instrumentation-pg-v0.46.0
:sunflower:


Failed to open autoload.php

What steps will reproduce the problem?
I install the fecmall2.4.7 by docker and i got this problem when I open the install.php website in my browser for installation.
What is the expected result?
When I open the "appfront.xxx.com/install.php" website in my browser for installation, I get an error. Checking the nginx logs found that "autoload.php" could not be opened.
I also didn't find "vendor" in the git source file
Additional info

Q
A

Fecshop version
2.4.7

Operating system
centos7

1.有问题，fecmall官网论坛发帖：http://www.fecmall.com/topic
2.安装文档: http://www.fecmall.com/doc/fecshop-guide/develop/cn-2.0/guide-fecshop-2-graphical-install.html
3.该报错参考：http://www.fecmall.com/topic/2267


i am facing this kind of problem when i am typing the live video prediction code...Please i am new to this..kindly help me out..

TypeError                                 Traceback (most recent call last)
 in ()
16 video_path = detector.detectObjectsFromVideo(camera_input=camera,
17                                 output_file_path=os.path.join(execution_path, "camera_detected_video")
---> 18                                 , frames_per_second=20, log_progress=True, minimum_percentage_probability=40)
TypeError: detectObjectsFromVideo() got an unexpected keyword argument 'camera_input'

Post your full code here.

from imageai.Detection import VideoObjectDetection
import os
import cv2
execution_path = os.getcwd()
camera = cv2.VideoCapture(0)
detector = VideoObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath(os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
video_path = detector.detectObjectsFromVideo(camera_input=camera,
output_file_path=os.path.join(execution_path, "camera_detected_video")
, frames_per_second=20, log_progress=True, minimum_percentage_probability=40)
Image prediction and video prediction code is working but this live streaming code isn't  working..please kindly help me with this..
Thank you..

Facing the same issue

Please visit the tutorial linked below on resolving this.
https://heartbeat.fritz.ai/analyze-and-visualize-detected-video-objects-using-keras-and-imageai-d84c99b0ae8e


Git push to heroku

I am trying to deploy to heroku with github actions using actions/heroku@master. I am not using docker so the standard directions for the heroku action does not really apply to me.
My current flow is:
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: login
      uses: actions/heroku@master
      env:
        HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
      with:
        args: container:login
    - name: set remote
      uses: actions/heroku@master
      env:
        HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
      with:
        args: git:remote -a my-app
    - name: push
      run: git subtree push --prefix server heroku master

It seems to login just fine and it adds the remote but then it fails when I try to push to heroku with the following message:
fatal: could not read Username for 'https://git.heroku.com': No such device or address
Which seems strange because the heroku login command should be adding my credentials to the .netrc file.

Hi,
@rickyhopkins, I'm having same problem here. Did you work around this in a clever way?

Hey @deniscostadsc,
Nope, my project does not change too often so I have resorted to a manual deploy until I can get this working.
The only workaround that I found was here which suggests adding the Heroku remote manually with the API key injected in like so:
    - name: Add remote origin
      run: |
        git remote add heroku https://heroku:${{ secrets.HEROKU_API_KEY<EMAIL_ADDRESS>secrets.HEROKU_APP_NAME }}.git
    - name: Deploy to Heroku
      run: |
        git push heroku HEAD:master -f

I did not test this myself but I can't see why it wouldn't work it just feels like a bit of a hack to me.
Hope that helps.

You don’t need the remote step so for my project, this is the solution I’m using:
  - name: Deploy to production
     run: |
       git push<EMAIL_ADDRESS>master

@karimsa,
I tried an approach similar to yours, but I keep getting errors. I even tried to put hardcode URL with secret API key (don't worry I already invalidated it :sunglasses:) and got same error bellow:
Run git push ***git.heroku.com/<heroku-project>.git master
  git push ***git.heroku.com/<heroku-project>.git master
  shell: /bin/bash -e {0}
error: src refspec master does not match any
error: failed to push some refs to '***git.heroku.com/<heroku-project>.git'

Is the branch that ran the workflow master? If not, you can try changing master to HEAD:master in the above command.

After changing my code to this:
STAGING_GIT_URL=$(git remote get-url staging | sed 's/\/git/\/heroku:${{ secrets.HEROKU_API_KEY }}@git/')
git remote set-url staging $STAGING_GIT_URL
git push staging HEAD:master

I start to get this error:
Run STAGING_GIT_URL=$(git remote get-url staging | sed 's/\/git/\/heroku:***@git/')
  STAGING_GIT_URL=$(git remote get-url staging | sed 's/\/git/\/heroku:***@git/')
  git remote set-url staging $STAGING_GIT_URL
  git push staging HEAD:master
  shell: /bin/bash -e {0}
error: The destination you provided is not a full refname (i.e.,
starting with "refs/"). We tried to guess what you meant by:

- Looking for a ref that matches 'master' on the remote side.
- Checking if the <src> being pushed ('HEAD')
  is a ref in "refs/{heads,tags}/". If so we add a corresponding
  refs/{heads,tags}/ prefix on the remote side.

Neither worked, so we gave up. You must fully qualify the ref.
hint: The <src> part of the refspec is a commit object.
hint: Did you mean to create a new branch by pushing to
hint: 'HEAD:refs/heads/master'?
error: failed to push some refs to '***git.heroku.com/<heroku-project>.git'

I think my error is more related to git that Heroku actually.
Thanx for the help so far.

Just for the sake of history, my problem seems to be caused by the state of detached of the repo on build. I'm confused why you didn't have this problem.

Yes, it was the detached state. I used a semi-hacky solution of creating a branch before pushing to github.

o/ for other people looking for an example with Heroku git push deploy on pull request with a comment /deploy https://gist.github.com/spk/7be27d8f0f9fa0264fa24417ec40c742 secrets needs to be provided and also the HEROKU_APP_NAME changed

@deniscostadsc do you have a sample yaml file for that hacky solution that you mentioned?


Update meta.yaml

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin it says I do not have write access to this recipe I am a maintainer of 🤔
Did something went wrong on feedstock creation 🤔 ?
Thanks!

We might need to update the team.

Check now that #4 went through.


About dot_map using

I found that you use dot_map instead of density map as GT to supervise your model.
In NWPUDataset() of baseddataset.py :
self.dotfileTemp = os.path.join(data_path, 'dot', '{}.png')
img, dot = self.read_image_and_gt(index)
return img, dot, attributes_pt
However, you claim in your T-PAMI paper that your GT is density map instead of dot_map.
Could you tell me the reason for this difference?

Additonally, could you tell me the reason why you did the multiplication in dot_transform :
own_transforms.tensormul(255.0)
Actually, I found in your C3F codes that only Label normalization have been adopt:
own_transforms.LabelNormalize(cfg_data.LOG_PARA)
without
own_transforms.tensormul(255.0).
In fact,
own_transforms.tensormul(255.0), own_transforms.LabelNormalize(cfg_data.LOG_PARA),
euqal to
own_transforms.LabelNormalize(cfg_data.LOG_PARA * 255).
When you out put the pred_count, you only divide LOG_PARA
pred_cnt = np.sum(pred_map)/self.cfg_data.LOG_PARA.

During the training, we use the density map instead of the dot map. The latter is only for saving the original head locations. In https://github.com/gjy3035/NWPU-Crowd-Sample-Code/blob/231620293687c82a4c1449195c3a4e7799fcd241/models/CC.py#L25, the dot map is transformed to the density map via a Gaussian conv kernel, which is an online operation for saving IO time compared with the original density file.

The density map is saved as a png file. When reading it using PIL, the pixel value is normalized [0,1] instead of [0, 255]. Thus, we need the tensormul operation.

1. During the training, we use the density map instead of the dot map. The latter is only for saving the original head locations. In https://github.com/gjy3035/NWPU-Crowd-Sample-Code/blob/231620293687c82a4c1449195c3a4e7799fcd241/models/CC.py#L25
   , the dot map is transformed to the density map via a Gaussian conv kernel, which is an online operation for saving IO time compared with the original density file.

2. The density map is saved as a png file. When reading it using PIL, the pixel value is normalized [0,1] instead of [0, 255]. Thus, we need the `tensormul` operation.

Thanks for your good job.


Newly introduced type narrowing via discriminators on .filter does not work in this case

🔎 Search Terms
"type narrowing", "discriminator"
🕗 Version & Regression Information

This never changed. It was introduced as part of TypeScript 5.5, which introduced type narrowing on .filter operations.

⏯ Playground Link
https://www.typescriptlang.org/play/?#code/C4TwDgpgBAglC8UDeAoKUAmBLAzgYwCcsBbLAOwENgB7AgLigCIZGUBfFFUSKAIQWRpMuQiXJVaDRr1Ycu4aAGEBqdNnxFSlGgQD8UxbM7doAERVD1orRL1TTRznmpkcwKBQIEKIAWQgA7rBePgA8cAA+fAB8ABQAlADcKM6u7gBmWAA2wBAEEBgwIb6Int4gAHSZOXmxAB4I0VB1FVaa4joI8IjMjPEoAPQDABZ5EAA0UNW5+YXFULhQzl4QeMBZvtTpUCZMMADaALqsKS5uUNTAowRF5X6BweWhylGmcUmnaVPZMwUA8lc8rcfAJLtdgZVprUGvAmi02mJtLQuj1DB8htcJt8arMAeD5otyMt8msNhdtrtGLFFBFTPEjowoAAjACu7hww2oLKyGGZ0EYigZgwGWHcLjJwwoYEgrimyOoYGAWBcFCywg0iNsUDABAVeSVEBwQA
💻 Code
type A = {
  discriminator: "A"
}

type B = {
  discriminator: "B"
}

type C = {
  discriminator?: "C"
}

type D = {
  discriminator?: "D"
}

const array = new Array<A | B>();
const filteredArray = array.filter(x => x.discriminator === "A")
//here, filteredArray is correctly of type "A[]"

const otherArray = new Array<C | D>();
const filteredOtherArray = otherArray.filter(x => x.discriminator === "C");
//here, filteredOtherArray is incorrectly of type "(C|D)[]" but should be "C[]"
//it only happens for optional discriminator properties

🙁 Actual behavior
In the example, filteredOtherArray is incorrectly of type "(C|D)[]"
🙂 Expected behavior
In the example, filteredOtherArray should be of type C[].
Additional information about the issue
No response

And interestingly enough, faking a filter with flatMap() does work.
const flatMappedOtherArray = otherArray.flatMap(x => x.discriminator === "C" ? x : []); // Type is C[]

Thanks a lot @Andarist for trying to explain this to me. But I still don't get it actually. Can you explain it like I'm 5, or simplify the explanation even more?
What I don't understand is this: If I directly check on discriminator being "C" in a filter, why would that inference be any different than if I just did it in an if-statement?
In other words, if I check that the discriminator is "C", wouldn't that be known for sure, like in your example? And then, how does doing that in a .filter make it different?

Take a look at this TS playground. The else branch still contains C there.

And then, how does doing that in a .filter make it different?

You might find this comment helpful. Type predicates must prove the function can't return false when called with your C.

Aha, I think I understand now.
So it's because they both have "undefined" in common, and therefore none of them can be ruled out?

But this should be fixable, right? Because in the filter function, I am not using the "else" case at all. I'm filtering only on the exact matches.

So it's because they both have "undefined" in common, and therefore none of them can be ruled out?

Not quite. It doesn't matter that D also has an optional property. Take a look at this playground.
It happens solely because it's possible to get false back from this call:
const predicateCandidate = (x: C | D) => x.discriminator === "C"
const c: C = { discriminator: undefined }
predicateCandidate(c) // false

But this should be fixable, right? Because in the filter function, I am not using the "else" case at all. I'm filtering only on the exact matches.

This would be a feature request to add something new so that filter's callback could infer from those new kinds of loose type predicates. Today filter can only infer from type predicates, type predicates have specific requirements and TS can only infer type predicates when those are met. The inference here is decouple from filter. You should think about what happens here in steps. The first step is to determine what's the type of the callback and only then filter infers based on what was resolved.

Also see https://github.com/microsoft/TypeScript/issues/15048 for discussion of the typeguards separately from the filter issue.


Update homepage copy to make "view map" more obvious

Summary
Fixes: https://trello.com/c/KPKVEeev/156-updates-to-hp-reduce-drop-offs
Detailed changes

45e9d8c8f1b4eff424a648a9499d2bd65841c9ad: changes the "Get Started" button copy to be "View Map", and changes the bottom "submit tip" section to have a second "View Map" button.
c683ca3c001c543af0faea8fff1cc6c123afcbb3: uses a <footer> element for the footer, and moves some inline styling to the CSS file
f7b544ea2b7ff113e351cd63d95128934c49d661: adds a "Submit tip" link to the footer to replace the removed section
5319f666af2a4294771473915942642c3b8a4bcd: don't specify an alt tag for the instagram icon since it is not semantically important (redundant with its label)

Some followup changes since I noticed ugly wrapping on mobile:

a3d6102bff303819f473be1307253ebda59dfed9: remove an unnecessary padding override on the footer for non-mobile (the only difference was additional horizontal padding, which doesn't make a difference on >1000px screens)
0bc33b5861f19e9fa3348eef64180dd247c4bdd6: stack the footer links vertically, rather than side-by-side, since that is friendlier on mobile screens

Screenshots


Signature: Introduce OmitSingle

This will let us sign multiple outputs while letting one of them
to be open to modifications.
Need for this comes from the settlement TXs in Flash. Settlement
may include multiple outputs for the channel funds which are signed
at the time of the micro-transaction and we may need to add a refund
output for the inputs we add to fund the fees for the externalization
of the tx.

Similar to SIGHASH_GROUP discussed for Eltoo implementations in bitcoin mailing lists, but we don't need to define a range of outputs for our use case, and it brings unnecessary complexity.


Retry when Typha autoscaler reads zero nodes from indexer

Description
When the Typha autoscaler reads zero nodes from the indexer, it will
retry node indexer List() again until the schedulable nodes are
greater than zero.
We notice an issue in a cluster where kube apiserver performance is
degraded due to malfunctioning nodes/routers. The Operator will scale
Typha up/down which causes churns to the cluster.
For PR author

[ ] Tests for change.
[ ] If changing pkg/apis/, run make gen-files
[ ] If changing versions, run make gen-versions

For PR reviewers
A note for code reviewers - all pull requests must have the following:

[ ] Milestone set according to targeted release.
[ ] Appropriate labels:

kind/bug if this is a bugfix.
kind/enhancement if this is a a new feature.
enterprise if this PR applies to Calico Enterprise only.

Interesting what you've done here. It isn't really what i was thinking, sorry I wasn't clear. I meant actually do a client call to get the nodes, instead of reading them from the indexer.
@caseydavenport WDYT?
My concern is that we can't actually scale to zero typhas, though of course if you're scaling to zero what is the point but I can imagine a few cases where that might be able to happen but then where is the operator running?

Scaling Typha to 0 is found near the start of the Operator so there could be a race condition where node and typha informers are not synced. The fix for that is in https://github.com/tigera/operator/pull/1581. Thanks for looking into this @tmjd.


Refactor tags to skill

Refactor code in Storage, Ui, model and Command to reflect change from tag to skill
Update add command to accept s/ prefix for skills
Update test cases to show change to skills
Minor update to UI to reflect UI mockup
#52
#49

Codecov Report

Merging #62 (05d2495) into master (887e479) will not change coverage.
The diff coverage is 83.33%.

@@            Coverage Diff            @@
##             master      #62   +/-   ##
=========================================
  Coverage     72.18%   72.18%
  Complexity      399      399
=========================================
  Files            70       70
  Lines          1233     1233
  Branches        125      125
=========================================
  Hits            890      890
  Misses          311      311
  Partials         32       32

Impacted Files
Coverage Δ

...ava/seedu/linkedout/logic/commands/AddCommand.java
100.00% <ø> (ø)

...rc/main/java/seedu/linkedout/ui/ApplicantCard.java
0.00% <0.00%> (ø)

...ava/seedu/linkedout/model/util/SampleDataUtil.java
20.00% <14.28%> (ø)

...c/main/java/seedu/linkedout/model/skill/Skill.java
80.00% <80.00%> (ø)

...eedu/linkedout/logic/parser/EditCommandParser.java
92.30% <83.33%> (ø)

...ava/seedu/linkedout/model/applicant/Applicant.java
97.61% <90.90%> (ø)

...va/seedu/linkedout/logic/commands/EditCommand.java
97.01% <100.00%> (ø)

...seedu/linkedout/logic/parser/AddCommandParser.java
100.00% <100.00%> (ø)

...n/java/seedu/linkedout/logic/parser/CliSyntax.java
83.33% <100.00%> (ø)

.../java/seedu/linkedout/logic/parser/ParserUtil.java
97.22% <100.00%> (ø)

... and 2 more

Continue to review full report at Codecov.

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


how can I catch unhandled exception on the ReceiveAsync(context)

         public async Task ReceiveAsync(IContext context)         {             throw new Exception();         }
when exception occurs on the IActor.ReceiveAsync(IContext context)
how can I catch this exception or message?
context.Message deliver only restarting, no reason
thanks

The reason is propagated to the supervisor of the actor.
This means the parent actors child supervisor will get the reason and decide what to do, restart, ignore etc.
This is a heritage from Akka, which I am not so sure we should stick to in the long run

If the failed actor is a child of some parent, the parent actor will receive the Failure system message, which has the reason. If the failed actor belongs to the root context, the supervision strategy will be getting the reason, as Roger wrote.


Continuous Delivery (CD) dashboard inaccurately displays the bundle count 0/0

Setup

Rancher version: 2.7.4
local cluster: v1.24.11+rke2r1
fleet-102.0.0+up0.6.0

Describe the bug
Continuous Delivery (CD) dashboard inaccurately displays the bundle count
To Reproduce

Create gitrepo with the following example:

apiVersion: fleet.cattle.io/v1alpha1
kind: GitRepo
metadata:
  name: kustomize
  namespace: fleet-local
spec:
  branch: SURE-6398
  insecureSkipTLSVerify: false
  paths: []
  repo: https://github.com/skanakal/fleet-experiments.git

Result
Fleet dashbaord shows incorrect bundle count 0/0
Expected Result
Bundle count  1/1
Screenshots
bundle count 0/0

but bundle is active:

Additional context
Internal ref: https://jira.suse.com/browse/SURE-6398

The issue was resolved by reorganizing the directory structure, specifically by moving all the files from the root directory to the "mans" directory. The updated directory structure is as follows:
mans
├── base
│   ├── health.json
│   ├── helloworld.json
│   └── kustomization.yaml
├── Chart.yaml
├── fleet.yaml
├── kustomization.yaml
└── overlays
    └── lab
        ├── health.json
        └── kustomization.yaml

Duplicate of #9137 which is already on radar for Q3 unless I'm misreading the related internal reference. If so, perhaps both items can be handled in one ticket. Closing.


Release 0.2.3

Changes since version 0.2.2:

Updated to Kafka 2.1
Use single option to configure MongoDB, enabling MongoDB srv connection. Fixes #46, #51.

We need this PR to be merged in order to use a newer version of confluentinc/cp-kafka-connect-base that has fewer vulnerabilities.


TwineTextPlayer Formatting Issues

I've been attempting to format story layout using the TwineTextPlayer and I haven't had much luck controlling the positioning and alignment of text. I've tried using all of the alignment controls, and none of them are working as I'd expect them to, except for padding. I also can't seem to get horizontal text overflow to wrap. Oftentimes I mess with the Content Size Fitter, which ends up irreversibly shifting the right border of my text to the far left, forcing me to revert the prefab.
Any idea what I could be doing wrong, or if this is a bug?
I should also mention I'm getting the following warning under the Content Size Fitter script:
"Parent has a type of layout group component. A child of a layout group should not have a Content Size Fitter component, since it should be driven by the layout group."

The TwineTextPlayer is really just a demo and not a full fledged Twine-like
player. That is somewhat beyond the scope of this project (which is more
geared towards custom UIs). It hasn't been tested for flexibility or
customization but sort of provided "as-is". It is made with Unity UI though
so anything that framework supports should be possible with it - I suggest
you look at documentation on scrolling elements because that is usually
where the counter-intuitive stuff happens. Sorry I can't be more helpful
than that...

Well thanks anyway for the response and a great package nonetheless


Not working with Hot Chocolate 14

Hot Chocolate v14.0.0 have breaking changes in v14 for FairyBread v10.0.0,
Created a fork PR

Thanks @mormegill , can you let me know if 11.0.0-rc.1 works for you and if so I'll publish 11.0.0 tomorrow!

I’ll try to get it tested. However, we might want to use v14.1.0 of HC
asap.
On Mon, 25 Nov 2024 at 12:47, Ben McCallum @.***> wrote:

Thanks @mormegill https://github.com/mormegill , can you let me know if
11.0.0-rc.1 works for you and if so I'll publish 11.0.0 tomorrow!
—
Reply to this email directly, view it on GitHub
https://github.com/benmccallum/fairybread/issues/94#issuecomment-2497791655,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJCCFEBYYTLKXATZLRJQDT2CME5FAVCNFSM6AAAAABQFXSKHSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOJXG44TCNRVGU
.
You are receiving this because you were mentioned.Message ID:
@.***>

Thanks :)
Re: 14.1, any particular reason why? Would it need a new/corresponding FairyBread release?

Nope, I just thought it would match with the latest version but there was
no relevant changes in 14.1 and they are already working with 15.
On Mon, 25 Nov 2024 at 13:20, Ben McCallum @.***> wrote:

Thanks :)
Re: 14.1, any particular reason why? Would it need a new/corresponding
FairyBread release?
—
Reply to this email directly, view it on GitHub
https://github.com/benmccallum/fairybread/issues/94#issuecomment-2497867381,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAJCCFHPOZBAB6JEJIH6FD32CMIZPAVCNFSM6AAAAABQFXSKHSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIOJXHA3DOMZYGE
.
You are receiving this because you were mentioned.Message ID:
@.***>

Build, run and test 11.0.0-rc.1 ok with HC 14.0.0!


Update communities call to action

[x] I am very sure this PR could not affect performance.

As discussed in the #community-docs channel in Slack.


Couldn't render this component

I have followed all the steps.
import Lightbox from 'react-images';
in my render function:
render(){
<Lightbox isOpen={this.state.lightbox} onClickImage={()=>this.openLightbox()} images={IMAGES} onClose={()=>this.onClose()} onClickPrev={()=>this.gotoPrevious()} onClickNext={()=>this.gotoNext()} />
}
output is like:
react-empty: 119
i dont know what is the issue.. please help me.

Please go into the Gitter chat for help troubleshooting your code.

@strangewolf Hello, did you have solve this problem？


[Auto-Complete] Hide the 'more info' button

Will hide for now until we rethink the info we want to provide there.

@RabebOthmani  any particular reason why this feature needs to be hidden ? I personally use it to discover the documentation for queries ie it shortens the journey of having to look for documentation related to a particular query. My recommendation is that we add telemetry for this feature and see the current usage metrics around it

@adhiambovivian The button only works to discover documentation for ~1% of Graph URLs.  If the user happens to try it on a URL that does work, it sets the user up with the false expectation that it will work for all URLs and then they will find that it doesn't work for almost everywhere.

@thewahome  as per my comment above, I want us to hide the button temporarily until we have a complete picture of what it should look like and do.
Currently, as an example if I have https://graph.microsoft.com/v1.0/me/activities and I click on the info button nothing happens. I can see that you logged an issue to surface the documentation  . I'd rather we ensure we have the documentation before setting false expectations for the user.

I'm not a fan of pulling a feature in production especially without knowing if anyone leverages it.  At this point this has been out for a while.  How about treating it like an experiment and adding indication that this is experimental and may not always work reliably.  Then as this is now live prioritize above any other feature work adding in the telemetry to validate the experiment. Then you can determine that the feature usage for this is so low we are deprecating it quickly or not.  Also gives anyone using this regularly at this point indication we might deprecate.
Does it work for the top 50-100 most used urls?

It only works for urls that happen to have been used in samples, and if the sample includes a doc URL.
I understand the reluctance to remove a feature in prod, but it is not clear to me what this feature is for. As far as I know it was never spec'd out and discussed by the team. I would have expected us to add doc links to resource explorer as is currently done in the samples tree.  Taking up real-estate in the url textbox is less than ideal considering how limited the space is already.
If we really do want to keep it, can we at least fix the overlapping border when we hover over the (i) symbol. It currently appears broken.

@darrelmiller  I've added telemetry to help us see how useful it is so that it is easy to make that decision.
I can work on the border so that it doesn't overlap the way it does

@thewahome Great, thanks.  Can you help me understand how the telemetry is setup to enable our decision as to whether this is the best place to expose documentation links?

@darrelmiller there is telemetry collected when someone clicks the more info button that launches the popup. The click together with a sanitised URL is collected so that we can know what URLs make people curious about the other information available

@ddyett  when on Resource Explorer and I select a query, the query box gets populated and the button is disabled. If I'm using autocomplete and adding anything after /me for example , the button is disabled and not doing anything

Hi @adhiambovivian , I'm not clear on the reason why this ticket moved to parked. Can you please help me out? This is part of the auto-complete set of work and it's important to be done to be able to ship auto-complete.

Can we please see the telemetry on this? This is a confusing experience and the behavior of the button is inconsistent (sometimes nothing happens when I click on the info icon).

We will do #2150 to confirm how the button is doing


Can't Launch Exhibitera Apps in stand-alone mode: "GET /definitions//load HTTP/1.1" 404 Not Found

Hi,
I'm running into a bug when using Exhibitera Apps in standalone mode.  When I go to "Launch app" It appears the definition json file is not being referenced when it is to be loaded (last line in output below).
INFO:     <IP_ADDRESS>:36262 - "POST /files/thumbnailVideoFromFrames HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:36278 - "GET /definitions/media_player/getAvailable HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:46732 - "GET /app.html HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:46742 - "GET /css/bootstrap_5_3/bootstrap.min.css HTTP/1.1" 304 Not Modified
INFO:     <IP_ADDRESS>:46732 - "GET /js/app.js HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:46744 - "GET /js/jquery-3.6.1.min.js HTTP/1.1" 304 Not Modified
INFO:     <IP_ADDRESS>:46770 - "GET /js/platform.js HTTP/1.1" 304 Not Modified
INFO:     <IP_ADDRESS>:46754 - "GET /js/bootstrap_5_3/bootstrap.bundle.min.js HTTP/1.1" 304 Not Modified
INFO:     <IP_ADDRESS>:46732 - "GET /js/exhibitera_app_common.js HTTP/1.1" 304 Not Modified
INFO:     <IP_ADDRESS>:46732 - "GET /getDefaults HTTP/1.1" 200 OK
INFO:     <IP_ADDRESS>:46732 - "GET /definitions//load HTTP/1.1" 404 Not Found

The last command should probably be something like "GET /definitions/.json/load.  Note that the preview in the setup screen does work, just the actual launching of the app fails.  I noted this with both InfoStation and Media Player, and have not tested the others.

Yup, it turned out to be a PEBCAK error -- I selected the definition, but I didn't actually save the settings after selecting the correct definition.  (From a UI standpoint, it would be good if there was some indication that there has been a config change that needs to be saved when you try to launch the app.)
Sorry for the false alarm!

Glad it was an easy fix! I agree that the save button should appear only once you have selected something.


Color Accuracy

I'm not sure if this is something that can be improved or not, but when showing white it is more blue than white.
I'm running WS2812B LED strips using a Leonardo Tiny Atmega32U4 as a LS100 controller using the video feed in icue. The output seems to be biased towards blue.
This could be an issue with icue or maybe color accuracy within the code?
Is there something that could be tweaked or calibrated that could fix this?

OS: Windows 10
Board: Arduino Leonardo tiny link
Version of IDE: Arduino IDE 1.8.15 and V2.0
Version of CLP: 0.14.2
Sketch: LS100

I can upload some control photos later show back wall and monitor with all white , blue, red, green, etc if it will help to show how the LED represent each color?
I'm really impressed with it, so a big thanks for all the effort everyone has put into it already.

It is a common problem for cheap LEDs, however you can correct it using some settings in arduino. See this FastLED-Color-Correction guide. You need to call the correction function in the arduino setup function.

Thanks Legion. I found that .setTemperature (Tungsten40W) was required to get white close to white as the color correction didn't seem to improve it at all.


Add DeviceArray class

This PR introduces DPPYDeviceArray class in Numba_dppy. This will give users:

class to represent arrays in device.
Will allow Numba_dppy to implement interface Numba requires for functionality such as @vectorize. See here.

@reazulhoque please describe what this class should do?

@PokhodenkoSA This class represents array on dppy device. Can you please elaborate on what information you want me to add? The class has comments about args and description is given in the descripton of the PR.

The PR description needs improvements e.g. what does “arrays in device” mean? Please use SYCL terminology as far as possible. Also, the link to numba code is not useful to a general reviewer. The exact design goals and requirements need to be spelled out.

Closing this PR as dppy.kernel now supports arbitrary array with __sycl_usm_array_interface__.


Event handler doesn't work

issue with this code https://github.com/MicrosoftDocs/windows-dev-docs/blob/docs/uwp/security/code/token-broker/MainPage.xaml.cs
Description: Currently, the code includes a SignOutButton_Click event handler, but it doesn't perform the sign-out functionality.

Merged the PR, and I'm creating a work item to update the sample to remove the use of RoamingSettings. Thanks for your contribution!


RabbitMq Message Expiration (TTL)

Fixed a typo.

Current coverage is 99.79% (diff: 100%)

Merging #45 into master will not change coverage

@@             master        #45   diff @@
==========================================
  Files            18         18
  Lines           485        485
  Methods          18         18
  Messages          0          0
  Branches         18         18
==========================================
  Hits            484        484
  Misses            1          1
  Partials          0          0

Powered by Codecov. Last update a8cfae9...874b6e3


Why is there a cordless update prompt here?

Why do you need this prompt?

That's a leftover bug from Cordless. Its on the list of issues to fix 👍


frequency in the profile

Would be possible to add declarations of different frequencies and CR/SF parameters in each profile? In our country, we use these parameters other than generally agreed. This would allow us to quickly change them when we are near the border or when traveling to another country. It would be very useful for us and maybe also in other countries, for example in the UK.

It's already working ! Thanks a lot! 73!

great! tell me if this is working good for you ;)

Yes, thank you, everything works great. A very useful feature. We are very grateful.
I only suggest adding information on the start screen (EU/PL/UK icon) which system is currently active - there will be no need to check in the menu. It probably won't fit on the main screen. BTW... I made a small modification to the previous SW by adding a few lines in tracker.config.json and configuration.cpp and connected a microswitch to GPIO2. When checking the pin status in void.setup(), I selected the required standard. A simple and effective solution, but now it is no longer needed 😊. In any case, the icon that I also added to the start screen was very useful to me at that time.
73! Krzysztof SP9SVH

tell me about the icon.... maybe we could add some kind of startup info screen before running normally
like a status at boot up ?

Maybe "icons: it's not good statment.. but I mean about an additional line between (tracker) and Richonguzman / CA2RXU in format for example:
   (tracker)

Standard: [EU] [UK] [PL]
Richonguzman / CA2RXU
In my opinion  it shuld be enough.

it is not about choosing a standard, but only about presenting  information what standard is currently set.

I have an idea :)
To show the current standard (EU-PL-UK) we can use the place where APRS symbol is located on the main screen.
In case when bluetooth is disconected :
The current APRS symbol and information about the current standard EU/PL/UK will be shown alternately.
In case when bluetooth is conected :
Bluetooth symbol and standard symbol will be shown altrernately - here, showing the APRS symbol makes no sense because it is determined by the connected device - (in my case aprsdroid).
For that is needed:

to add to custom_characters.h three new icons [EU/PL/UK] - (that's already done)
to modify display.cpp so that appropriate icons are selected based on the current standard and displayed according to the assumptions above. ( I'm working on that).
What do You think about such solution ?

Thanks a lot. The frequency standard is already visible on the screen during start, but there is one problem... It's always "EU" after restart.
The setings is not remembered :( .  The callsign setting does not change after restart, but the frequency setting returns to the default value.

this is odd the Freq loads right and stays as the last used freq...  but you are right, the Bootup message does not update... will fix this.

I have uploaded and tested. Now it works great. At this stage the software is already brilant !
Thanks a lot for your effort.
BTW. I have added to my tracker train icon from issue #52 by gersey  - very nice lokomotive. I often travel by train :)

Train and yagi added
please check them out ;)

Already tested. It works as needed :)
I am considering an additional tracker mod but I am not sure if it is worth the extra effort as it would only be useful in a limited area near the border where access to digi gates operating at different frequencies is likely. in this case, the tracker listens on the primary frequency and after sending the beacon, it listens for a short while on the second frequency and transmits the same beacon there. After that it returns to the basic frequency. This functionality can currently be set in the DL9SAU software. This functionality is not needed for majority of users, but maybe it could be added later, when other more important functionalities are already introduced. It's an idea only :)

its a good idea, but has some problem, when changing to different freqs , it could lost some packets sended to him....
this is why the change freq  is useful , but we cant be changing all the time the freq and expect to receive all the messages and packets sended to us.
although its a good idea as a solution for having Dif freq in nearby countries

Thank you for the fast reponse. Of course, I am aware of these flaws. The battery will also be discharged faster... If someone wants to use the tracker just to track their position, this may be acceptable, but if want to receive messages etc , this is obviously problematic.
I thought of it as an option to consciously use in a specific situation. But as I wrote, this is only a functionality useful for a very limited number of users, so I think it will only remain in the area of ideas :)

lets save this idea for the future, maybe we could add this as a special feature later, meanwhile I will close this ;)

Hi Ricardo,Thanks a lot for your solution for frequency issue, it's a
big gift for hams in Poland and probably not only. Of couse' it's good
decision to close this topic - all problems at this stage are sucessfuly
solved. In the meantime I contacted Damian SQ2CPA and we agreed to
cooperate in testing his solutions for the igate/digi software.
If You need any support  during the tests  or anything else related to
your project write  to me please  @.***
Greetings from Poland Krzysztof (Chris) SP9SVH
W dniu 2024-03-05 23:59, Ricardo Guzman (Richonguzman) napisał(a):

lets save this idea for the future, maybe we could add this as a
special feature later, meanwhile I will close this ;)
--
Reply to this email directly, view it on GitHub [1], or unsubscribe
[2].
You are receiving this because you authored the thread.Message ID:
@.***>

Links:
[1]
https://github.com/richonguzman/LoRa_APRS_Tracker/issues/48#issuecomment-1979778975
[2]
https://github.com/notifications/unsubscribe-auth/AJWIYTNW64CJ47CKCDIKYJTYWZE35AVCNFSM6AAAAABATZDY7SVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZZG43TQOJXGU
--=_06188813cf910706b3774cd1f31f3b97
Content-Type: multipart/related;
boundary="=_2c9a2165fab720a30c112c550cb6fce5"
--=_2c9a2165fab720a30c112c550cb6fce5
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8

Hi Ricardo,Thanks a lot for your solution for frequency issue, it's a bi=
g gift for hams in Poland and probably not only. Of couse' it's good decisi=
on to close this topic - all problems at this stage are sucessfuly solved. =
In the meantime I contacted Damian SQ2CPA and we agreed to cooperate in test=
ing his solutions for the igate/digi software.
If You need any support  during the tests  or anything else rel=
ated to your project write  to me please
Greetings from Poland Krzysztof (Chris) SP9SVH=

W dniu 2024-03-05 23:59, Ricardo Guzman (Richonguzman=
) napisa=C5=82(a):

lets save this idea for the future, maybe we could add this=
 as a special feature later, meanwhile I will close this ;)
—Reply to this email directly, view it on GitHub, or unsubscribe.Y=
ou are receiving this because you authored the thread.Message ID: <richonguzman/LoRa_APRS_Tracker=
<EMAIL_ADDRESS>com>

--=_2c9a2165fab720a30c112c550cb6fce5
Content-Transfer-Encoding: base64
Content-ID: @.***>
Content-Type: image/gif;
name=blocked.gif
Content-Disposition: inline;
filename=blocked.gif;
size=118
R0lGODlhZAAyAIAAAPrOzgAAACH5BAAAAAAALAAAAABkADIAAAJNhI+py+0Po5y02ouz3rz7D4bi
SJbmiabqyrbuC8fyTNf2jef6zvf+DwwKh8Si8YhMKpfMpvMJjUqn1Kr1is1qt9yu9wsOi8fksvls
KwAAOw==
--=_2c9a2165fab720a30c112c550cb6fce5--
--=_06188813cf910706b3774cd1f31f3b97--