Image Video Preview on Windows app

Dear all,
we had seen that from 3.7.0 version of windows application all preview message not see

Dear all, we had seen that from 3.7.0 version of windows application all preview message not see

Try recent 3.7.9 version

Please try the newest version, but it seems like a Rocket.chat issue and not an issue on the desktop app.
Please provide more information about it.

I cant understand what exactly is the message preview that you are talking about. The images don't show on the chat?
Please give some screenshot samples.

See the attached file, when we sent on windows desktop all image or video not see preview.
DZ

See the attached file, when we sent on windows desktop all image or video not see preview. DZ

I think that attached files are not showed here. I tried sending image from windows and from mac and seeing in the windows desktop application and all work. I will need more information to help to fix it.

@furuzi84 we need more info about your problem. Please provide some screenshots.


chore: Telemetry reviews fixes

This PR...
Changes

add event names into constant

Fixes

How to test it

Screenshots

Checklist

[ ] tested locally
[ ] added new dependencies
[ ] updated the docs
[ ] added a test

Created an issue to make EventErrors into readable format https://github.com/sindresorhus/electron-unhandled/issues/26


Display the actual available versions for macOS

Since they are currently not up-to-date and only 3.36.3 and 3.34.7 are available for macOS instead of 3.38.0 and 3.34.8.
Fixes #1258.

@agiudiceandrea closing? It seems this has been implemented...


[BUG] Calling getMillis() in Painless script is slow

Describe the bug
We had a sorting script that called getMillis() on a date field. We noticed that the script was unusually slow for queries that matched a large number of results, and determined that getMillis() was the bottleneck. Removing that call resulted in a 10-fold speed-up.
I found this bug report for ElasticSearch 6.5.0, which looks very similar to what I ran into. It says that the bug was fixed; maybe the fix never made it into OpenSearch, maybe the bug came back. https://github.com/elastic/elasticsearch/issues/35754
I had good results with the work-around suggested in that report (replacing getMillis() with toInstant().toEpochMilli()).
To Reproduce
On an index with a datetime field called originalDate, and a large number of documents (a million or more), run this search:
{
  "_source": ["id","originalDate"],
  "sort": {
    "_script": {
      "type": "number",
      "order": "asc",
      "script": {
        "source": "return doc[\"originalDate\"].value.getMillis();"
	  }
	}
  }
}

Host/Environment:
Amazon OpenSearch service v1.0

Would love a PR, @mbaranczak, thank you!

@mbaranczak interesting, here is the getMillis() implementation, I believe this slowness comes from the logDeprecatedMethod calls?
    @Deprecated
    public long getMillis() {
        logDeprecatedMethod("getMillis()", "toInstant().toEpochMilli()");
        return dt.toInstant().toEpochMilli();
    }

@dblock this method is deprecated and should not be used in general, should such deprecated methods in 2.0?

Is it really necessary to deprecate/remove this method? If getMillis() is just an alias for toInstanct().toEpochMilli(), what's the harm in keeping it?
And here's another thing: since I'm using OpenSearch in a managed environment, I don't have access to the server log (or wherever this deprecation warning gets written to). So I don't even see the warning. In my use case, logDeprecatedMethod does nothing useful, and just wastes CPU time. Would it make sense to add a field to the response for deprecation warnings (and possibly other warnings)?

Is it really necessary to deprecate/remove this method? If getMillis() is just an alias for toInstanct().toEpochMilli(), what's the harm in keeping it?

@mbaranczak the deprecation story goes back to Elasticsearch, this is what Opensearch inherited.

Would it make sense to add a field to the response for deprecation warnings (and possibly other warnings)?

I believe you should get them inside Warning response header: https://github.com/elastic/elasticsearch/pull/55941/files

@reta I'm not seeing any warnings in the headers, either. Are the warning headers always on, or is there some switch to turn them on and off?

Is it really necessary to deprecate/remove this method? If getMillis() is just an alias for toInstanct().toEpochMilli(), what's the harm in keeping it?

I don't know why it was deprecated in Elasticsearch. I suppose nobody wants to keep methods that don't actually do anything other than call other methods that do the same thing around. Major versions have other breaking changes, and I think the right thing to do here would be to remove the deprecated method from 3.0 (main). This way it will break hard in a major upgrade instead of causing a silent performance regression. Want to PR it if you agree?

@reta I'm not running my own server, I'm using the Amazon OpenSearch Service. No, I don't see any way to change the log4j properties.


Error: Building package boost-math:x86-windows failed with: BUILD_FAILED

Hello,
While trying to install package cpprestsdk I faced this issue:
Please ensure you're using the latest portfiles with .\vcpkg update, then
submit an issue at https://github.com/Microsoft/vcpkg/issues including:
Package: boost-math:x86-windows
Vcpkg version: 0.0.101-2018-01-14-c1d0597003fbf0b98dd6e6bfb1b86691258140da
I'm already using an up-to-date version of vcpkg.

same here

same here

Could you pull master and try again? I installed it successfully with VS2017 15.9.11 and VCPKG latest source. Please open a new issue if this is still a problem for you.

PS F:\b\vcpkg> .\vcpkg.exe install boost-math
The following packages will be built and installed:
/ * boost-array[core]:x86-windows
/ * boost-assert[core]:x86-windows
/* boost-atomic[core]:x86-windows
/* boost-bind[core]:x86-windows
/* boost-build[core]:x86-windows
/* boost-compatibility[core]:x86-windows
/ * boost-concept-check[core]:x86-windows
/* boost-config[core]:x86-windows
/* boost-container[core]:x86-windows
/* boost-container-hash[core]:x86-windows
/* boost-conversion[core]:x86-windows
/  * boost-core[core]:x86-windows
/  * boost-detail[core]:x86-windows
/  * boost-function-types[core]:x86-windows
/  * boost-fusion[core]:x86-windows
/  * boost-integer[core]:x86-windows
/  * boost-intrusive[core]:x86-windows
/  * boost-iterator[core]:x86-windows
/  * boost-lambda[core]:x86-windows
/  * boost-lexical-cast[core]:x86-windows
/    boost-math[core]:x86-windows
/  * boost-modular-build-helper[core]:x86-windows
/  * boost-move[core]:x86-windows
/  * boost-mpl[core]:x86-windows
/  * boost-numeric-conversion[core]:x86-windows
/  * boost-optional[core]:x86-windows
/  * boost-predef[core]:x86-windows
/  * boost-preprocessor[core]:x86-windows
/  * boost-range[core]:x86-windows
/  * boost-regex[core]:x86-windows
/  * boost-smart-ptr[core]:x86-windows
/  * boost-static-assert[core]:x86-windows
/  * boost-throw-exception[core]:x86-windows
/  * boost-tuple[core]:x86-windows
/  * boost-type-traits[core]:x86-windows
/  * boost-typeof[core]:x86-windows
/  * boost-utility[core]:x86-windows
/  * boost-vcpkg-helpers[core]:x86-windows
Additional packages (*) will be modified to complete this operation.
Starting package 1/38: boost-vcpkg-helpers:x86-windows
Building package boost-vcpkg-helpers[core]:x86-windows...
/......
Building package boost-math[core]:x86-windows... done
Installing package boost-math[core]:x86-windows...
Installing package boost-math[core]:x86-windows... done
Elapsed time for package boost-math:x86-windows: 1.23 min
/
Total elapsed time: 4.622 min


imageChat support async ？

About the support for asynchronous REST API in the imagechat interface.

Some cloud service providers offer REST APIs for tasks like text-to-image conversion or image-to-video conversion, similar to the functionality provided by Stability AI, where submissions are handled asynchronously, with users then querying the results through a GET method. Will future ImageClient or VideoClient libraries incorporate such functionality?

The following is a preliminary example of an ImageClient interface implemented using an asynchronous REST API, where its functionality and design have not yet reached a polished state:
@Override
	public ImageResponse call(ImagePrompt imagePrompt) {
		QWenImageResponse taskImageResponse = this.retryTemplate.execute(ctx -> {
			ImageOptions imageOptions = imagePrompt.getOptions();

			String instructions = imagePrompt.getInstructions().get(0).getText();

			QWenImageRequest imageRequest = new QWenImageRequest(new Input(instructions,null), null);
			ResponseEntity<QWenImageResponse> responseEntity = this.dashCopeService.createQwenImageTask(imageRequest);
			return responseEntity.getBody();
		});
		try {
			if(taskImageResponse.output().taskStatus() == StatusStatus.PENDING) {
				logger.info("Task submission successful, queuing required, sleeping for 3 seconds");
				Thread.sleep(3000);
				logger.info("Sleep completed, querying task results!");
			}
		}catch (Exception e) {
			logger.error(e.getMessage(),e);
		}
		return this.retryTemplate.execute(ctx -> {
			ResponseEntity<QWenImageResponse> responseEntity = this.dashCopeService.findImageTaskResult(taskImageResponse.output().taskId());
			QWenImageResponse resultImageResponse = responseEntity.getBody();
			if(resultImageResponse.output().taskStatus() != StatusStatus.SUCCEEDED) {
				TaskMetrices taskMetrices = resultImageResponse.output().taskMetrices();
				logger.info("Task still in progress; out of {} tasks, {} tasks have been completed. Please wait.",taskMetrices.total(),taskMetrices.succeeded());
				throw new DashCopeApiException("Task is still generating, please try again later.");
			}
			logger.info("Query results complete, packaging data");
			return convertResponse(resultImageResponse);
		});
	}

	private ImageResponse convertResponse(QWenImageResponse qwenImageResponse) {
		if(qwenImageResponse == null) {
			logger.warn("No image response returned for request: {}",qwenImageResponse);
			return new ImageResponse(List.of());
		}

		List<ImageGeneration> imageGenerationList = qwenImageResponse.output().results().stream().map(entry -> {
			return new ImageGeneration(new Image(entry.url(),null));
		}).toList();
		return new ImageResponse(imageGenerationList);
	}

I encountered this when looking into midjourney and decided not to tackle it at the time. However, StabilityAI does offer an API that does not require you to poll back for the completed.   I guess we will tackle this when there is demand for a specific model that behaves this way.


Translate as in where clause

I have two class:
public abstract class Conversation
{
    public int Id { get; set; }
}

public class PrivateConversation : Conversation
{
    public ICollection<User> Users { get; set; }
}

In DbContext, there are DbSets:
public DbSet<Conversation> Conversations { get; set; }
public DbSet<PrivateConversation> PrivateConversations { get; set; }
public DbSet<User> Users { get; set; }

Which generates two tables: Conversations and Users.

PrivateConversations are saved in table Conversations

Now an error occurred with query:

// For some reason, I can only query `db.Conversations`, can not access `db.PrivateConversations`
var conversations = db.Conversations
  .Include(t => (t as PrivateConversation).Users)
  .Where(t => t is PrivateConversation)
  .Where(t => (t as PrivateConversation).Users.Any())
  .ToList();

Told me that in Users.Any(), Users is null.
I am very confused. How can I query all private conversations with user in it?
Additional info:
packages I usesd:
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SQLServer" Version="2.2.6" />

runtime: .NET Core 2.2
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.2</TargetFramework>

@Anduin2017 EF translates  .Where(t => ((PrivateConversation)t)... but not  .Where(t => (t as PrivateConversation)....

Thanks! That really solves!

Ok. I gotta be really happy if you can fix this and translate the as grammar.

Can you tell me where I can add this new grammar?

@smitpatel Since you added good-first-issue here can you point @SARAVANA1501 in the right direction to submit a PR for this?

While code is similar in various place, we can start with one location and update at all location once the structure is define.
https://github.com/aspnet/EntityFrameworkCore/blob/b7df776b0e1b2d94da48b0471c657fda8dbe8f9b/src/EFCore/Query/Internal/NavigationExpandingExpressionVisitor.ExpressionVisitors.cs#L90-L102
Above code basically unwrap a convert node and gives the converted type. Similar to above processing it needs to identify TypeAsOperation and then unwrap it to identify converted type and innerExpression. It should be added as extension method so all places can easily utilize it. So it goes this way.

Expression
Inner
ConvertedType

a.Property
a
null

((T)a).Property
a
T

(a as T).Property
a
T

This is already fixed in master branch in https://github.com/dotnet/efcore/pull/19377


compile: make container needs higher version docker for docker build

when use the old version docker, do the make container will hit the problem as follows:
docker build images/federation-v2 \
		-t quay.io/kubernetes-multicluster/federation-v2:v0.0.1-547-ga26ab8d
docker: "build" requires 1 argument.
See 'docker build --help'.

Usage:	docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile
make: *** [container] Error 1

details:

docker with 1.11.1 is not work for docker build xxx -t xxx:tag
docker with 1.12.0 is ok both for docker build xxx -t xxx:tag and docker build -t xxx:tag xxx

we should modify this makefile or comment the docker version?
@marun @shashidharatd

Feel free to propose a doc change to the dev guide.  I think this is rarely an issue for contributors because recent docker is pretty much mandatory for kubernetes.

sure. will do the work later.


[BotBuilder] TeamsActivityHandler class does not match C# counterpart

Versions
What package version of the SDK are you using.
<EMAIL_ADDRESS>What nodejs version are you using
12.16.1
What browser version are you using
-
What os are you using
Windows 10 Pro
Describe the bug
Give a clear and concise description of what the bug is.
The JavaScript implementation of TeamsActivityHandler contains different method's signatures compared to C#.
The methods in JavaScript uses the prefix handle while C# uses on.
To Reproduce
Steps to reproduce the behavior:

Clone BotBuilder-DotNet
Navigate to /libraries/Microsoft.Bot.Builder/Teams/
Open TeamsActivityHandler.cs
Scroll down to line 116
Clone BotBuilder-JS
Navigate to /libraries/botbuilder/src/
Open teamsActivityHandler.ts
Scroll down to line 221
See the differences

More differences are present between the files.
Expected behavior
Give a clear and concise description of what you expected to happen.
I expect TeamsActivityHandler in JavaScript to use the same implementation as in C#.
Screenshots
If applicable, add screenshots to help explain your problem.
Disparity in the onSignInInvoke method between C# and JavaScript

handleTeamsSignInVerifyState vs OnTeamsSignInVerifyStateAsync

handleTeamsO365ConnectorCardAction vs OnTeamsO365ConnectorCardActionAsync

Additional context
Add any other context about the problem here.
C# Virtual Assistant overrides the OnTeamsSignInVerifyStateAsync method while TypeScript Virtual Assistant overrides the handleTeamsSignInVerifyState method.

Thanks for filing this @Batta32! This is by design, the initial ActivityHandler implementations in .NET and TypeScript differed to try and address a lack of idiomaticness perceived in TypeScript. This difference manifested in the event listener-derived TypeScript implementation shipped in 4.3:
https://github.com/microsoft/botbuilder-js/blob/c9b4001112d7dc428fcbb8f3629b481af73a8cec/libraries/botbuilder-core/src/activityHandler.ts#L65-L66
Whereas the .NET implementation followed a classic inheritance pattern through public virtual methods.
public virtual Task OnTurnAsync(ITurnContext turnContext, CancellationToken cancellationToken = default(CancellationToken))

In botbuilder-js, the ActivityHandlerBase class added in 4.6.0 matches the implementation of the 4.3.0 .NET ActivityHandler. This was added to better support Invoke activity handling for Teams. For Invoke Activities the bot must respond with a single InvokeResponse. This is normally returned by the buisness logic in the bot.
To avoid breaking changes, the method names are changed in TypeScript.
For ActivityHandler methods:

on<ActivityType>Activity represents the inheritance model (first defined in ActivityHandlerBase)
on<ActivityType> represents the event listener pattern

For TeamsActivityHandler methods:

onTeams*Event represents the event listener pattern for Teams ConversationUpdates
onTeams* represents the inheritance model for Teams ConversationUpdates
handleTeams* is used to handle Teams Invoke Activities

In .NET it was simple to plumb this through as they were already using an inheritance-based model, but for TypeScript the underlying ActivityHandler class needed to be reimplemented without breaking changes, which is why we have handleTeams*() in TS but OnTeams*() in .NET.

To mirror the .NET VA implementation, one path would be subclassing the TeamsActivityHandler and then overriding and consuming the following methods (mentioned above):

on<ActivityType>Activity represents the inheritance model (first defined in ActivityHandlerBase)
onTeams* represents the inheritance model for Teams ConversationUpdates
handleTeams* is used to handle Teams Invoke Activities

Awesome @stevengum, thank you for the provided information.
We already applied that approach in the microsoft/botframework-solutions#3584 for 1.0 TypeScript Virtual Assistant (see DefaultActivityHandler).
If this is by design, feel free to close this issue 😊.

Great! Closing issue as the implementation differences are by design.


Bluetooth: USB Audio Starvation in BAP Broadcast Sink Sample

Describe the bug
The bap_broadcast_sink sample app will not send any audio frames over USB if no audio is received from the broadcast source.
This can cause issues on USB host side as some audio implementations does not like to be starved of audio frames. Particularly the Java audio implementation fails when trying to stop an audio recording from a device that has not yet provided any audio frames.
To Reproduce

Build the bap_broadcast_sink sample app and download to a nRF5340 Audio DK board
Connect to a Linux Host and start a recording using the Java Audio framework.
Stop the recording without having received any audio frames from a broadcast source.
The Java Audio framework will then hang as it has not yet received any USB audio frames.

Expected behavior
When stopping a recording from a device which has not yet received any audio, the recording should be successfully stopped and an audio file containing only silence should be produced.
Environment
OS: (Linux)
Toolchain (Zephyr SDK, Java SDK)
Commit origin/main https://github.com/zephyrproject-rtos/zephyr/commit/36940db938a8f4a1e919496793ed439850a221c2

@smaerup would you be so kind as to elaborate a bit more :)

@smaerup would you be so kind as to elaborate a bit more :)

@smaerup Please follow the bug template and properly describe the issue

Sorry for the delay, just came back from vacation.

@smaerup Any updates on this?

@Thalley I updated the bug description 2 weeks ago, anything else required?

@Thalley I updated the bug description 2 weeks ago, anything else required?

Ah, sorry, didn't notice that :)

Yes, tried it with both plain Linux & Windows, and there the failure to stop an audio recording does not occur.
But not sending "silent" USB audio frames causes another issue on plain Linux/Windows that at first confused me a bit.
If I start a recording on the USB host and then some time later start/stop a BIS stream a few times, I would then expect the resulting recording to contain:
Silence, Audio, Silence Audio, Silence
But since no USB frames where sent, the resulting recording ended up being:
Audio, Audio

Sorry, was away on vacation.
Yes, that describes the issue very well.

Great, then we have a pretty good idea of what the issue is and where to look for at fix.
Could you provide the steps to use the Java Audio framework to reproduce the issue? I'm unfamiliar with that framework, and I don't want to spend too much time with that framework to replicate the issue and to verify it.

The problem as such is already fixed by PR https://github.com/zephyrproject-rtos/zephyr/pull/76270
So this bug report is just for linking to the 3.7 backport.

This was fixed by https://github.com/zephyrproject-rtos/zephyr/pull/76270 and backported by https://github.com/zephyrproject-rtos/zephyr/pull/76548


Feature Flag Service doesn't start when built from repository | server file "missing"

Bug Report
OpenTelemetry Demo 1.4
Symptom
When I build from _https://github.com/open-telemetry/opentelemetry-demo_ with docker compose build, the Feature Flag Service doesn't start and shows in Logs exec /app/bin/server: no such file or directory even though the file is present:

When I instead fetch the images from ghcr with docker compose up --no-build, the Feature Flag Service starts without any problems.
Solution
I saved the server file in question from the ghcr image and added it to the version built from the repository, and it fixed the issue:

Reproduce
Build from _https://github.com/open-telemetry/opentelemetry-demo_ repository.
Additional Context
The file from the ghcr image is 2 Bytes bigger (223 Bytes vs 221 Bytes when composed from the repository) even though the content is the same. Attached are both files for comparison:
server-files.zip

Hello @kainawroth 👋🏽 ,
Which OS are you using?

@kainawroth is this issue gone?

I just wanted to check, but I don't even get that far. When I try to compose from the demo repo or from my fork, I'm stuck at the following:
Demo repo:
[+] Building 1359.2s (152/208)
 => => extracting sha256:c1e5026c64577dee4b6bac20b18196f964a41d8b9016fbbbada0c70b601cd5bf                     1274.5s
 => [quoteservice stage-1 3/6] RUN chmod +x /usr/local/bin/install-php-extensions   && install-php-extension  1349.4s
 => => # /src/php/ext/opcache -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I
 => => # /usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -fstack-prote
 => => # ctor-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -fstack-protector-str
 => => # ong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -Wno-implicit-fallthrough -DZEN
 => => # D_ENABLE_STATIC_TSRMLS_CACHE=1 -DZEND_COMPILE_DL_EXT=1 -c /usr/src/php/ext/opcache/shared_alloc_mmap.c -MMD
 => => # -MF shared_alloc_mmap.dep -MT shared_alloc_mmap.lo  -fPIC -DPIC -o .libs/shared_alloc_mmap.o
 => [frauddetectionservice internal] load metadata for gcr.io/distroless/java17-debian11:latest                  1.5s
 => [accountingservice internal] load metadata for docker.io/library/golang:1.19.2-alpine                        1.7s
 => [frauddetectionservice auth] library/gradle:pull token for registry-1.docker.io                              0.0s
 => [accountingservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-accountingservice        1.8s
 => [accountingservice builder 1/4] FROM docker.io/library/golang:1.19.2-alpine@sha256:e4dcdac3ed37d8c2b3b8bcef  0.0s
 => [accountingservice internal] load build context                                                              0.7s
 => => transferring context: 192.14kB                                                                            0.2s
 => [frauddetectionservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-frauddetectionservi  2.0s
 => [frauddetectionservice builder 1/5] FROM docker.io/library/gradle:7-jdk17@sha256:b2d88da755a317d084535201eb  0.0s
 => [frauddetectionservice stage-1 1/4] FROM gcr.io/distroless/java17-debian11@sha256:672df6324b5e36527b201135c  0.0s
 => [frauddetectionservice internal] load build context                                                          0.7s
 => => transferring context: 84.90kB                                                                             0.2s
 => CACHED [accountingservice builder 2/4] WORKDIR /usr/src/app/                                                 0.0s
 => CACHED [accountingservice builder 3/4] COPY ./src/accountingservice/ ./                                      0.0s
 => [accountingservice builder 4/4] RUN go build -o /go/bin/accountingservice/                                1341.0s
 => => # go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
 => => # go: downloading golang.org/x/crypto v0.10.0
 => => # go: downloading github.com/jcmturner/rpc/v2 v2.0.3
 => => # go: downloading github.com/jcmturner/aescts/v2 v2.0.0
 => => # go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc
 => => # go: downloading golang.org/x/text v0.10.0
 => CACHED [frauddetectionservice stage-1 2/4] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 2/5] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 3/5] COPY ./src/frauddetectionservice/ ./                              0.0s
 => CACHED [frauddetectionservice builder 4/5] COPY ./pb/ ./src/main/proto/                                      0.0s
 => CANCELED [frauddetectionservice builder 5/5] RUN gradle shadowJar                                           87.2s

My fork:
[+] Building 260.5s (156/208)
 => [quoteservice stage-1 3/6] RUN chmod +x /usr/local/bin/install-php-extensions   && install-php-extensions  253.3s
 => => # r/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/ph
 => => # p/ext -I/usr/local/include/php/ext/date/lib  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D
 => => # _FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_O
 => => # FFSET_BITS=64 -D_GNU_SOURCE   -Wno-implicit-fallthrough -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DZEND_COMPILE_D
 => => # L_EXT=1 -c /usr/src/php/ext/opcache/shared_alloc_posix.c -o shared_alloc_posix.lo  -MMD -MF shared_alloc_pos
 => => # ix.dep -MT shared_alloc_posix.lo
 => => extracting sha256:c1e5026c64577dee4b6bac20b18196f964a41d8b9016fbbbada0c70b601cd5bf                      182.4s
 => [frauddetectionservice internal] load build context                                                          0.5s
 => => transferring context: 84.90kB                                                                             0.2s
 => [frauddetectionservice stage-1 1/4] FROM gcr.io/distroless/java17-debian11@sha256:672df6324b5e36527b201135c  0.0s
 => CACHED [frauddetectionservice stage-1 2/4] WORKDIR /usr/src/app/                                             0.0s
 => [accountingservice internal] load .dockerignore                                                              0.7s
 => => transferring context: 1.22kB                                                                              0.1s
 => [accountingservice internal] load build definition from Dockerfile                                           0.6s
 => => transferring dockerfile: 478B                                                                             0.1s
 => CACHED [frauddetectionservice builder 2/5] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 3/5] COPY ./src/frauddetectionservice/ ./                              0.0s
 => CACHED [frauddetectionservice builder 4/5] COPY ./pb/ ./src/main/proto/                                      0.0s
 => [frauddetectionservice builder 5/5] RUN gradle shadowJar                                                   242.3s
 => => #  - Added support for Java 19.
 => => #  - Introduced `--rerun` flag for individual task rerun.
 => => #  - Improved dependency block for test suites to be strongly typed.
 => => #  - Added a pluggable system for Java toolchains provisioning.
 => => # For more details see https://docs.gradle.org/7.6.1/release-notes.html
 => => # Starting a Gradle Daemon (subsequent builds will be faster)
 => [accountingservice internal] load metadata for docker.io/library/golang:1.19.2-alpine                        3.0s
 => [accountingservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-accountingservice        2.5s
 => [accountingservice builder 1/4] FROM docker.io/library/golang:1.19.2-alpine@sha256:e4dcdac3ed37d8c2b3b8bcef  0.0s
 => [accountingservice internal] load build context                                                              0.2s
 => => transferring context: 623B                                                                                0.1s
 => CACHED [accountingservice builder 2/4] WORKDIR /usr/src/app/                                                 0.0s
 => CACHED [accountingservice builder 3/4] COPY ./src/accountingservice/ ./                                      0.0s
 => CANCELED [accountingservice builder 4/4] RUN go build -o /go/bin/accountingservice/                         89.4s

I won't cancel, but it doesn't stop building either.

@julianocosta89, I just wanted to check, but I don't even get that far. When I try to compose from the demo repo or from my fork, I'm stuck at the following:
Demo repo:
[+] Building 1359.2s (152/208)
 => => extracting sha256:c1e5026c64577dee4b6bac20b18196f964a41d8b9016fbbbada0c70b601cd5bf                     1274.5s
 => [quoteservice stage-1 3/6] RUN chmod +x /usr/local/bin/install-php-extensions   && install-php-extension  1349.4s
 => => # /src/php/ext/opcache -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I
 => => # /usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -fstack-prote
 => => # ctor-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -fstack-protector-str
 => => # ong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -Wno-implicit-fallthrough -DZEN
 => => # D_ENABLE_STATIC_TSRMLS_CACHE=1 -DZEND_COMPILE_DL_EXT=1 -c /usr/src/php/ext/opcache/shared_alloc_mmap.c -MMD
 => => # -MF shared_alloc_mmap.dep -MT shared_alloc_mmap.lo  -fPIC -DPIC -o .libs/shared_alloc_mmap.o
 => [frauddetectionservice internal] load metadata for gcr.io/distroless/java17-debian11:latest                  1.5s
 => [accountingservice internal] load metadata for docker.io/library/golang:1.19.2-alpine                        1.7s
 => [frauddetectionservice auth] library/gradle:pull token for registry-1.docker.io                              0.0s
 => [accountingservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-accountingservice        1.8s
 => [accountingservice builder 1/4] FROM docker.io/library/golang:1.19.2-alpine@sha256:e4dcdac3ed37d8c2b3b8bcef  0.0s
 => [accountingservice internal] load build context                                                              0.7s
 => => transferring context: 192.14kB                                                                            0.2s
 => [frauddetectionservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-frauddetectionservi  2.0s
 => [frauddetectionservice builder 1/5] FROM docker.io/library/gradle:7-jdk17@sha256:b2d88da755a317d084535201eb  0.0s
 => [frauddetectionservice stage-1 1/4] FROM gcr.io/distroless/java17-debian11@sha256:672df6324b5e36527b201135c  0.0s
 => [frauddetectionservice internal] load build context                                                          0.7s
 => => transferring context: 84.90kB                                                                             0.2s
 => CACHED [accountingservice builder 2/4] WORKDIR /usr/src/app/                                                 0.0s
 => CACHED [accountingservice builder 3/4] COPY ./src/accountingservice/ ./                                      0.0s
 => [accountingservice builder 4/4] RUN go build -o /go/bin/accountingservice/                                1341.0s
 => => # go: downloading github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
 => => # go: downloading golang.org/x/crypto v0.10.0
 => => # go: downloading github.com/jcmturner/rpc/v2 v2.0.3
 => => # go: downloading github.com/jcmturner/aescts/v2 v2.0.0
 => => # go: downloading google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc
 => => # go: downloading golang.org/x/text v0.10.0
 => CACHED [frauddetectionservice stage-1 2/4] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 2/5] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 3/5] COPY ./src/frauddetectionservice/ ./                              0.0s
 => CACHED [frauddetectionservice builder 4/5] COPY ./pb/ ./src/main/proto/                                      0.0s
 => CANCELED [frauddetectionservice builder 5/5] RUN gradle shadowJar                                           87.2s

My fork:
[+] Building 260.5s (156/208)
 => [quoteservice stage-1 3/6] RUN chmod +x /usr/local/bin/install-php-extensions   && install-php-extensions  253.3s
 => => # r/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/ph
 => => # p/ext -I/usr/local/include/php/ext/date/lib  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D
 => => # _FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_O
 => => # FFSET_BITS=64 -D_GNU_SOURCE   -Wno-implicit-fallthrough -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DZEND_COMPILE_D
 => => # L_EXT=1 -c /usr/src/php/ext/opcache/shared_alloc_posix.c -o shared_alloc_posix.lo  -MMD -MF shared_alloc_pos
 => => # ix.dep -MT shared_alloc_posix.lo
 => => extracting sha256:c1e5026c64577dee4b6bac20b18196f964a41d8b9016fbbbada0c70b601cd5bf                      182.4s
 => [frauddetectionservice internal] load build context                                                          0.5s
 => => transferring context: 84.90kB                                                                             0.2s
 => [frauddetectionservice stage-1 1/4] FROM gcr.io/distroless/java17-debian11@sha256:672df6324b5e36527b201135c  0.0s
 => CACHED [frauddetectionservice stage-1 2/4] WORKDIR /usr/src/app/                                             0.0s
 => [accountingservice internal] load .dockerignore                                                              0.7s
 => => transferring context: 1.22kB                                                                              0.1s
 => [accountingservice internal] load build definition from Dockerfile                                           0.6s
 => => transferring dockerfile: 478B                                                                             0.1s
 => CACHED [frauddetectionservice builder 2/5] WORKDIR /usr/src/app/                                             0.0s
 => CACHED [frauddetectionservice builder 3/5] COPY ./src/frauddetectionservice/ ./                              0.0s
 => CACHED [frauddetectionservice builder 4/5] COPY ./pb/ ./src/main/proto/                                      0.0s
 => [frauddetectionservice builder 5/5] RUN gradle shadowJar                                                   242.3s
 => => #  - Added support for Java 19.
 => => #  - Introduced `--rerun` flag for individual task rerun.
 => => #  - Improved dependency block for test suites to be strongly typed.
 => => #  - Added a pluggable system for Java toolchains provisioning.
 => => # For more details see https://docs.gradle.org/7.6.1/release-notes.html
 => => # Starting a Gradle Daemon (subsequent builds will be faster)
 => [accountingservice internal] load metadata for docker.io/library/golang:1.19.2-alpine                        3.0s
 => [accountingservice] importing cache manifest from ghcr.io/open-telemetry/demo:1.4.0-accountingservice        2.5s
 => [accountingservice builder 1/4] FROM docker.io/library/golang:1.19.2-alpine@sha256:e4dcdac3ed37d8c2b3b8bcef  0.0s
 => [accountingservice internal] load build context                                                              0.2s
 => => transferring context: 623B                                                                                0.1s
 => CACHED [accountingservice builder 2/4] WORKDIR /usr/src/app/                                                 0.0s
 => CACHED [accountingservice builder 3/4] COPY ./src/accountingservice/ ./                                      0.0s
 => CANCELED [accountingservice builder 4/4] RUN go build -o /go/bin/accountingservice/                         89.4s

I won't cancel, but it doesn't stop building either.

Hmmm, that is odd.
I know that it may be a lot of pain, but would you be able to run a docker system prune -a, and then, try again?

Thanks, that helped. Unfortunately, I'm still running into the same issue and have to replace the server file after deployment.

@tsloughter have you ever seen this???

I'm not able to recreate this on ARM64/MacOS — if I have time I will attempt with windows later today.

@tsloughter we got another user in slack reporting the same issue in Windows 11 and Docker Desktop.
Any ideas what could be the culprit?
https://cloud-native.slack.com/archives/C03B4CWV4DA/p1690972086181209

I had the same issue with Docker Desktop and Windows 10. I believe the issue is with line endings in the Feature Flag Service source files. When I converted from CRLF to LF it built and ran without issue.
@kainawroth try configuring your git client to checkout with Unix style line endings rather than windows https://docs.github.com/en/get-started/getting-started-with-git/configuring-git-to-handle-line-endings#global-settings-for-line-endings
Also running in WSL worked without issue.

@julianocosta89 na, no idea. I can ask around to find Erlang Windows users and see if anyone has experienced similar.

Is this still something that we need to track? Do we need to document to use WSL if developing on Windows?


Benchmark against EricZimmerman/evtx

Hi,
On shipping .evtx data to some SIEM , the following set of tools exist and allow parsing .evtx ( from windows, in C#, lol ) up to some SIEM, and KAPE, the IR suite has this automated-ish in some "EvtxECmd" configuration settings, allowing .evtx to be converetd to JSON using https://github.com/EricZimmerman/evtx  , then just planting them on a VM with logscale for .json ingestion in ELK ( see https://aboutdfir.com/sof-elk-and-integration-with-kape/ ).
Question : by how many order of magnitudes is your excellent rust evtx parser faster than this custom C# implementation ? ( https://github.com/EricZimmerman/evtx/blob/master/evtx/EventLog.cs ) Thanks !
There's not much metrics, just a screenshot on https://binaryforay.blogspot.com/2019/04/introducing-evtxecmd.html mentioning parsing 260 records in 0.5546s.
Cheers ! ( And thank you very much for this excellent piece of work )

Hey! I think EvtxECmd is a great tool, but it's a little bit more bespoke and has some cool feature like the maps and everything. In terms of performance I don't think these tools operate within the same realms.
TL;DR - 10x-100x of performance difference, depends on if we consider multithreading fair game.
I've build a release binary, using dotnet core 6 on Ubuntu 24.04.
For parsing https://github.com/omerbenamram/evtx/blob/master/samples/security_big_sample.evtx
EvtxECmd takes about 16-20 seconds (I've ran it a few times, this is a little unstable).
omerba in 🌐 omer-pc in EvtxECMD on  master [?] on ☁<EMAIL_ADDRESS>took 1m3s
❯ ./EvtxECmd/bin/Release/net6.0/EvtxECmd -f ../evtx/samples/security_big_sample.evtx --json /tmp/jsonout
EvtxECmd version <IP_ADDRESS>

Author: Eric Zimmerman<EMAIL_ADDRESS>https://github.com/EricZimmerman/evtx

Command line: -f ../evtx/samples/security_big_sample.evtx --json /tmp/jsonout

json output will be saved to /tmp/jsonout/20241112173717_EvtxECmd_Output.json

Maps directory /home/omerba/Workspace/EvtxECMD/EvtxECmd/bin/Release/net6.0/Maps does not exist! Event ID maps will not be loaded!!

Processing /home/omerba/Workspace/evtx/samples/security_big_sample.evtx...
Chunk count: 481, Iterating records...

Event log details
Flags: None
Chunk count: 481
Stored/Calculated CRC: 9366A7DE/9366A7DE
Earliest timestamp: 2016-10-06 01:47:07.1663024
Latest timestamp:   2016-10-07 09:38:24.7494104
Total event log records found: 62,031

Records included: 62,031 Errors: 0 Events dropped: 0

Metrics (including dropped events)
Event ID        Count
1102            1
4624            3,648
4634            3,642
4648            27
4656            151
4658            129
4661            11
4662            32
4672            2,814
4673            2
4688            382
4689            383
4696            191
4698            1
4720            1
4722            1
4724            1
4728            1
4737            1
4738            2
4768            37
4769            344
4770            31
4776            14
4780            1
4800            4
4801            4
4802            4
4803            4
4985            2
5140            1,537
5152            9,310
5154            1
5156            22,517
5157            8,312
5158            8,488

Processed 1 file in 16.3789 seconds

evtx_dump takes around 200 miliseconds and produces the same number of records.
omerba in 🌐 omer-pc in EvtxECMD on  master [?] on ☁<EMAIL_ADDRESS>took 2s
❯ hyperfine './evtx_dump-v0.8.4-x86_64-unknown-linux-gnu -o jsonl ../evtx/samples/security_big_sample.evtx'
Benchmark 1: ./evtx_dump-v0.8.4-x86_64-unknown-linux-gnu -o jsonl ../evtx/samples/security_big_sample.evtx
  Time (mean ± σ):     197.2 ms ±   3.1 ms    [User: 3064.8 ms, System: 139.2 ms]
  Range (min … max):   193.9 ms … 203.4 ms    14 runs

omerba in 🌐 omer-pc in EvtxECMD on  master [?] on ☁<EMAIL_ADDRESS>took 2s
❯ ./evtx_dump-v0.8.4-x86_64-unknown-linux-gnu -o jsonl ../evtx/samples/security_big_sample.evtx  | wc -l
62031

The thing is EvtxECMD doesn't support any multi-threading though, so for an apples to apples comparison, if we limit evtx dump to a single thread, we run at about 1.7~ seconds for the file. Which is an order of magnitude from 17 seconds. This makes sense since rust is significantly more resource efficient than C#. I believe this will be comparable also on windows, even though the dotnet runtime is probably a bit quicker there.
omerba in 🌐 omer-pc in EvtxECMD on  master [?] on ☁<EMAIL_ADDRESS>❯ hyperfine './evtx_dump-v0.8.4-x86_64-unknown-linux-gnu -t 1 -o jsonl ../evtx/samples/security_big_sample.evtx'
Benchmark 1: ./evtx_dump-v0.8.4-x86_64-unknown-linux-gnu -t 1 -o jsonl ../evtx/samples/security_big_sample.evtx
  Time (mean ± σ):      1.814 s ±  0.252 s    [User: 1.796 s, System: 0.027 s]
  Range (min … max):    1.142 s …  2.001 s    10 runs

OK, thanks for the explanation. I had overlooked the "maps" part of EvtxECmd, it looks pretty relevant to standardise data. Right now having the raw-ish data shipped to some Splunk server with https://github.com/whikernel/evtx2splunk is good enough, while a little bit verbose. Correlating across different kind of logs can be a bit tricky though, given the variety of field names. That project I used mentions https://github.com/libyal/winevt-kb/ to rebuild messages out of raw data, but I could not really understand that winevt-kb project exposes its data, their doc is minimal.
Have a great day !


Does excelize support  addComment() with StreamWriter ？

Does excelize support  addComment() with StreamWriter?

This library doesn't support adding comments in stream mode currently. Please use the AddComment function.

Thanks bro


[BUG] "Remove from important links" behaves like "delete link"

Removing a favorite link from the saved links tab will delete the link from the saved links tab, but won't remove it from the favorites tab.
see attachment.
https://github.com/user-attachments/assets/22c4cec7-dd6d-4c7f-ad2e-a2958745273b
Android 14, release-v0.8.0

will release the fix ASAP

This has been fixed in 0.8.1: https://github.com/sakethpathike/Linkora/releases/tag/release-v0.8.1


ignite expo CNG workflow generated in iOS, android folders and defaults in development build instead of expo

Describe the bug
I selected expo CNG workflow, it created native folders for both iOS and android. When I do "npm run ios" it starts a development build instead of expo build. when I switch to expo build and scan the qr from phone it gives this error (attached: react-native-mmkv is not supported in Expo Go! Use EAS ('expo prebuild") or eject to a bare workflow instead.)
your documentation says that when I select CNG workflow it does nt generate native folders and its just expo build. attached.

Is the documentation not updated or am I missing something?

Ignite version
51.0.38
Additional info
platform           darwin
arch               arm64
cpu                10 cores           Apple M1 Pro
directory          thatApp   /Users/thatGuy/doctyn/mobileApp/y/thatApp
JavaScript (and globally-installed packages)
node                     20.16.0                                   /Users/thatGuy/.nvm/versions/node/v20.16.0/bin/node
npm                      10.8.1                                    /Users/thatGuy/.nvm/versions/node/v20.16.0/bin/npm
corepack               0.28.2
eas-cli                10.2.2
generator-jhipster     8.6.0
generator-springboot   0.1.6
jhipster               0.0.2
localtunnel            2.0.2
mongoose-data-seed     2.1.6
node-check-updates     0.1.9
npm-check-updates      17.0.3
npm                    10.8.1
plop                   4.0.1
pnpm                   9.7.0
yo                     5.0.0
yarn                     -                                         not installed
pnpm                     9.7.0                                     /Users/thatGuy/.nvm/versions/node/v20.16.0/bin/pnpm

bun                      1.1.17                                    /Users/thatGuy/.bun/bin/bun
expo                     51.0.38                                   managed
Ignite
ignite-cli         10.0.4       /Users/thatGuy/.npm/_npx/e31027f3785124a8/node_modules/.bin/ignite
ignite src         build        /Users/thatGuy/.npm/_npx/e31027f3785124a8/node_modules/ignite-cli/build
Android
java               19.0.2       /usr/bin/java
android home       -            /Users/thatGuy/Library/Android/sdk
iOS
xcode              16.0
cocoapods          1.15.2       /opt/homebrew/bin/pod
Tools
git                git version 2.45.2   /opt/homebrew/bin/git

hey @redoc123 - yes you are correct, picking CNG does generate the ios/android directories locally, however it does leave them in the gitignore. This is simply due to allowing you to run your build locally rather than having to build a dev client out of the box.
You can of course remove them without any issue, build your dev client and work that way. They're basically the same thing.
In version 10, there is no support for Expo Go out of the box with the default boilerplate. This allowed us to make changes such as mmkv and others.
To utilize Expo Go, you could ignite an app using the last version of 9.x or remove dependencies that will not work in Expo Go. MMKV and keyboard controller would be the two you need to remove.
MMKV can be replaced with react-native-community's async storage.
Keyboard controller will just need the <Screen /> component reworked to only use RN core's KeyboardAvoidingView. Details around that PR can be seen here: https://github.com/infinitered/ignite/pull/2722/files#diff-a83d8be471e743b3ea8cde8be257278410fa801f958fee58cec5631445e9e708

I've updated the steps over at https://ignitecookbook.com (although they're not published yet, but you can view the PR here with how to get back to Expo Go if that is your interest.
Let us know if you need any additional help! I'll close this as it is expected and not an issue, but feel free to ask for additional help on Discussions or in our Community Slack!

thanks a bunch @frankcalise for the quick response.


Update http4s-core to 0.23.11

Updates org.http4s:http4s-core from 0.23.7 to 0.23.11.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.http4s", artifactId = "http4s-core" } ]

labels: library-update, early-semver-minor, semver-spec-patch, commit-count:1

Superseded by #198.


Temp hack is no longer needed

There is a debian jessie repo here
http://repo.mongodb.org/apt/debian/dists/jessie/
the referenced issue  is closed, too

Are there any plans for merging this pull request? /cc @hunner

sweet!


LongVILA - compatibility with other LLMs

Hi!
very impressed by your work with LongVILA. I would like to do long context with Qwen/LLaMA3.1, but currently, i only see support for Mixtral.
Any chance you plan on releaseing long context support for these models soon?
Best,
Orr

Looking at the huggingface release -- it appears that the base LLM is LLaMA3.1?
If yes -- could you please advise how this is implemented? I want to use this on my own model for long-context support, is this some attention implementation add-on?


Weird artifact/highlighting in the line

Hi guys, since I'm relatively new to Neovim(and this statusline plugin), I don't know how to describe the problem, but here's an image:

I don't know why this area is highlighted, is it even supposed to be this way?
I've used Lualine and I've seen no such problems, although I'm on Windows 10 and that could potentially be an issue.
I'm using the default settings and 'neonline' theme.

Hey, yeah that's a known issue. This even has a ton of duplicated issues on glepnir's galaxyline repository.
This is occasioned because there's nothing covering the statusline section that you've pointed to so Galaxyline doesn't add a highlight group to it and this empty section will be using your colorscheme StatusLine highlighting group.
I still don't know how this should be fixed, there were some workarounds in glepnir's galaxyline issues regarding to this behavior where they modified their StatusLine highlighting group or added a whitespace as the component separator and added a background to them so the color will remain until other component is reached.

So my options are to either change the colorscheme's StatusLine highlight group, or do some whitespace trickery?
Or potentially fill the statusline until it's cluttered

Sadly yes, those are your current options. Hopefully I'll find a solution for this soon.

Set the highlight GalaxyLineFillSection to the same bg as your Normal


some questions

awesome to see nurbs being developed for javascript.
i use grasshopper and used to use nuke and flame and flint. all node based tools.
i am using a different rendering engine. OSGJS. i used to use three. i am thinking of forking but dont want to split things as frankly the nurbs does my head in. BTW there is no real standard for what  nurbs is from what i could see. Its not interoperable. Mckneel have theirs that they call open nurbs, and its not open. Mhh.. Cad world is very closed.
so i was wondering if the nurbs data flow can be separated from the rendering engine ? it will also help make testing much easier..

Yes, the rendering is explicitly separated from rendering.
You'll find tools for NURBS tessellation in verb, but nothing having to do with WebGL or anything like that.  It's a client dev's responsibility to do all of that sort of stuff.  There's examples using three.js in the examples folder.


RFC: fail gracefully in uv_{get,set}_process_title when uv_setup_args is not called

Currently, on platforms that require uv_setup_args to be called, calling uv_{get,set}_process_title will attempt to use uninitialized pointers if uv_setup_args wasn't called beforehand. However, for bindings like luv, we don't always control main and don't have access to the argv memory from Lua's main, so providing bindings for, or ensuring that uv_setup_args is always called is not feasible.
This means that uv_{get,set}_process_title will sometimes crash, but there's also no way of knowing if it will crash ahead-of-time as far as I can tell, so we don't have good options for avoiding a crash on some platforms.
The proposal here is to do something like this (args_mem is set when uv_setup_args succeeds):
 src/unix/proctitle.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/unix/proctitle.c b/src/unix/proctitle.c
index 4ee991fc..64c69ad7 100644
--- a/src/unix/proctitle.c
+++ b/src/unix/proctitle.c
@@ -35,7 +35,7 @@ extern void uv__set_process_title(const char* title);
 static uv_mutex_t process_title_mutex;
 static uv_once_t process_title_mutex_once = UV_ONCE_INIT;
 static struct uv__process_title process_title;
-static void* args_mem;
+static void* args_mem = NULL;

 static void init_process_title_mutex_once(void) {
@@ -100,6 +100,9 @@ int uv_set_process_title(const char* title) {
   struct uv__process_title* pt;
   size_t len;

+  if (args_mem == NULL)
+    return UV_ENOBUFS:
+
   pt = &process_title;
   len = strlen(title);

@@ -126,6 +129,9 @@ int uv_get_process_title(char* buffer, size_t size) {
   if (buffer == NULL || size == 0)
     return UV_EINVAL;

+  if (args_mem == NULL)
+    return UV_ENOBUFS:
+
   uv_once(&process_title_mutex_once, init_process_title_mutex_once);
   uv_mutex_lock(&process_title_mutex);

and add similar checks in other uv_{get,set}_process_title implementations that require uv_setup_args.
Not sure exactly what error should be returned, UV_ENOBUFS is just used as an example. Also worth noting that the implementation in no-proctitle.c returns 0:
https://github.com/libuv/libuv/blob/36549815eed297c74448ff580b5c84713245ec5d/src/unix/no-proctitle.c#L35-L45

What about adding a separate flag variable in that file? I think that would make the intent more clear to people looking at the code in the future.

Sure, that'd work too. Note that there are a few different proctitle implementations for different platforms, and only some of them actually require uv_setup_args to be called.
If the concept of returning an error (or just returning early) if uv_setup_args hasn't been called on platforms where it is needed seems okay, then I'll draft up a PR for this.

I can't speak for anyone else, but returning an error seems preferable to crashing to me.

I agree. PR welcome. UV_ENOBUFS seems as good as any for the error code.


[WIP] release: v3.8.14

Codecov Report

Merging #987 (59e29ed) into master (c14c8a1) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #987   +/-   ##
=======================================
  Coverage   51.52%   51.52%
=======================================
  Files          47       47
  Lines        1281     1281
  Branches      297      297
=======================================
  Hits          660      660
  Misses        621      621


Allow user to set min percentage that is shown over a chart segment

Code CoverageCoverage after merging min-onchart-percent into develop will be28.47%
Coverage Report for Changed FilesFileStmtsBranchesFuncsLinesUncovered LinesSources/SwiftUICharts/Model   SCDataPoint.swift100%100%100%100%Sources/SwiftUICharts/View/DonutChart   SCDonutChartView.swift0%100%0%0%15–19, 21–31, 36–37   SCDonutPartView.swift0%100%0%0%14–17, 19–34, 39   SCDonutView.swift0%100%0%0%11, 18–23, 25–44, 49, 54–62Sources/SwiftUICharts/View/PieChart   SCPieChartView.swift0%100%0%0%11, 16–20, 22–40, 45–47   SCPiePartView.swift0%100%0%0%14–17, 19–33   SCPieView.swift0%100%0%0%15–19, 21–27, 31–39Sources/SwiftUICharts/View/Shared   SCCaptionsView.swift0%100%0%0%11, 14–16, 18–42, 47–49, 52–63

Before
After


JS/CSS resource versioning / caching

To ensure clients are pulling down the most recent copy of JS and css files it is suggested that a build number is appended to the end of the resource url (i.e. "/Chat.js?version=<IP_ADDRESS>"). This way the client pulls down the latest version and only performs a refresh when the version number is changed.

On apphb, we can use ?<%=ConfigurationManager.AppSettings["appharbor.commit_id"]%>

You should not include a querystring for static resources since some proxies ignore them, should encode the version within the filename.


Token Embeddings fail for long texts

fixes https://github.com/code-kern-ai/refinery-embedder/issues/3
This pull request fixes multiple issues in relation to the creation of token embeddings:

fixes https://github.com/code-kern-ai/refinery-embedder/issues/3
The creation of embeddings runs into errors if the text is too long. Each transformer model has a maximum number of tokens which can be processed at the same time. If this maximum number is exceed the embedding creation fails. As workaround the text is splitted in subparts before the transformer tokens are created. To split the text the number of tokens is estimated and then split according to the token limit. Further a fallback is implemented, so that subparts are splitted again if the number of tokens is still too big.

fixes a problem with empty strings
If an attribute only contains an empty string, the PCA fails, because the dimensions of the embeddings do not match. The current solution is to add a dummy embedding for empty attributes. This way the PCA does not fail and for every record an embedding is created.

fixes a problem with whitespace characters
Whitespace characters are treated different by the spacy and the transformer tokenizers. Spacy creates tokens for whitespace while transformer ignores them.

fixes a problem if for one spacy token multiple transformer tokens are created

Version number inc missing

[ ] resolved


Run make in parallel mode for presubmit

If it works, fixes #248
I have no idea if this works, but I need to create a PR for it for the build to run.

Any luck solving the interdependencies in the makefiles?

Any luck solving the interdependencies in the makefiles?

I think so, but still hammering out the kinks.

Okay, it works! Here's the rundown of changes:

use the -j argument for make to compile Coq proofs in parallel. I used -j32 because the machine we're building on has 32 vCPUs
Fixed the link to machine descriptions, which I discovered was broken as I tried to figure out what to pass to -j
Separated make coq from make so that we don't wait on the Verilator build to compile the Coq proofs
Changed the Makefile targets so that they will wait for their dependencies when run in parallel (most of the complexity is here)

Time differences from most recent build (in #300):

Build step
Old
New
Diff

recover_git_folder
00:29
00:27
-00:02

cache_dependencies
01:34
01:31
-00:03

build_verilator
01:52
02:04
+00:12

build_third_party
03:12
01:51
-01:21

run_makefile
04:13
01:04*
-3:09

Total
09:36
05:01
-4.35

* now two separate build steps, just so we can make progress while waiting for build_verilator


new crds and same CRs for the oop adapter work.

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

Needs approval from an approver in each of these files:

install/OWNERS
mixer/OWNERS [guptasu]

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

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: guptasu, mandarjog
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

install/OWNERS [mandarjog]
mixer/OWNERS [guptasu,mandarjog]

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

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

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
343c582594e0787bd6e8feb160af86543a1f936c
link
/test istio-unit-tests

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
343c582594e0787bd6e8feb160af86543a1f936c
link
/test istio-pilot-e2e

prow/e2e-bookInfoTests.sh
343c582594e0787bd6e8feb160af86543a1f936c
link
/test e2e-bookInfo

prow/istio-unit-tests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-unit-tests

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-bookInfoTests.sh
343c582594e0787bd6e8feb160af86543a1f936c
link
/test e2e-bookInfo

prow/istio-unit-tests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-unit-tests

prow/istio-pilot-e2e.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-pilot-e2e

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-unit-tests

prow/istio-pilot-e2e.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-pilot-e2e

prow/e2e-bookInfoTests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test e2e-bookInfo

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-unit-tests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-unit-tests

prow/istio-pilot-e2e.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-pilot-e2e

prow/e2e-bookInfoTests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test e2e-bookInfo

prow/e2e-simpleTests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test e2e-simple

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

/lgtm

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: guptasu, mandarjog
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

install/OWNERS [mandarjog]
mixer/OWNERS [guptasu,mandarjog]

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/istio-pilot-e2e.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test istio-pilot-e2e

prow/e2e-simpleTests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test e2e-simple

prow/e2e-bookInfoTests.sh
cfa861a5f2a6d0a1c24918b0c9acc9478380da93
link
/test e2e-bookInfo

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

@guptasu: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/e2e-simpleTests.sh
8e918626ce8a41236bf2d952333e3788a7b59cfa
link
/test e2e-simple

prow/e2e-bookInfoTests.sh
cfa861a5f2a6d0a1c24918b0c9acc9478380da93
link
/test e2e-bookInfo

prow/istio-pilot-e2e.sh
cfa861a5f2a6d0a1c24918b0c9acc9478380da93
link
/test istio-pilot-e2e

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


feat(timeout): add the timeout provider implementation

What type of PR is this?

Check the PR title.

[x] This PR title match the format: <type>(optional scope): <description>
[x] The description of this PR title is user-oriented and clear enough for others to understand.
[x] Attach the PR updating the user documentation if the current PR requires user awareness at the usage level. User docs repo

(Optional) Translate the PR title into Chinese.
(Optional) More detailed description for this PR(en: English/zh: Chinese).

en:
zh(optional):
(Optional) Which issue(s) this PR fixes:

(optional) The PR that updates user documentation:

for pr title, it is suggested to say why need this change but not what the pr do

Please fill in the "type" and more detailed description.

Please fill in the "type" and more detailed description.

Done.


Errors related to /tmp folder inside Docker container. Why use of Tempfile?

I am being faced with the following error when running a Fastlane lane in a Docker container (based on debian:bullseye-slim):
/usr/lib/ruby/2.7.0/fileutils.rb:548:in `rename': Invalid cross-device link @ rb_file_s_rename - (/tmp/fastlaneIncrementVersionName20230307-13093-1g2hon7, ./android/app/build.gradle) (Errno::EXDEV)

/usr/lib/ruby/2.7.0/fileutils.rb:1424:in `utime': \e[31m[!] Operation not permitted @ apply2files - ./android/app/build.gradle\e[0m (Errno::EPERM)

Any specific reason this plugin uses a temporary file in the /tmp folder for making changes to the build.gradle instead of replacing directly in the original build.gradle file?
This seems like an unnecessary detour?

I think the issue is that you can't move files over different mounts, so it would probably work if the file was copied & removed instead (or no Tempfile was used at all).


format_int precision error handling

Because precision is not allowed in integer format specifier:
In this revision,

Precision error handling has been done in format_int function.

Before:
>>>>> print('{:.2}'.format(200))
200

After:
>>>>> print('{:.2}'.format(200))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: Precision not allowed in integer format specifier

@Snowapril could you review this again?


⚠ AsianCinema has degraded performance

In 370d08e, AsianCinema ($ACM) experienced degraded performance:

HTTP code: 523
Response time: 1276 ms

Resolved: AsianCinema performance has improved in c5f2683.


Duo MFA breaks Remember Me

I am trying to get CAS 5.1.2 to use Duo MFA, and also to have "Remember me" functionality. So the code shows that "Remember me" looks to the initial credentials POST and looks for a parameter "&rememberMe=true". However, when Duo is enabled, this POST is not the TGC issuing event -- the TGC is issued in a separate POST that happens after successful multi-factor validation, and the parameter is lost in that subsequent POST.
I've found that if I inject "&rememberMe=true" into the POST data going to /cas/login that happens immediately after successful Duo MFA, then I get what I want: A shiny new perisistent TGC cookie.
All of this suggests to me that the approach in org.apereo.cas.web.support.CookieRetrievingCookieGenerator.addCookie, where it looks for the "&rememberMe=true" parameter, is the wrong approach for an implementation with Duo.
I am not a developer, but I've been digging into the code to get this far. Am I on the right track here?

Yes you're on the right track. I suppose the cookie generator will also need to consult the webflow to determine if remember-me is turned on rather than just seeing it as a parameter.


Accessing the dashboard outside of the VPN

Hi,
I have a server (location A) where I use compose-transmission-wireguard, with the VPN pointing to a Raspberry Pi (location B).
My issue is that the transmission dashboard is only accessible when I am connected to the VPN, and I would like to be able to use it in location A. I also want in the future to add radarr and lidarr, also accessible on location A without being connected to the VPN.
Is that possible?

Hi! There are many ways to solve this.
To access the WebUI from any device I would use Tailscale on your client device and the server. It still requires you to be connected via Tailscale's "VPN" app but only the traffic routed to your server would be sent through it. It's probably the most secure solution since it won't be accessible on the public internet.
If you really don't want to use a VPN you could use a reverse proxy on your server. Traefik is a great Docker solution but NGINX and Caddy are solid choices too. If you proceed with Traefik you just need to make sure Traefik, wireguard and transmission are on a shared network and add these labels to your transmission-wireguard compose file:
labels:
      - traefik.enable=true
      - traefik.http.routers.transmission.rule=Host(`transmission.yourdomain.com`)
      - traefik.http.services.transmission.loadbalancer.server.port=9091
      - traefik.http.routers.transmission.tls.certresolver=letsencrypt
      - traefik.http.routers.transmission.middlewares=transmission-auth
      - traefik.http.middlewares.transmission-auth.basicauth.users=yourusername:yourpassword

Note that you need to hash the password when using basicauth:
https://doc.traefik.io/traefik/middlewares/http/basicauth/

Hi! First of all, thank you for your reply!
I have been seeing some traefik tutorials, but I get a bit confused because I am not interested in adding my own domain, and I don't want to expose it to the internet. As it is my understanding, I want to avoid passing through the interface through the VPN.
I also found someone that modified their wg0.conf for the same purpose, but instead of Transmission they used Deluge:
PostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=<IP_ADDRESS>/16; HOMENET2=<IP_ADDRESS>/8; HOMENET3=<IP_ADDRESS>/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j>PreDown = HOMENET=<IP_ADDRESS>/16; HOMENET2=<IP_ADDRESS>/8; HOMENET3=<IP_ADDRESS>/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT ->

Just a quick update. I found this helpful resource.
https://www.linuxserver.io/blog/routing-docker-host-and-container-traffic-through-wireguard
Will take a look and update the documentation👍

Hi! Thank you again for helping in this matter.
I followed this guide: https://docs.linuxserver.io/images/docker-wireguard
When routing via Wireguard from another container using the service option in docker, you might lose access to the containers webUI locally. To avoid this, exclude the docker subnet from being routed via Wireguard by modifying your wg0.conf like so (modifying the subnets as you require):
[Interface] PrivateKey = <private key> Address = <IP_ADDRESS>/32 DNS = <IP_ADDRESS> PostUp = DROUTE=$(ip route | grep default | awk '{print $3}'); HOMENET=<IP_ADDRESS>/16; HOMENET2=<IP_ADDRESS>/8; HOMENET3=<IP_ADDRESS>/12; ip route add $HOMENET3 via $DROUTE;ip route add $HOMENET2 via $DROUTE; ip route add $HOMENET via $DROUTE;iptables -I OUTPUT -d $HOMENET -j ACCEPT;iptables -A OUTPUT -d $HOMENET2 -j ACCEPT; iptables -A OUTPUT -d $HOMENET3 -j ACCEPT;  iptables -A OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT PreDown = HOMENET=<IP_ADDRESS>/16; HOMENET2=<IP_ADDRESS>/8; HOMENET3=<IP_ADDRESS>/12; ip route del $HOMENET3 via $DROUTE;ip route del $HOMENET2 via $DROUTE; ip route del $HOMENET via $DROUTE; iptables -D OUTPUT ! -o %i -m mark ! --mark $(wg show %i fwmark) -m addrtype ! --dst-type LOCAL -j REJECT; iptables -D OUTPUT -d $HOMENET -j ACCEPT; iptables -D OUTPUT -d $HOMENET2 -j ACCEPT; iptables -D OUTPUT -d $HOMENET3 -j ACCEPT
Now I have access to the web UI in both locations. I believe that the public traffic (as in, the actual torrents) still goes through the VPN.

This was actually pretty straight forward.
Just add the following to your wg0.conf and local traffic should be allowed to bypass the VPN.
PostUp = ip route add <IP_ADDRESS>/24 via <IP_ADDRESS>;
PreDown = ip route delete <IP_ADDRESS>/24;

This example assume that the client accessing the WebUI is on the subnet <IP_ADDRESS>. If you want to access the WebUI through your VPN you can change the subnet to the VPNs subnet.

Could you add this last tip to the readme? took me forever to figure out accessing the port from my lan machines.

This was actually pretty straight forward.
Just add the following to your wg0.conf and local traffic should be allowed to bypass the VPN.
PostUp = ip route add <IP_ADDRESS>/24 via <IP_ADDRESS>;
PreDown = ip route delete <IP_ADDRESS>/24;

This example assume that the client accessing the WebUI is on the subnet <IP_ADDRESS>. If you want to access the WebUI through your VPN you can change the subnet to the VPNs subnet.
Edit: Completely missed your reply. Nice find!😃

It helped me. Thanks.

Could you add this last tip to the readme? took me forever to figure out accessing the port from my lan machines.

Sorry for the late reply. I will add it to the readme!


Put Okio in ObjectQueue's API.

wanted to see what it would look like.
this isn't great so long as QueueFile only accepts byte arrays.
worth changing QueueFile or just close this?

I don't have a strong preference one way or the other since there aren't multiple layers of bufferring for Okio to really shine here in terms of performance.
Also for our use case (segment) it would be nice to not have to add a dependency for Okio (and eventually the Kotlin stdlib with Okio 2).

this is really just for the API nicety of dealing with Okio types instead of java.io types and byte arrays.
ah, i didn't realize the Segment SDK didn't have OkHttp and Okio in it.

Should we get this on v2? I'm still a soft -1 (because I want to avoid adding Okio to analytics-android) but I see the value for other clients and could be convinced otherwise.

Sounds good - I think a Moshi and Gson example should be sufficient?

or just Moshi. :P


getHovers does not return useful information for an import prefix

Given this code:
import "dart:async" as x;

main() {
  var a = new x.Future();
}

If you send a hover request for the x at the bottom you get this:
{
	"id": "212",
	"result": {
		"hovers": [
			{
				"offset": 148,
				"length": 1,
				"containingLibraryPath": "/Users/dantup/Desktop/Dart Sample/bin/main.dart",
				"containingLibraryName": "",
				"elementDescription": "as x",
				"elementKind": "import prefix",
				"isDeprecated": false
			}
		]
	}
}

There's no information in there to say that this import was for dart:async so it's hard to render a useful tooltip.  It's be nice if we could have this here to show the user information about what x is.

Still relevant; no tooltips for prefixes.

Working on https://dart-review.googlesource.com/c/sdk/+/390960. I made it work but the current output is not great, still needs some thoughts.

Something else that crosses my mind today (haven't tried anything just yet) is what should we do when two imports share the same alias?
Something like:
import 'dart:core' as dart;
import 'dart:async' as dart;

When hovering on the acual import line we can differentiate easily enough, but not necessarily when inside the code if both import export a shared top level declaration or when you haven't written the second name yet. Any ideas are welcome.

I'm not sure what to do in the case of getHover (which is what the request was initially for, but VS Code no longer users). It might be difficult to do a lot in the case of multiple without protocol changes. Maybe we should either show the first one, or not show anything when there are multiple?
For VS Code / LSP, we're not tied to specifics of the protocol because we're just returning Markdown, so we could probably just duplicate whatever string we should for one when there are multiple.

We aren't likely to make changes to the legacy protocol to support this. If clients that use the legacy protocol want to support this they could choose to use the LSP request instead.

I think the CL is basically working. Does anyone want to review it (or to suggest someone) or should I add you both since you're here on the issue?

@FMorschel thanks! I didn't notice in the CL but the text here is wrapped in triple backticks so it has language syntax highlighting applied to it (eg. for is coloured and it's a fixed width font):

I can easily fix, but thought I'd ping you in case you wanted to first :-)