Copy and Paste troubles

I'm trying to use this library in a simple copy-paste situation such as set out in the example of  https://github.com/paullouisageneau/libdatachannel/tree/master/examples/copy-paste
Instead of reading from std::cin I copy paste offers and answers into html text boxes. However I'm unable to setup a connection in this manner. I always get a "WebRTC: ICE failed, add a TURN server and see about:webrtc for more details" on Firefox or Chrome never seems to progress further than the [State: Connecting] state.
Here is the main code adapted from the libdatachannel example:
std::shared_ptr<rtc::PeerConnection> pc;
std::shared_ptr<rtc::DataChannel> dc;

EM_JS(void, putDescriptionInOfferBox, (const char* string_pointer), {
	document.getElementById('offer').value = UTF8ToString(string_pointer);
});

EM_JS(void, putCandidateInCandidateBox, (const char* string_pointer), {
	document.getElementById('candidate').value = UTF8ToString(string_pointer);
});

EM_JS(void, addChatMessage, (const char* string_pointer), {
	var out = document.getElementById('output');
	out.value = UTF8ToString(string_pointer);
});

extern "C" {
	void createOffer() {
		dc = pc->createDataChannel("test2");

		dc->onOpen([&]() { std::cout << "[DataChannel open: " << dc->label() << "]" << std::endl; });

		dc->onClosed([&]() { std::cout << "[DataChannel closed: " << dc->label() << "]" << std::endl; });

		dc->onMessage([](std::variant<rtc::binary, rtc::string> message) {
			if (std::holds_alternative<rtc::string>(message)) {
				rtc::string sMessage = std::get<rtc::string>(message);
				std::cout << "[Received message: " << sMessage << "]" << std::endl;
				addChatMessage(sMessage.c_str());
			}
		});
	}
}

extern "C" {
	void addRemoteDescriptionOffer(char* cc) {
		std::string sdp = std::string(cc);
		pc->setRemoteDescription(rtc::Description(sdp, rtc::Description::Type::Offer));
	}
}

extern "C" {
	void addRemoteDescriptionAnswer(char* cc) {
		std::string sdp = std::string(cc);
		pc->setRemoteDescription(rtc::Description(sdp, rtc::Description::Type::Answer));
	}
}

extern "C" {
	void addRemoteCandidate(char* cc) {
		std::string candidate = std::string(cc);
		std::cout << candidate << std::endl;
		pc->addRemoteCandidate(rtc::Candidate(candidate, "0"));
	}
}

extern "C" {
	void sendMessage(char* cc) {
		if (!dc->isOpen()) {
			std::cout << "** Channel is not Open ** " << std::endl;
		} else {
			std::cout << "[Message]: ";
			std::string message(cc);
			dc->send(message);
		}
	}
}

inline const char* toString(rtc::PeerConnection::State s)
{
    switch (s)
    {
        case rtc::PeerConnection::State::New:   return "New";
        case rtc::PeerConnection::State::Connecting:   return "Connecting";
        case rtc::PeerConnection::State::Disconnected: return "Disconnected";
		case rtc::PeerConnection::State::Failed: return "Failed";
		case rtc::PeerConnection::State::Closed: return "Closed";
        default:      return "Disconnected";
    }
}

inline const char* toString(rtc::PeerConnection::GatheringState s)
{
    switch (s)
    {
        case rtc::PeerConnection::GatheringState::New:   return "New";
        case rtc::PeerConnection::GatheringState::InProgress:   return "InProgress";
        case rtc::PeerConnection::GatheringState::Complete: return "Complete";
        default:      return "Disconnected";
    }
}

int main(int, char**)
{
	rtc::Configuration config;
	config.iceServers.emplace_back("stun:stun.1.google.com:19302");

	pc = std::make_shared<rtc::PeerConnection>(config);

	pc->onLocalDescription([](rtc::Description description) {
		putDescriptionInOfferBox(rtc::string(description).c_str());
	});

	pc->onLocalCandidate([](rtc::Candidate candidate) {
		putCandidateInCandidateBox(rtc::string(candidate).c_str());
	});

	pc->onStateChange(
	    [](rtc::PeerConnection::State state) { std::cout << "[State: " << toString(state) << "]" << std::endl;});

	pc->onGatheringStateChange([](rtc::PeerConnection::GatheringState state) {
		std::cout << "[Gathering State: " << toString(state) << "]" << std::endl;
	});

	pc->onDataChannel([&](std::shared_ptr<rtc::DataChannel> _dc) {
		if(!dc) { //only the answerer has to create a new dc object
			std::cout << "[Got a DataChannel with label: " << _dc->label() << "]" << std::endl;
			dc = _dc;

			dc->onClosed([&]() { std::cout << "[DataChannel closed: " << dc->label() << "]" << std::endl; });

			dc->onMessage([](std::variant<rtc::binary, rtc::string> message) {
				if (std::holds_alternative<rtc::string>(message)) {
					rtc::string sMessage = std::get<rtc::string>(message);
					std::cout << "[Received message: " << sMessage << "]" << std::endl;
					addChatMessage(sMessage.c_str());
				}
			});
		}
	});

    emscripten_set_main_loop_arg(main_loop, nullptr, 0, true);
}

static void main_loop(void* arg)
{

}

and the html front end

    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/>
    <title>WebRTC - Copy and Paste</title>

    <button id="button" onclick="_createOffer()">Offer:</button>
    <textarea id="offer"></textarea>
    <textarea id="candidate"></textarea>

    <button id="buttonOffer" onclick="setDescriptionOffer()">set Offer:</button>
    <textarea id="answerdescription" placeholder="Paste Description. And press Enter"></textarea>

    <button id="buttonCandidate" onclick="setCandidate()">set Candidate:</button>
    <textarea id="answercandidate" placeholder="Paste Candidate. And press Enter"></textarea>

    Chat: <input id="chat">

Chat:

    {{{ SCRIPT }}}

I use it in the following manner. I have two tabs. The 'offerer' tab creates the initial data connection and offer, which are copy pasted to the 'answerer'. Which in turn generates an answer that gets pasted to the offerer. The same thing for the candidates. I built and ran the libdatachannel offerer and answerer example and it seems to be the exact same process and in that case I was able to set up a connection.
One thing that does allow me to make a connection is when I copy the answer from the "about:webrtc" page after pasting in the offer from the offerer. This immediately allows me to setup a connection and creates a functioning datachannel between the tabs without having to specify the candidates manually. This seems to be because the ICE candidates are already enumerated in the localdescription SDP. When I call WEBRTC.peerConnection[1].localDescription.sdp from the console I also get this version of the answer. However, I am unable to obtain the same localdescription using this library. Is there a way this is easily achieved? Why is the call to WEBRTC.peerConnection[1].localDescription.sdp  in the javascript portion of the library giving a different result as when doing it in the console?
Any assistance would be appreciated.

I think the issue comes from the way you handle candidates: each side outputs one description but multiple candidates. It seems your code will override each candidate by the next in the candidate box and as a result only display the last one.
There is a semantic subtlety in the API: the methods are called setRemoteDescription (as there is only one so it will replace the remote description) and addRemoteCandidate (as it will add one more candidate to the list, not replace existing candidates).

This seems to be because the ICE candidates are already enumerated in the localdescription SDP. When I call WEBRTC.peerConnection[1].localDescription.sdp from the console I also get this version of the answer. However, I am unable to obtain the same localdescription using this library. Is there a way this is easily achieved?

This can be done. You just need to wait for GatheringState to be Complete, then you can retrieve the local description with all candidates by calling pc->localDescription(). This method, called non-trickle ICE, allows for an simpler signaling as it does not require exchanging candidates, only the descriptions, but it could introduce delays if a STUN/TURN server is unreachable.

Did you publish the working example?

@paullouisageneau could you explain that into a little more detail?

The original issue was that only the last candidate was displayed in the candidate textbox, other candidates were dropped. This is unrelated to what you experience here as your example is not copy paste, and you don't trickle candidates, you wait for gathering complete to send descriptions with candidates.

I tried to make a similar connection establishment based on your copy-paste example, with the only difference that I use a WebSocket server and no copy/paste. My connection works on Firefox, but not on Chrome (same issue as above).
My code in a simplified version: [...]

The code has a bunch of issues but I don't know if it's because it's "simplified" or not: pc is a local object so it will be destroyed as soon as you leave the init_peer_connection() function, the type is not sent over the websocket but it is received it somehow, anser is written instead of anwser, a callback is set on dc instead of _dc...
You have to debug your code and check you transmit the descriptions back and forth correctly. Note it is not good practice to assume and hardcode description type, instead you should get it from description.typeString() and transmit it.

Does Chrome generates a description? The error indeed means setLocalDescription() was not called so you can't add candidates. The wrapper calls it on both createDataChannel() and setRemoteDescription(), you should check they are indeed called, there could be a race condition.

Does Chrome generate a description? The error indeed means setLocalDescription() was not called so you can't add candidates. The wrapper calls it on both createDataChannel() and setRemoteDescription(), you should check they are indeed called and don't fail.

Yes, it seems to be working, as if i log in the function handleDescription the variable peerConnection.localDescription.sdp it outputs 116600

This doesn't look right. If localDescription is set, sdp should contain the SDP description.

@tbuchs FWIW here are a few ways I have implemented "copy/paste"/"signaling server" programmatically, and programmatically with user action

https://gist.github.com/guest271314/04a539c00926e15905b86d05138c113c
https://github.com/guest271314/offscreen-webrtc/blob/main/background.js
https://github.com/guest271314/telnet-client/blob/user-defined-tcpsocket-controller-web-api/direct-sockets/direct-socket-controller.js with https://github.com/guest271314/telnet-client/blob/user-defined-tcpsocket-controller-web-api/assets/script.js

and the last time I did this with libdatachannel

https://github.com/paullouisageneau/libdatachannel/issues/544#issuecomment-1027570821
I don't think I've tried with libdatachannel-wasm, yet.

You are right, it contains the SDP description - this was just me looking at the wrong value. But I now found out that the function peerConnection.onicecandidate get called, however, the candidates of if(evt.candidate && evt.candidate.candidate) equal null and therefore the function handleCandidate doesn't get called

Null candidate means all candidates have been gathered. This would mean that the browser fails to gather any candidates, not even host ones. Does WebRTC work as expected in the browser? There could be a privacy extension interfering with it.

also if setting a candidate from firefox it says: OperationError: Failed to execute 'addIceCandidate' on 'RTCPeerConnection': Error processing ICE candidate.

Actually there are two different issues as this means the remote description is not set. Is setRemoteDescription() called before attempting to add candidates?


Best attempt to make the most unmaintainable discord bot.

Just to say a few things:

Mixture of ES5 and ES6 syntax
Axios and Fetch
Weird unneeded imports
Useless code and functions
Bloated code everywhere
Use of async and await aswell as promises together
Use of over 20 packages to do a single function
variable naming varies more than the variables themselves

Im not sure who'd use this.

ya i've planned to fix those in the future

about the mixure idk i will look into it soon
axios yea useless am gonna delet it i gues
some import is from template, gonna delet it if i hav time lul
ya
ik but im too dumb so im gonna change it from callback to await aync latr
some packages are from the module/something that might used in the future so yea
my brain are wasted and idk how to name that

all of it im goin to fix it soon

We've forked this on polytoria org


Add "comment-created-at" as output

Hope I didn't miss anything in the additions

Thanks a lot for the suggestions!

Thank you for the changes. Merging!

Released as v2.2.0 / v2


Fix list set item functions to "steal" reference

The PyList_SetItem and PyList_SET_ITEM function and macro steal a reference to the item according to the docs. So it shouldn't be refcounted. Should fix some segfaults and other errors caused by using these definitions as they were.
ref: https://docs.python.org/3/c-api/list.html
ref: https://stackoverflow.com/q/41925500

To be clear, I'm not sure that this is the right way to fix this given Cython does the reference counting here anyways. Have raised issue ( https://github.com/cython/cython/issues/2722 ) to get more information and discuss.

@auvipy, I don't think it helps anyone if you "randomly" approve pull requests that are waiting for a decision to be made.
I'm still not sure it's worth breaking user code here, and would rather have users not (need to) call them at all. Closing since it requires further debate and there might be better ways.


Extract trace_id and span_id from logs

Bug Report
Which version of the demo you are using? (please provide either a specific
commit
hash
or a specific
release).
Symptom
A clear and concise description of what the bug is.
What is the expected behavior?
I am expecting to see span_id and trace_id as separate attributes so that other tools can easily extract them. It's because the configuration is minimal. Based on the description of attributesprocessor it's not clear, whether this could be even achieved.
What is the actual behavior?
span_id and trace_id are part of the log message - hipstershop.AdService - received ad request (context_words=[binoculars]) trace_id=b9c2b0640cbcbcf8f3c7788dd7ba8651 span_id=d3cc89ce0132578f trace_flags=01
Reproduce
Run docker compose up and observe logs.
We will close this issue if:

The steps you provided are complex.
If we can not reproduce the behavior you're reporting.

Additional Context
Add any other context about the problem here.

Hi @martin-majlis-s1, attributesprocessor should not be needed. I'm able to see trace_id and span_id as separate attributes and not part of the log body. See below. It's the same for the Ad service and Recommendation service.
You can get this detailed output by enabling detailed verbosity for the logging exporter.
exporters:
  logging:
    verbosity: detailed

otel-col  | 2023-06-07T09:49:40.580Z	info	LogsExporter	{"kind": "exporter", "data_type": "logs", "name": "logging", "resource logs": 1, "log records": 1}
otel-col  | 2023-06-07T09:49:40.580Z	info	ResourceLog #0
otel-col  | Resource SchemaURL:
otel-col  | Resource attributes:
otel-col  |      -> telemetry.sdk.language: Str(python)
otel-col  |      -> telemetry.sdk.name: Str(opentelemetry)
otel-col  |      -> telemetry.sdk.version: Str(1.15.0)
otel-col  |      -> service.namespace: Str(opentelemetry-demo)
otel-col  |      -> service.name: Str(recommendationservice)
otel-col  | ScopeLogs #0
otel-col  | ScopeLogs SchemaURL:
otel-col  | InstrumentationScope opentelemetry.sdk._logs._internal
otel-col  | LogRecord #0
otel-col  | ObservedTimestamp: 1970-01-01 00:00:00 +0000 UTC
otel-col  | Timestamp: 2023-06-07 09:49:35.686955264 +0000 UTC
otel-col  | SeverityText: INFO
otel-col  | SeverityNumber: Info(9)
otel-col  | Body: Str(Receive ListRecommendations for product ids:['0PUK6V6EV0', 'HQTGWGPNH4', 'OLJCESPC7Z', 'L9ECAV7KIM', '1YMWWN1N4O'])
otel-col  | Attributes:
otel-col  |      -> otelSpanID: Str(ba6c54c117141502)
otel-col  |      -> otelTraceID: Str(97ffe23dd3d2851cbabcfdfdca030f46)
otel-col  |      -> otelServiceName: Str(recommendationservice)
otel-col  | Trace ID: 97ffe23dd3d2851cbabcfdfdca030f46
otel-col  | Span ID: ba6c54c117141502
otel-col  | Flags: 1
otel-col  | 	{"kind": "exporter", "data_type": "logs", "name": "logging"}


Cannot create symlink to k3s cache dir if it is on a different volume

User reported this error when the home directory is on a network drive:
Error Starting Kubernetes: EXDEV: cross-device link not permittted

Weird ... this isn't for the executables that we link into /usr/local/bin because we're calling fs.symlink which I certainly hope does symlinking and not hardlinking. None of our own code calls fs.link, but we have a pile of dependencies that could:

node_modules/fs-extra/lib/ensure/link.js - called in CreateLink and CreateLinkSync
but:  fsExtra.link protected by isUseHardLink in builder-util/out/fs.js

app-builder-lib/out/asar/asarUtil.js - possibly something in the asar pseudo-filesystem

terser-webpack-plugin/node_modules/cacache/lib/util/move-file.js

decompress/index.js

cacache/lib/util/move-file.js

You are right that the symlinks can't be the problem. I think it is the fs.rename calls that try to move a file, that are not allowed to cross device boundaries:
src/k8s-engine/hyperkit.ts
243:      await fs.promises.rename(outPath, this.imageFile);

src/k8s-engine/k3sHelper.ts
346:      await fs.promises.rename(workDir, path.join(cacheDir, version));
508:      await fs.promises.rename(workPath, userPath);

src/k8s-engine/wsl.ts
145:      await util.promisify(fs.rename)(outPath, this.distroFile);

PS:

this isn't for the executables that we link into /usr/local/bin because we're calling fs.symlink

It is irrelevant for this issue, but I don't think these links are made via fs.symlink because they have to be done from inside the WSL distro. I think they are created by https://github.com/jandubois/tinyk3s/blob/main/run-k3s#L31-L37

Related, but probably not the same:
I copied the source code over to an external volume, thinking this might replicate the conditions, but got a different error during startup:
Error Starting Kubernetes
Command failed: sh -c 'chown root "/Volumes/EXTERNAL/desktop/resources/darwin/docker-machine-driver-hyperkit"
&& chmod u+s "/Volumes/EXTERNAL/desktop/resources/darwin/docker-machine-driver-hyperkit"
&& chown :admin "/Volumes/EXTERNAL/desktop/resources/darwin/hyperkit"'
chown: /Volumes/EXTERNAL/desktop/resources/darwin/docker-machine-driver-hyperkit: Operation not permitted

I copied the source code over to an external volume, thinking this might replicate the conditions, but got a different error during startup:

Note that the original issue here is about Windows, not macOS. They use different code paths, so the errors are not comparable.
If you want to use an external volume on macOS, you must make sure you mount it with the suid option; otherwise adding the suid bit on docker-machine-driver-hyperkit will have no effect.
You can do that permanently by adding the UUID of your external volume in /etc/fstab, like this (from my external ThunderBolt SSD Raid array):
$ cat /etc/fstab
#
# Warning - this file should only be modified with vifs(8)
#
...
# ThunderBlade: mount with suid
UUID=1E6A134F-3306-3560-8D48-56865A4D3889 none hfs rw,suid,auto

Should that part about mounting it with the suid bit be part of the docs, or is this an unlikely path for macos users to follow?

Should that part about mounting it with the suid bit be part of the docs, or is this an unlikely path for macos users to follow?

That was really just for you (or any developer who runs RD from a different device) because you mentioned running from a different device on macOS as a test. As a user you should install the app into /Applications, which will be on your boot partition. But I'll create a separate issue for it anyways, just in case.
Please let's keep this Github issue focused on the Windows issue.

Finally got a second user running on the VM with a home directory on drive E:, and can't reproduce this problem, although kubernetes fails to start up but k3s is running. Error messages, when I get them, vary. One time it reported not being able to connect to a localhost on port 6xxx.

I can confirm that lusrmgr.msc is disabled on Windows Home.
I'll try to repro the original issue on a Windows Pro machine now. I suspect that you have to remove all traces of a previous RD install to force RD to download all files again.

It looks like the kubeconfig file is created in the tmp directory and then moved (renamed) to the users home directory. That does not work when the directories are on different drives:

I only saw this on the distro file - will look into this as well.

Since the fix didn't make it into v0.2.0, here is a workaround by calling the app from the commandline:
set TMP=%HOMEDRIVE%%HOMEPATH%\temp
set TEMP=%TMP%
mkdir %TMP%
"%LOCALAPPDATA%\Programs\Rancher Desktop\Rancher Desktop.exe"

Verifying that this workaround is necessary.

Verifying that this workaround is necessary.

@ericpromislow I can assure you that this workaround is necessary with the v0.2.0 release on my setup where the home directory has been moved to a separate drive. 😄

I get a different error with #292 merged:

So this issue is not yet fixed.

This was fixed by #304


Presence validation for #{name}_id interferes with attacher.store!

I wanted to make sure a file is always attached to the model so I used this validation:
class Attachment < ActiveRecord::Base
  attachment :file
  validates_presence_of :file_id, :file_filename, :file_size, :file_content_type
end

When I save an Attachment, it fails because the file_id is empty, but the other attributes are filled in. I figured out that the attacher.store! method called in a before_save hook is supposed to set the #{name}_id.
Removing the file_id presence validation works around the issue.
How would you make sure that a file is always present?

I would deal with this via a database constraint. There should be no circumstance where the file id is missing because of user input, and errors in user input is what validations are meant to catch. In this case I would want a failure, not a validation error. If the file_id is missing it's likely because of a bug, and not something that the user has done, so giving the user feedback about the error doesn't really gain you anything.

You should  just be able to:
class Attachment < ActiveRecord::Base
  attachment :file
  validates_presence_of :file
end

I take that back, actually. There obviously are circumstances when this could happen. My thinking was so ingrained in my current use of Refile that I've forgotten about obvious scenarios.

validates_presence_of :file leads to some quirks. I'll close this and we can continue the discussion in PR #359.


fix(client, i18n): use block for video challenge right breadcrumb

One more place affected by wrong link text in breadcrumb-right as in #41271
Checklist:

[x] I have read freeCodeCamp's contribution guidelines.
[x] My pull request has a descriptive title (not a vague title like Update index.md)
[x] My pull request targets the main branch of freeCodeCamp.
[x] All the files I changed are in the same world language, for example: only English changes, or only Chinese changes, etc.

test


[5.3] Add not_before and not_after rules

Added to 2 date rules that I always miss:
not_before - same date or after
not_after - same date or before
A bit of code has been refactored, so if approved someone more experienced should probably also look at this to make sure nothing won't be broken

What's the difference between not_before and the current after?

after accepts only date after date given not including given date and not_before accepts given date and date after it, so not_before is after + given date. Same with not_after rule.
For example, now when I want to set paid_at field that should be today or future I have to use before:tomorrow and it would be much obvious to use not_after:today but it will be even more helpful when I have 2 dates and day might equal or second should be after the first. Using current rules after or before won't work because they won't handle case when dates are same.

I think before:tomorrow serves the purpose, it means today or any day in the past is valid which is what you want to have, right?

Yes, this case yes, it can be do this way, but if have 2 date fields: start and end and we want end >= start as far as I know there's now way to validate it using predefined validation rules, after rule will fail end = start

You can do the following:
"end" => "after:".Carbon::createFromFormat("Y-m-d H:i:s", input('start'))->yesterday()

Yes, of course this can be done this way. I can calculate any date and type in, but as you see syntax would be much cleaner if such rules could be used. If you look at http://stackoverflow.com/questions/27018045/how-to-make-an-input-date-field-greater-than-or-equal-to-another-date-field-usin you will see that other people also are looking for after and before that use >= or <= operator


Revert "add: daily reminders"

Reverts IEEE-VIT/concy-bot#16 @mogiiee they have edited the hourly reminders and made changes in the hourly reminders function instead of the daily reminder function, this needs to be reviewed and corrected.

on it @mogiiee


proposal: x/tools/cmd/stringer: parse strings to enums

stringer generates to-string methods for enums, which is only half of the marshaling equation.
Please have stringer also generate from-string parsing methods for enums.

Dup of #23535 and #55860.  Closing because we've already made a decision here.


Add lexer for graphviz

Discussion here: #731
Resolves #731

Thanks for the contribution! Can you please add an example file as well?

Thanks for the contribution! Can you please add an example file as well?

I'll take som inspiration from this PR: https://github.com/pygments/pygments/pull/1519/files
Seems that there is something missing in other files as well.

I'll take som inspiration from this PR: https://github.com/pygments/pygments/pull/1519/files
Seems that there is something missing in other files as well.

There's some examples here that you could copy: https://github.com/xflr6/graphviz/tree/master/examples/

There's some examples here that you could copy: https://github.com/xflr6/graphviz/tree/master/examples/

I updated the PR.

I updated the PR.

I pushed an update ot address the stuff that came up in the review.

I pushed an update ot address the stuff that came up in the review.

Merged for the next release, thanks for your contribution!


Question: updates

I'm confused about the updates options:

Sparkle.
Homebrew
ArielUpdater

ArielUpdater seems nice, but kind of heavy weight. I personally would rather it happen automatically (thorough Sparkle?) or I will just update it through Homebrew. I don't understand what takes prescience and how to choose which thing is trying to do updates. If it matters, I'm running macOS High Sierra.

Hi @mbierman
Sorry if this is confusing, 2.0 is still in beta and not officially released, so I haven't had a chance to cleanup the documentation to reflect the upcoming changes and everything.
Answering your question

Sparkle : is gone from Aerial starting with 2.0 (including the betas), reason is, it simply can no longer auto update for Catalina and above and on top of not working, its causing issues where the you can't exit the screensaver on those OSes.

So from then on there will only be two options:

Homebrew : that has been there for a while and will stay
AerialUpdater : this is the alternative I made to replace Sparkle

It's still very early but it will be able to run a periodic background check (immediately quitting) in next build, so it will very much not be heavy weight. There's a long discussion in a pinned issue with the various issues that lead to writing AerialUpdater, I know running one more updater just for a screen saver is weird, but with the sandboxing restrictions imposed by Catalina and above, that's the best I can do.
If you are bothered by it then go homebrew.

Thank you so much! I didn’t mean to come off as a complaint. I love Ariel. Best screensaver I have ever had.
Thanks for the explanation. This works for me!

No worries and thanks !

@glouel sorry one more question... if I use homebrew to update, does that update the screensaver and videos?
Many thanks.

Hey @mbierman
So homebrew (or Aerialupdater for that matter) only updates the screen saver itself.
For videos, it's the screen saver that periodically finds new videos when they come (sometimes I need to push an update, sometimes it will pick them on its own, depends).
So whatever update method you use (including downloading manually), it has 0 impact on the videos you get.
The only difference between homebrew and the updater is that homebrew will not give you betas, whereas you can opt in to those in the updater.


Add better performance metrics to Grafana

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

See this predesign for some additional context.
Problem
We've got a sort of wonky set of performance metrics in Grafana right now. For example, we measure "Initial Homepage Render" as the time between AuthScreens.constructor being called and AuthScreens.componentDidMount being called. It's not clear what this metric really means or if it's indicative of anything real to the user.
As a result, the performance metrics we can measure
Solution
Build out a better, more accurate set of Performance metrics and start tracking them with Grafana. This could include:

TTI (Time to interactive)
LCP (Largest Contentful Paint)
FID (First input delay)
TBT (Total blocking time)
Frustration index

Others? Of course, all these metrics should be tracked on a per-platform basis.
View all open jobs on GitHub

I also think we agreed to nix Frustration Index because it's more complex and less actionable than other metrics here

Beyond just sending these metrics to a remote server, I think it would also be helpful to log these metrics locally to make it easier to benchmark individual PRs.

Oh yeah, very interested, will add this to my tasks 💪

Taking this out of planning. It would be a somewhat big lift for us to make graphs.expensify.com public, so we should maybe just publish these metrics separately than our other Grafana graphs

Carved this out here as what I think should be one of @hannojg's top priorities. @hannojg if you're blocked on https://github.com/Expensify/App/issues/11711, I'd recommend spending some time on this in the meantime.

@hannojg should we think about handing this off to someone else?

We could, what is the priority on this one? From what I understand you are trying to heavily focus on bugs and performance issues right now, so I was prioritising that so far

I posted a discussion in Slack  on the priorities, though didn't add this one. I kind of think that helping any useful tests for our CI initiative is higher value – mainly because we are getting close to launching it but we only have one test at the moment.

I would say this is currently lower priority than bugs, but still quite valuable in the long-term because it helps give us a better objective framework to talk about performance, particularly for those of us that aren't as well-versed in the various performance testing and profiling tools there are out there for testing React/React Native/web/mobile apps.

Unassigning myself from this issue, because we completed the predesign and I'm not going to implement it myself.

I just created these two PRs:

https://github.com/Expensify/App/pull/13997
https://github.com/Expensify/App/pull/14044

With these changes we will send events with environment information to Grafana, which is super important to separate.
In addition to that it makes the TTI calculation more accurate.
In general we found that TTI is the main measurement that we want to take. Any other metrics aren't really appealing for mobile platforms.
There might be special performance for the web platforms.
However, the measurements we send to Grafana (TTIs for various flows), are mainly there to help us catch performance issues within the staging/production app (e.g. after new slow code got merged)


[W5][W14-3]Sison Erjill Romani Anes

Add SortCommand
Update the relevant I/O test cases and added JUnit test
Update UserGuide.adoc to reflect 'Sort' command

Sort is a very useful command for the address book. If possible, we can improve it even more by allowing the user to sort according to first name or by surname.

Wow, I have been waiting for this method for years! Sorting the names will help us identify specific individuals faster and more efficiently. A future extension can be to allow the sort command to sort a fixed number of members!

That's a really enthusiastic reply right there @bos10. Great job @erjillsison! Best work I've seen in years!

It would be nice if we could choose ascending/descending sort type as well as sorting by other fields.


Rename soon-to-be deprecated resultcallback

Click 8.1 will remove resultcallback in favour of result_callback.
Signed-off-by: František Nečas<EMAIL_ADDRESS>

Hmmm, seems the change breaks tests:
___________________ ERROR collecting tests/unit/test_base.py ___________________
tests/unit/test_base.py:11: in <module>
    import tmt.cli
tmt/cli.py:304: in <module>
    ???
E   TypeError: 'NoneType' object is not callable

Is the new name working in the same way?

Hmm, looking into the problem, it works locally for me, I am on click 8.0... The old was just calling the new one (with a warning) but perhaps they have changed it a bit later and there is an older version in the CI...

Second network glitch in a test using container. Let's increase the test duration for these: #887 .

Except for the test duration glitch everything green. Merging.


Adds ReplacePropertiesServiceImpl

First pass at adding ReplacePropertiesService Implementation.
This adds the service and updates the pieces that were using some of the code that got pulled into this (from ContentExposingResource).
https://jira.duraspace.org/browse/FCREPO-3060

@bbpennel @whikloj @dbernstein  - this is ready for review.


Add a quick Mute/Unmute and PTT fixed on mobile

Hi,
i think it would be awesome if there are 2 buttons with fixed position (so always visible) with Mute/Unmute function and PTT, in the bottom right corner ( where usually there is nothing since most of the smartphones have the camera on top ).
This feature would be needed only on mobile devices.
It's a bit unhandy to tap on the video then tap on mute/unmute.
Often i disable my webcam by mistake.

I do not agree. It was like this in the previous version and the buttons were on videos when there are more participants. I think it is good how it is now. Of course it could be configurable were the buttons are, but I think it is not something critical.

I guess this is fixed with the "separate media buttons" option?


CameraException(captureTimeout, Picture capture request timed out)

It can already be previewed in the interface, and then call the takePicture method to take a picture and report this error,

@LUYANYI
When you open an issue, please provide all or some information requested in the template, so that we'll have enough details to verify.
So, for your issue, please provide flutter doctor -v, camera plugin version and a minimal code sample that shows the exception / behavior you are seeing.


The current status of downloading images from cache

Since Firefox and Chrome both implemented cache partitioning, extensions can't download images from cache anymore.
Firefox:

cache partitioning causes web page saving extensions to waste more time and data
Allow extensions to specify request context in the browser.downloads.download API
Enable extensions to send network requests (fetch) with a specific cookieStoreId (container tab context)

Chrome:

cache partitioning causes web page saving extensions to waste more time and data - which is marked as wontfix 😕

I don't believe allowing extensions to look in any cache partition or even in just the current page's cache partition would be feasible since that would allow malicious extensions to be able to infer if a resource is cached or not by the user.

Test suite
https://github.com/eight04/webext-hit-the-cache
Firefox workaround
You can turn off cache partitioning by setting privacy.partition.network_state to false in about:config.
Chrome workaround
Turn off this feature via the CLI option: --disable-features=SplitCacheByNetworkIsolationKey.

Hi! As a long-time Firefox user who all too-often leaves image tabs open until the hosting websites remove them, I found this addon hoping it would be able to directly access the cache.
I checked my about:config, and privacy.partition.network_state is already set to false, so that workaround does not work.

leaves image tabs open until the hosting websites remove them

The cache might already expire in this case. You can visit about:cache and see if the image is still there.

In that case, is there anywhere in Firefox's documentation where the images are held, since it seems the images are still definitely being held somewhere.

In that case, is there anywhere in Firefox's documentation where the images are stored, since it seems the images are still definitely being held somewhere.

IDK. Why do you think the image is still held somewhere?


duplication of content causes incorrect checkbox value

Link to reproduction
No response
Describe the Bug
when using the "duplicate" function from the menu for an item in a collection, it sometimes causes a checkbox to have an incorrect value.
To Reproduce
checkbox:
 {
      name: 'showContactCta',
      label: 'Show contact CTA',
      type: 'checkbox',
      localized: true
    }

Payload Version
2.0.13
Adapters and Plugins
No response

I fixed a few errors related to duplicating localized fields. In 2.0.13 Payload is copying the currently selected locale to the defaultLocale due to a bug I fixed yesterday that isn't deployed yet.
It could be related to that. Is the value the same for every locale when it happens?

it happens both ways, if i duplicate from the default locale into another one, or from the other locale into the default locale. if the value was "true" to begin with when it gets duplicated, it becomes unchecked, and when you save it remains "true" when it should be "false".


Add react-leaflet usage to README.md

This was a bit fiddly, so I thought it was worth sharing.
See also my confusion on https://github.com/ebrelsford/Leaflet.loading/issues/48

Thanks for this, happy to make it easier to use with other libraries!


Some dialyzer / code organization things

Dialyzes clean on 17.5 - no complaints about gb_trees escaping anymore

:+1:, thanks mate.

Looks like this is generating some weirdness under Erlang 16:
==> lasp (dialyzer)
lasp_orset_gbtree.erl:249: The call lasp_orset_gbtree:merge(New::gb_tree(),Acc::any()) contains an opaque term as 1st argument when terms of different types are expected in these positions
lasp_orset_gbtree.erl:257: The created fun has no local return
lasp_orset_gbtree.erl:261: The call lasp_orset_gbtree:merge(New::gb_tree(),Acc::any()) contains an opaque term as 1st argument when terms of different types are expected in these positions
lasp_orset_gbtree.erl:267: The created fun has no local return
lasp_orset_gbtree.erl:276: The call lasp_orset_gbtree:merge(New::gb_tree(),Acc::any()) contains an opaque term as 1st argument when terms of different types are expected in these positions

I see that too. :frowning:

Maybe https://github.com/lasp-lang/lasp/commit/c47e82147e569e6af289c7673a443265e939cdf1?

That cleans it up, yes. Sad that opaque types are sort of broken in that way on 16.

Right, OK.


Adding logic to switch dependencies between Debian and Ubuntu

This works for running the installer, but no confirmed install yet for OVH and KS-16

Approved assuming genisoimage actually really fixes the issue ;)

it works to get installer running. Still waiting on KVM credentials to see what's wrong.


data: sindhuinti

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[✅ ] My code follows the code style of this project.
[✅ ] My change requires changes to the documentation.
[ ✅] I have updated the documentation accordingly.
[ ✅] All new and existing tests passed.
[ ✅] This PR does not contain plagiarized content.
[✅ ] The title of my pull request is a short description of the requested changes.

@EmmaDawsonDev modified the name of this file 👍🏻


update opengraph meta tags for react

open graph meta tag code was previously generated via handlebar helpers and served in the handlebars templates.  Now that the app is a react app, requests by facebook, twitter, etc. for opengraph info will need to be handled differently.  Perhaps they can still be added via handlebars to the index page depending on the request.


Bbond/map

Reopened due to code Tristan/maps only being semi-functional, containing API keys in code, not merged to main (so the issue should have never been closed).

Lower codecov due to map functionality not being tested in GitHub due to me not being comfortable with having a key that can potential cost be connected to an automated system that any of my teammates can run.


Unable to exclude node_modules for lint

Bug Report or Feature Request (mark with an x)
- [x ] bug report -> please search issues before submitting
- [ ] feature request

Versions.

Repro steps.

I am trying to exclude my node_modules from linting.
I tried adding the excludes in the lint property in the .angular-cli.json file.
However it did not work.
"lint": [
{
"project": "src/tsconfig.app.json",
"exclude": "/node_modules//"
},
{
"project": "src/tsconfig.spec.json",
"exclude": "/node_modules//"
},
{
"project": "e2e/tsconfig.e2e.json",
"exclude": "/node_modules//*"
}
The log given by the failure.

Desired functionality.

To exclude the node_modules from linting.
Mention any other details that might be useful.

I tried a few different formats for the exclude, none of them worked:
"exclude": "/node_modules/"
"exclude": "/node_modules/"
"exclude": "/node_modules/"

@kvanlaan how do you verify it is not being excluded? Is there a specific package that's giving you linting errors?

Same issue here. Exclude doesn't work.
Reproduced with https://github.com/DmitryEfimenko/ngx-messages
$ ng lint
Failed to load [...]/proj/node_modules/ngx-messages/tslint.json: Could not find custom rule directory: node_modules/codelyzer

Hi, for me, Wykks answer didn't work.
This is the right answer for me: https://github.com/angular/angular-cli/issues/5063#issuecomment-282802454
As it is said, we should exclude like so:
"lint": [   {     "project": "src/tsconfig.app.json",     "exclude": "**/node_modules/**/*"   },   {     "project": "src/tsconfig.spec.json",     "exclude": "**/node_modules/**/*"   },   {     "project": "e2e/tsconfig.e2e.json",     "exclude": "**/node_modules/**/*"   } ],


Include pub/dev info in Hover Cards

Feature Description
I collect games from certain developers and publishers, so it is sometimes useful to me to quickly see the developer or publisher of an app.
Something like this:

Thanks for implementing! <3


Upgrade GulpV0/GulpV1 to NodeJS 16

Task name: GulpV0/GulpV1
Description:

Added Node16 execution handler
Bump Agent version to 2.206.1 (as first which have node 16 handler)

Documentation changes required: N
Added unit tests: N
Checklist:

[x] Task version was bumped - please check instruction how to do it
[x] Checked that applied changes work as expected

/azp run


Add private network mode

@nprokopic Meanwhile the entire network section has moved in the schema into the /connectivity section. If this PR is going to be merged, it would be great if the additions would end up under /connectivity, too.

@nprokopic Meanwhile the entire network section has moved in the schema into the /connectivity section. If this PR is going to be merged, it would be great if the additions would end up under /connectivity, too.

I rebased my other PR and updated it according to the new schema, will do the same with this one.

@nprokopic Another change happened that affcets this PR. Yesterday we changed this repo to have the default values encoded in the values.schema.json. values.yaml gets generated from the schema using https://github.com/giantswarm/helm-values-gen


Applying a filter to a row_count 'same as' comparison aggregation

Describe the bug
Applying a filter to a row_count check only applies to the metric, not the external column we're evaluating against.
I can see why this is expected behaviour, but I would like a way to optionally apply the filter to the comparison aggregation.
To Reproduce
Steps to reproduce the behavior:

Create a new test in scan.yml

filter foo [hourly]:
  where: from_iso8601_timestamp(time) between DATE_ADD('hour', -1, NOW()) AND NOW()

checks for foo [hourly]:
  - row_count same as bar

Run soda scan with -V verbose flag

Observe the "otherRowcount" SQL doesn't include the filter and so counts all rows

Soda Core 3.0.4
Reading configuration file "configuration.yml"
Reading SodaCL file "checks_foo.yml"
Scan execution starts
Query datalake_dev.foo[hourly].aggregation[0]:
SELECT
  COUNT(*)
FROM datalake.foo
WHERE from_iso8601_timestamp(time) between DATE_ADD('hour', -1, NOW()) AND NOW()
Query datalake_dev.bar.aggregation[0]:
SELECT
  COUNT(*)
FROM datalake.bar
Scan summary:
2/2 queries OK
  datalake_dev.foo[hourly].aggregation[0] [OK] 0:00:01.819557
  datalake_dev.bar.aggregation[0] [OK] 0:00:01.262278
1/1 check FAILED:
    foo [hourly] in datalake_dev
      row_count same as bar [FAILED]
        value: -12047
        rowCount: 9
        otherRowCount: 12056
Oops! 1 failures. 0 warnings. 0 errors. 0 pass.

**Context**
As above

**OS**: MAC
**Python Version**: 3.8.9
**Soda SQL Version**: 3.0.4
**Warehouse Type**: AWS Athena

Sorry, I've opened this as a bug, but it's a feature request

Hi @paulskipprhudson, Soda SQL will soon be deprecated in favor of the Soda Core. It seems to me your issue is actually related to Soda Core rather than to Soda SQL. May I ask you to move it to https://github.com/sodadata/soda-core/issues? Many thanks!


Example does not work

Hi Dominik,
could it be that the example app is broken with the current release of meteor (<IP_ADDRESS>)?
Just checked it out and tried to start it and I get the following error:
W20150312-14:26:03.534(1)? (STDERR)
W20150312-14:26:03.536(1)? (STDERR) /Users/ap/.meteor/packages/meteor-tool/.1.0.36.dkfy8t++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173
W20150312-14:26:03.536(1)? (STDERR) 						throw(ex);
W20150312-14:26:03.537(1)? (STDERR) 						      ^
W20150312-14:26:03.537(1)? (STDERR) TypeError: Cannot read property 'Command' of undefined
W20150312-14:26:03.537(1)? (STDERR)     at shared/lib/commands.coffee:2:51
W20150312-14:26:03.537(1)? (STDERR)     at /Users/ap/Documents/workspaces/github-workspace/space-ui/examples/TodoMVC/.meteor/local/build/programs/server/app/shared/lib/commands.coffee.js:31:3
W20150312-14:26:03.537(1)? (STDERR)     at /Users/ap/Documents/workspaces/github-workspace/space-ui/examples/TodoMVC/.meteor/local/build/programs/server/boot.js:168:10
W20150312-14:26:03.537(1)? (STDERR)     at Array.forEach (native)
W20150312-14:26:03.537(1)? (STDERR)     at Function._.each._.forEach (/Users/ap/.meteor/packages/meteor-tool/.1.0.36.dkfy8t++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/underscore/underscore.js:79:11)
W20150312-14:26:03.538(1)? (STDERR)     at /Users/ap/Documents/workspaces/github-workspace/space-ui/examples/TodoMVC/.meteor/local/build/programs/server/boot.js:82:5
=

Cheers,
Gerwin

Hey Gerwin!
it should work now, sorry I forgot to update the example to use<EMAIL_ADDRESS>version :wink:


Thank god for your library

THANK YOU
I have such a long painful history with fuse.js, i eventually just tried it again and remember why its just the worst yet somehow the most popular.
Your library is freaking awesome, just wanted to say thanks

:heart:
glad someone likes it :)
i dont tend to write libs with the friendliest APIs, so i'm always amused when people actually manage to use them with any amount of success :)


BCP: authorize with x-api-key header

Is your feature request related to a problem?
I would like to set a custom header in particular the "x-api-key" to authorize the reuqest.
The server side already works fine but i could not run my request with the banana cake pop ui
The solution you'd like
Add another Authoization Type ApiKey which fills the x-api-key header with the provided value or add a custom header Type with a key value pair wich will be added to the request headers
Product
Banana Cake Pop

@spiesserheim  you can add the header in the HTTP Headers section at the bottom:


提取的文件支持层级

很多的文件都提取在同一个文件中，目前是没有层级的，维护和阅读不是很友好。希望可以支持按文件名分层或者其他支持方式。

你是指希望提取的中文，根据被提取的源文件目录，在不同目录生成对应的zh-CN.json吗？？能否举个例子，我好理解需求

比如说我的views目录下面有a.vue,b.vue，然后提取出来的json文件是
{
a:{
"key1":"11"
},
b:{
"key2":"22"
}
}

需要使用自定义配置，同时改两处,先自定义key,在去修改key-value的生成
rules: {
   vue: {
       customizeKey: function (key, path) {
         const dir = path.split('/')[1].replace('.vue', '')
         return `${dir}.${key}`
       },
    },
},
// 参数：
  // allKeyValue：已遍历的所有文件的key-value
  // currentFileKeyMap: 当前文件提取到的key-value
  // currentFilePath: 当前遍历的文件路径
adjustKeyMap(allKeyValue, currentFileKeyMap, path) {
    // 如果当前文件提取过中文
    if (Object.keys(currentFileKeyMap).length > 0) {
      const dir = path.split('/')[1].split('.')[0] // 文件名
      allKeyValue[dir] = {}
      Object.keys(currentFileKeyMap).forEach((key) => {
        const v = currentFileKeyMap[key]
        allKeyValue[dir][v] = v
        delete allKeyValue[key] // 删除原始文件的key-value
      })
      return allKeyValue
    } else {
      return allKeyValue
    }
  },

你再结合自身项目，改下案例代码

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
此 issue 已被自动锁定，因为关闭后没有任何近期活动。如果有相关 bug，请重新创建一个新 issue。


How to open menu?

Is there a key to open the menu? When yes, which one? It does not appear to work for me, help would be nice.

Hello, the key is tab. If it didnt work, theb install visual c++ redistributable (2017-2019)

i recommend to install all https://www.techpowerup.com/download/visual-c-redistributable-runtime-package-all-in-one/?amp

Thank you, it works now!

np


#12380: Migrate moreh_bmm_backward operation from tt_eager to ttnn

Ticket
Link to Github Issue: #12380
Dependency:

PR: #12250: port moreh_matmul from tt_dnn to ttnn #12251
PR: #12321: Migrate moreh_bmm operation from tt_eager to ttnn #12322

Problem description
moreh_bmm_backward was deprecated alongside tt_dnn. This PR ports it to ttnn using its operation format.
What's changed

Move device code to ttnn
Create new wrapper code for ttnn with new modules

What's not changed

Removed moreh_bmm_backward's tt_dnn implementations (Reason: Deprecated moreh_bmm_backward is being called by others operations)

Checklist

[ ] Post commit CI passes
[x] Blackhole Post commit (if applicable): Not available.
[x] Model regression CI testing passes (if applicable): Not available.
[ ] New/Existing tests provide coverage for changes

I'll close this PR. moreh_bmm and moreh_bmm_backward will be handled at this pull request.


Dart code generator for Kiota

Thanks for the great work on this!
Since the work is very much in progress on that, I'd expect we merge de different feature branches into kiota-community/kiota-dart:main first, and periodically. And then later, once we have more confidence, packages are publishes etc... we'd merge the main branch of kiota-community/kiota-dart to here.
This would allow us to gather early feedback, make incremental changes, validate CI changes, etc...
What do you think?
CC @ricardoboss @andreaTP

Created a new PR at the proper location, so closing this one/


TypeError: __init__() got an unexpected keyword argument 'username' in superset-worker when trying to deploy latest Helm chart

This is my first time trying to deploy Superset, and I want to deploy it into a Kubernetes cluster. I'm following the guide on https://superset.apache.org/docs/installation/running-on-kubernetes and I believe I have done all the relevant config steps (I skipped the SMTP settings, System packages settings, Data sources, and Alerts and Reporting).
How to reproduce the bug

Deploy the latest Helm chart (superset 0.8.10`) to Kubernetes with the following config (notice the placeholders):

values.yaml

postgresql:
  postgresqlPassword: ${jsonencode(postgresql_password)}
configOverrides:
  secret: |
    SECRET_KEY = '${secret_key}'
  enable_oauth: |
    # This will make sure the redirect_uri is properly computed, even with SSL offloading
    ENABLE_PROXY_FIX = True

    from flask_appbuilder.security.manager import AUTH_OAUTH
    AUTH_TYPE = AUTH_OAUTH
    OAUTH_PROVIDERS = [
        {
            "name": "google",
            "icon": "fa-google",
            "token_key": "access_token",
            "remote_app": {
                "client_id": os.getenv("GOOGLE_KEY"),
                "client_secret": os.getenv("GOOGLE_SECRET"),
                "api_base_url": "https://www.googleapis.com/oauth2/v2/",
                "client_kwargs": {"scope": "email profile"},
                "request_token_url": None,
                "access_token_url": "https://accounts.google.com/o/oauth2/token",
                "authorize_url": "https://accounts.google.com/o/oauth2/auth",
                "authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}
            },
        }
    ]

    # Map Authlib roles to superset roles
    AUTH_ROLE_ADMIN = 'Admin'
    AUTH_ROLE_PUBLIC = 'Public'

    # Will allow user self registration, allowing to create Flask users from Authorized User
    AUTH_USER_REGISTRATION = True

    # The default user self registration role
    AUTH_USER_REGISTRATION_ROLE = "Admin"
bootstrapScript: |
  #!/bin/bash
  pip install psycopg2==2.9.1 \
    authlib==1.2.0 \
    redis==3.2.1 \
    psycopg2-binary==2.9.6 \
    sqlalchemy-bigquery==1.5.0 \
    elasticsearch-dbapi==0.2.5 &&\
  if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
extraEnv:
  AUTH_DOMAIN: ${jsonencode(domain_name)}
extraSecretEnv:
  GOOGLE_KEY: ${jsonencode(google_oauth_client_id)}
  GOOGLE_SECRET: ${jsonencode(google_oauth_client_secret)}

Expected results
All Pods come up healthy.
Actual results
The superset-worker Pod fails with the following stacktrace:
superset [2023-04-04 17:43:16,310: CRITICAL/MainProcess] Unrecoverable error: TypeError("__init__() got an unexpected keyword argument 'usern
superset Traceback (most recent call last):
superset   File "/usr/local/lib/python3.8/site-packages/kombu/transport/virtual/base.py", line 925, in create_channel
superset     return self._avail_channels.pop()
superset IndexError: pop from empty list
superset
superset During handling of the above exception, another exception occurred:
superset
superset Traceback (most recent call last):
superset   File "/usr/local/lib/python3.8/site-packages/redis/connection.py", line 988, in get_connection
superset     connection = self._available_connections.pop()
superset IndexError: pop from empty list
superset
superset During handling of the above exception, another exception occurred:
superset
superset Traceback (most recent call last):
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/worker.py", line 203, in start
superset     self.blueprint.start(self)
superset   File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 116, in start
superset     step.start(parent)
superset   File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 365, in start
superset     return self.obj.start()
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 326, in start
superset     blueprint.start(self)
superset   File "/usr/local/lib/python3.8/site-packages/celery/bootsteps.py", line 116, in start
superset     step.start(parent)
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/connection.py", line 21, in start
superset     c.connection = c.connect()
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 422, in connect
superset     conn = self.connection_for_read(heartbeat=self.amqheartbeat)
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 428, in connection_for_read
superset     return self.ensure_connected(
superset   File "/usr/local/lib/python3.8/site-packages/celery/worker/consumer/consumer.py", line 454, in ensure_connected
superset     conn = conn.ensure_connection(
superset   File "/usr/local/lib/python3.8/site-packages/kombu/connection.py", line 381, in ensure_connection
superset     self._ensure_connection(*args, **kwargs)
superset   File "/usr/local/lib/python3.8/site-packages/kombu/connection.py", line 433, in _ensure_connection
superset     return retry_over_time(
superset   File "/usr/local/lib/python3.8/site-packages/kombu/utils/functional.py", line 312, in retry_over_time
superset     return fun(*args, **kwargs)
superset   File "/usr/local/lib/python3.8/site-packages/kombu/connection.py", line 877, in _connection_factory
superset     self._connection = self._establish_connection()
superset   File "/usr/local/lib/python3.8/site-packages/kombu/connection.py", line 812, in _establish_connection
superset     conn = self.transport.establish_connection()
superset   File "/usr/local/lib/python3.8/site-packages/kombu/transport/virtual/base.py", line 949, in establish_connection
superset     self._avail_channels.append(self.create_channel(self))
superset   File "/usr/local/lib/python3.8/site-packages/kombu/transport/virtual/base.py", line 927, in create_channel
superset     channel = self.Channel(connection)
superset   File "/usr/local/lib/python3.8/site-packages/kombu/transport/redis.py", line 737, in __init__
superset     self.client.ping()
superset   File "/usr/local/lib/python3.8/site-packages/redis/client.py", line 1037, in ping
superset     return self.execute_command('PING')
superset   File "/usr/local/lib/python3.8/site-packages/redis/client.py", line 772, in execute_command
superset     connection = pool.get_connection(command_name, **options)
superset   File "/usr/local/lib/python3.8/site-packages/redis/connection.py", line 990, in get_connection
superset     connection = self.make_connection()
superset   File "/usr/local/lib/python3.8/site-packages/redis/connection.py", line 1025, in make_connection
superset     return self.connection_class(**self.connection_kwargs)
superset TypeError: __init__() got an unexpected keyword argument 'username'

Environment
(please complete the following information):

~browser type and version:~
superset version: superset 2.0.1 (from Helm chart 0.8.10)
python version: 3.8.12
~node.js version:~
~any feature flags active:~

Checklist
Make sure to follow these steps before submitting your issue - thank you!

[x] I have checked the superset logs for python stacktraces and included it here as text if there are any.
[x] I have reproduced the issue with at least the latest released version of superset.
[x] I have checked the issue tracker for the same issue and I haven't found one similar.

@NiklasRosenstein
I got ahead on this just a few min back. so it seems that the celery[redis] handle was missing
So here is my bootstrapScript section in values.yaml
bootstrapScript: |
#!/bin/bash
pip install psycopg2==2.9.1
redis==3.2.1
elasticsearch==7.10.1
elasticsearch-dbapi==0.2.10 &&
pip uninstall celery &&\
pip install "celery[redis]" &&
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
I dont see the username error anymore, however unable to add an opendistro connection string yet. Hope this fix helps your usecase. let me know

I am not sure if the above is the correct fix, but atleast it let me progress further to test out opendistro connection issues.

@NiklasRosenstein
The final bootstrapscript version that worked for me:
bootstrapScript: |
#!/bin/bash
pip uninstall elasticsearch &&
pip install psycopg2==2.9.1
redis==3.2.1
elasticsearch==7.10.1
elasticsearch-dbapi==0.2.10 &&\
pip install "celery[redis]" &&
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
With this, i was able to connect to opensearch 2.6. Additionally i had to setup root CA access in superset "Database Security" settings page in UI, but once that was done, i was able to connect and i am now able to create dashboards, graphs etc.

@NiklasRosenstein Remove redis==3.2.1 from your bootstrap code and see if it gets installed as a part of other package installations. If not change the version to 3.5.3 and it should work.

@NiklasRosenstein Remove redis==3.2.1 from your bootstrapScript and see if it gets installed as a part of other package installations. If not change the version to 3.5.3 and it should work.

In my case, I can confirm the worker pod works after removing the Redis version from Bootstrap.

Remove redis==3.2.1 in bootstrap script soved problem:
bootstrapScript: |
  #!/bin/bash
  pip install \
    psycopg2==2.9.1 \
    redis==3.2.1 \   # <<<--- remove this dependency
    PyAthena==2.25.2 \
    trino==0.321.0 &&\
  if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi

It looks like all the comments on this thread happened before the 3.0 release. We're no longer supporting Superset 2.x or prior, and it's been a while since this thread saw any activity, so I'm closing this as stale. If it is still an issue in Superset 3.x, we can re-open this, or feel free to open a new issue with updated context.


feat: remove pink from links

Pull Request Checklist

[ ] New code has 100% test coverage
[ ] (If applicable) The prose documentation has been updated to reflect the changes introduced by this PR
[ ] (If applicable) The reference documentation has been updated to reflect the changes introduced by this PR

Description

Changes code and link text styles to match brand colors instead of the default pink.

Close Issue(s)

Some more ideas maybe adjusting dark mode to be within brand colors.. maybe we could add some more colors because the blue does not sit well with the gray


[Storage] [Typing] [Blob] _lease.py

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-storage-blob


Support MDAnalysis.Universe as the frame parameter

Closes #358
This PR allows passing a Universe object to the frame parameter of chemiscope.show. It can be checked by running
import chemiscope
import MDAnalysis as mda

u = mda.Universe("./python/examples/data/trajectory.xyz")
chemiscope.show(frames=u, mode="structure")

As mda is usually used in analyzing biosystem-related trajectories, I also tried it on a pdb file containing two peptides, but I found the current representation schemes cannot display the protein well (see below), maybe we can later consider supporting the ribbon diagram representation?

Thanks a lot, this is very nice!
From the screenshot, it looks like the structure is using the wrong unit. Chemiscope/3Dmol.js assumes Angstroms, but I think MDA is using nm. I think there should be at least some automatically guessed bonds in this structure.
As a related point, does MDA add back the implicit H atoms that are often missing in bioinformatics file formats?

maybe we can later consider supporting the ribbon diagram representation?

This is #127, PR welcome! The biggest issue there will be that we will need to add another field to chemiscope's JSON containing information about alpha carbons / some level of pre-computed secondary structure information.

Regarding the unit issue, I think mda read the coordinate in the structure file as-is. The real difference comes from the units that are used by different formats (like Å for xyz and nm for pdb, generally speaking). And it might be hard to tell which unit is being using from chemiscope side.

https://userguide.mdanalysis.org/stable/units.html Looks like everything should be in A. I'm not sure what's happening in the initial screenshot though. Which file did you use for it?

Ahh yes, thanks! I used this file. And in the initial screenshot, I toggled off the bond. Perhaps you can take the latter one for your reference.


Disabled containers?

Is it possible to have entire containers disabled (meaning, all form inputs on the container would be disabled)?

None of the container widgets have the disabled property.
I guess we're missing a widget which could offer that feature - FieldSet.
HTML5 fieldset elements support disabled and automatically disable inner fields.
http://www.w3schools.com/tags/tag_fieldset.asp

This is now possible using the new FieldGroup widget.


feat: Boundaryless manifold

This is a more general notion of boundaryless manifold than ModelWithCorners.Boundaryless, which requires the ModelWithCorners to map to the whole model vector space.
To justify this new type class, consider the interior of a manifold with non-empty boundary. It inherits a manifold structure via its embedding, and it would be convenient to use the same ModelWithCorners for the interior as for the whole space. Even though the interior is boundaryless, its inherited ModelWithCorners doesn't satisfy ModelWithCorners.Boundaryless.

bors r+


add libbf, mpdecimal; use packaged libbf for haskellPackages.libbf

Motivation for this change
Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
21.11 Release Notes (or backporting 21.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 133016 at 5f1c1879 run on x86_64-linux 1

9 packages built successfully:

echidna
haskellPackages.crackNum
haskellPackages.hevm
haskellPackages.libBF
haskellPackages.linearEqSolver
haskellPackages.sbv
haskellPackages.verifiable-expressions
libbf
mpdecimal

See https://github.com/GaloisInc/libBF-hs/issues/15 for the libBF failure.


Populate profile_common.go

Populate profile_common.go with Sites and Searches appropriate for all profiles to utilize.

Common has enough to be considered "usable"


EmptyDataSet not showing up in WKWebView

I tried to use the emptyDataSet in WKWebView.scrollView. This doesn't work properly.
I'm setting the dataSource/ delegate and implementing my custom
func customViewForEmptyDataSet(scrollView: UIScrollView!) -> UIView!
when first using this, it works (sometimes) i.e. my custom view becomes visible.
but if I want to show an error screen after a request error from
webView: didFailProvisionalNavigation: withError:
the view won't be visible. When using the Xcode ViewDebugger it becomes visible but on device/ simulator some other views are in front of this view.
Did this bug happen to anyone else?

I have the same question . When did it support WKWebView ?

Don't support WKWevView yet?

WKWebView not supported yet? :(


Nokogiri and OpenBSD

Automatic installation of nokogiri fails on OpenBSD. Tested with 5.8, 6.2, 6.3, and 6.4. Even with libiconv installed, nokogiri fails to find it due to OpenBSD sticking the lib in /usr/local/lib.
To reproduce, do gem install nokogiri -v '1.10.2' on OpenBSD. Do not specify --with-iconv-lib.  Yes, you can make it work with a manual --with-iconv-lib but I'm tired of having to SSH into various servers and build manually every time I upgrade nokogiri.
I'd like to fix autodetection of libiconv paths on OpenBSD. Pretty sure I've got a quick fix for it, but I'm unable to test due to the lack of gemspec file (yes, I read Y_U_NO_GEMSPEC.md and understand/appreciate when it's not included). I understand the risks (can't be worse than developing kernel drivers, right? :P ). Where can I get a gemspec for testing?
Also:
* [ ] get openbsd / freebsd / etc. people to donate worker machines

I am happy to donate OpenBSD machine time for development. I can even provide it on non-Intel/AMD architectures (SPARC64, Alpha, etc.).

Hi! Thanks for opening this issue. I wasn't aware of OpenBSD issues, so I appreciate you calling it out.
You can generate an ephemeral gemfile by making sure you have the hoe-gemspec gem installed, and running rake gem:spec. Hopefully this will allow you to do the testing you need; if not, an alternative is to simply run rake gem to build a gem and install it locally.
An OpenBSD worker for our Concourse CI pipelines would be uhmerzing. Maybe let's get through this issue and then start a separate thread on that topic?

@chapmajs I'm curious if you got past your issues? And if so, are you willing to send a PR?
I'm also curious if you're still serious about helping test on OpenBSD? I'd happily help set up a Concourse worker if this is still a pain point for you.

I'm still manually building the dependency on the servers; I ended up partially automating it since the fix turned out to be less straightforward than I thought. I need to revisit it but haven't had time.
Definitely still serious about helping with OpenBSD testing.

On OpenBSD 6.6, I ended up doing
$ bundle config build.nokogiri --use-system-libraries
$ bundle install

to circumvent the build complaining about not finding libiconv
I found the "inspiration" at https://nokogiri.org/tutorials/installing_nokogiri.html
Thanks!

@jmettraux Thanks for this.
@chapmajs Thanks for offering to help with OpenBSD testing. I'm not sure what to ask for -- our CI system (Concourse) doesn't look like it supports OpenBSD workers so I have to give a think here on what I'd need beyond what a Virtualbox VM would provide.

I've set up an openbsd virtualbox environment and have reproduced this issue in openbsd 6.6.
The key bit from the logs:
have_iconv?: checking for iconv using --with-opt-* flags... -------------------- yes

"cc -o conftest -I/usr/local/rvm/rubies/ruby-2.7.0/include/ruby-2.7.0/x86_64-openbsd6.6 -I/usr/local/rvm/rubies/ruby-2
.7.0/include/ruby-2.7.0/ruby/backward -I/usr/local/rvm/rubies/ruby-2.7.0/include/ruby-2.7.0 -I.  -I/usr/local/include
  -O3 -ggdb3 -Wall -Wextra -Wdeprecated-declarations -Wdivision-by-zero -Wimplicit-function-declaration -Wimplicit-int -Wpointer-arith -Wshorten-64-to-32 -Wwrite-strings -Wmissing-noreturn -Wno-constant-logical-operand -Wno-long-long -Wno-missing-field-initializers -Wno-overlength-strings -Wno-parentheses-equality -Wno-self-assign -Wno-tautological-compare -Wno-unused-parameter -Wno-unused-value -Wunused-variable -Wextra-tokens  -fPIC  -I /usr/local/include -g -DXP_UNIX conftest.c  -L. -L/usr/local/rvm/rubies/ruby-2.7.0/lib -Wl,-rpath,/usr/local/rvm/rubies/ruby-2.7.0/lib -L/usr/local/lib -Wl,-rpath,/usr/local/lib -L. -fstack-protector-strong -Wl,-E -L/usr/local/lib  -Wl,-rpath,/usr/local/lib     -Wl,-rpath,/usr/local/rvm/rubies/ruby-2.7.0/lib -L/usr/local/rvm/rubies/ruby-2.7.0/lib -lruby  -lm   -lc "
ld: error: undefined symbol: libiconv_open
>>> referenced by conftest.c:8
>>>               /tmp/conftest-12693a.o:(main)

ld: error: undefined symbol: libiconv
>>> referenced by conftest.c:9
>>>               /tmp/conftest-12693a.o:(main)
cc: error: linker command failed with exit code 1 (use -v to see invocation)
checked program was:
/* begin */
 1: #include "ruby.h"
 2:
 3: #include <stdlib.h>
 4: #include <iconv.h>
 5:
 6: int main(void)
 7: {
 8:     iconv_t cd = iconv_open("", "");
 9:     iconv(cd, NULL, NULL, NULL, NULL);
10:     return EXIT_SUCCESS;
11: }
/* end */

Interestingly, when I build and test it with rake compile test, everything works OK.
Also tagging @jeremyevans since I believe he maintains the Nokogiri port for OpenBSD (or used to), in case he has insight into how to address this.

I've set up an OpenBSD testing environment (via Virtualbox) and I'm seeing an error ... but I'm not sure it's the same one as the original post describes:
Running 'compile' for libxml2 2.9.10... ERROR, review '/usr/local/rvm/gems/ruby-2.7.0/gems/nokogiri-1.11.0.rc2/ext/nokogiri/tmp/x86_64-unknown-openbsd6.6/ports/libxml2/2.9.10/compile.log' to see what happened. Last lines are:
========================================================================
  CC       xmlregexp.lo
  CC       xmlschemas.lo
  CC       xmlschemastypes.lo
  CC       xmlunicode.lo
  CC       xmlreader.lo
  CC       relaxng.lo
  CC       dict.lo
  CC       SAX2.lo
  CC       xmlwriter.lo
  CC       legacy.lo
  CC       chvalid.lo
  CC       pattern.lo
  CC       xmlsave.lo
  CC       xmlmodule.lo
  CC       schematron.lo
  CC       xzlib.lo
make: don't know how to make libxml2.la (prerequisite of: all-am)
Stop in .
*** Error 1 in . (Makefile:1504 'all-recursive')
*** Error 2 in /usr/local/rvm/gems/ruby-2.7.0/gems/nokogiri-1.11.0.rc2/ext/nokogiri/tmp/x86_64-unknown-openbsd6.6/ports/libxml2/2.9.10/libxml2-2.9.10 (Makefile:893 'all')
========================================================================
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/usr/local/rvm/rubies/ruby-2.7.0/bin/$(RUBY_BASE_NAME)
	--help
	--clean
	--use-system-libraries
	--use-system-libraries
	--enable-static
	--disable-static
	--with-zlib-dir
	--without-zlib-dir
	--with-zlib-include
	--without-zlib-include=${zlib-dir}/include
	--with-zlib-lib
	--without-zlib-lib=${zlib-dir}/lib
	--enable-cross-build
	--disable-cross-build
/usr/local/rvm/gems/ruby-2.7.0/gems/mini_portile2-2.5.0/lib/mini_portile2/mini_portile.rb:405:in `block in execute': Failed to complete compile task (RuntimeError)
	from /usr/local/rvm/gems/ruby-2.7.0/gems/mini_portile2-2.5.0/lib/mini_portile2/mini_portile.rb:376:in `chdir'
	from /usr/local/rvm/gems/ruby-2.7.0/gems/mini_portile2-2.5.0/lib/mini_portile2/mini_portile.rb:376:in `execute'
	from /usr/local/rvm/gems/ruby-2.7.0/gems/mini_portile2-2.5.0/lib/mini_portile2/mini_portile.rb:115:in `compile'
	from /usr/local/rvm/gems/ruby-2.7.0/gems/mini_portile2-2.5.0/lib/mini_portile2/mini_portile.rb:154:in `cook'
	from extconf.rb:369:in `block (2 levels) in process_recipe'
	from extconf.rb:261:in `block in chdir_for_build'
	from extconf.rb:260:in `chdir'
	from extconf.rb:260:in `chdir_for_build'
	from extconf.rb:368:in `block in process_recipe'
	from extconf.rb:266:in `tap'
	from extconf.rb:266:in `process_recipe'
	from extconf.rb:571:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /usr/local/rvm/gems/ruby-2.7.0/extensions/x86_64-openbsd-6.6/2.7.0/nokogiri-1.11.0.rc2/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /usr/local/rvm/gems/ruby-2.7.0/gems/nokogiri-1.11.0.rc2 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.7.0/extensions/x86_64-openbsd-6.6/2.7.0/nokogiri-1.11.0.rc2/gem_make.out

Interestingly, I'm able to compile and pass the test suite when running rake compile test in the source directory. Pinging @jeremyevans as the OpenBSD port maintainer to see if he has any insight.

More interesting: I got this to compile and run via rake compile test earlier, but now I'm having the same issue as that shown at gem install nokogiri time.
Successful run:
/nokogiri/test/helper.rb:29: version info: {"warnings"=>[], "nokogiri"=>"1.11.0.rc2", "ruby"=>{"version"=>"2.7.0", "platform"=>"x86_64-openbsd6.6", "description"=>"ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-openbsd6.6]", "engine"=>"ruby"}, "libxml"=>{"source"=>"packaged", "patches"=>["0001-Revert-Do-not-URI-escape-in-server-side-includes.patch", "0002-Remove-script-macro-support.patch", "0003-Update-entities-to-remove-handling-of-ssi.patch", "0004-libxml2.la-is-in-top_builddir.patch", "0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch"], "compiled"=>"2.9.10", "loaded"=>"2.9.10"}, "libxslt"=>{"source"=>"packaged", "patches"=>[], "compiled"=>"1.1.34", "loaded"=>"1.1.34"}}
Run options: --seed 49445

# Running:

................................................................................................................S....................S........................................................................................................................S...S...................................................................................................................................................S.......S.......................................................................................................................................................................................................................................................................S......................................................................................................................................................................................................................................................................................................................................................S........................................................................SS................................................................................................................................................................................................................................................................................................................................................................................................................................................

Fabulous run in 25.197901s, 60.6400 runs/s, 169.3792 assertions/s.

1528 runs, 4268 assertions, 0 failures, 0 errors, 10 skips

and now failure run:
Running 'compile' for libxml2 2.9.10... ERROR, review '/nokogiri/tmp/x86_64-openbsd6.6/nokogiri/2.7.0/tmp/x86_64-unknown-openbsd6.6/ports/libxml2/2.9.10/compile.log' to see what happened. Last lines are:
========================================================================
  CC       xmlregexp.lo
  CC       xmlschemas.lo
  CC       xmlschemastypes.lo
  CC       xmlunicode.lo
  CC       xmlreader.lo
  CC       relaxng.lo
  CC       dict.lo
  CC       SAX2.lo
  CC       xmlwriter.lo
  CC       legacy.lo
  CC       chvalid.lo
  CC       pattern.lo
  CC       xmlsave.lo
  CC       xmlmodule.lo
  CC       schematron.lo
  CC       xzlib.lo
make: don't know how to make libxml2.la (prerequisite of: all-am)

:thinking:

I've managed to set up an OpenBSD testing environment and ... I'm getting unreliable results at the moment. Going to rebuild it in a repeatable way and see if I can stabilize it.

Not sure if this helps, but on OpenBSD, the nokogiri package is built using --use-system-libraries --with-xml2-include=/usr/local/include/libxml2.  The package is currently on 1.10.8, but I can update it to 1.11.0 after it is released.

OK - I'm unable to reproduce this at the moment. I'm running OpenBSD 6.6. I've provisioned the box with this script:
    # install rvm
    pkg_add gnupg-2.2.12p0
    gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
    curl -sSL https://get.rvm.io | bash -s stable
    source /etc/profile.d/rvm.sh
    usermod -G rvm vagrant

    # install ruby and build-essentials
    rvm install ruby-2.7

And then I'm able to install the gem:
-bash-5.0$ gem install nokogiri
Fetching nokogiri-1.10.9.gem
Fetching mini_portile2-2.4.0.gem
Successfully installed mini_portile2-2.4.0
Building native extensions. This could take a while...
Successfully installed nokogiri-1.10.9
Parsing documentation for mini_portile2-2.4.0
Installing ri documentation for mini_portile2-2.4.0
Parsing documentation for nokogiri-1.10.9
Installing ri documentation for nokogiri-1.10.9
Done installing documentation for mini_portile2, nokogiri after 7 seconds
2 gems installed
-bash-5.0$
-bash-5.0$ nokogiri -v
# Nokogiri (1.10.9)
    ---
    warnings: []
    nokogiri: 1.10.9
    ruby:
      version: 2.7.0
      platform: x86_64-openbsd6.6
      description: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-openbsd6.6]
      engine: ruby
    libxml:
      binding: extension
      source: packaged
      libxml2_path: "/usr/local/rvm/gems/ruby-2.7.0/gems/nokogiri-1.10.9/ports/x86_64-unknown-openbsd6.6/libxml2/2.9.10"
      libxslt_path: "/usr/local/rvm/gems/ruby-2.7.0/gems/nokogiri-1.10.9/ports/x86_64-unknown-openbsd6.6/libxslt/1.1.34"
      libxml2_patches:
      - 0001-Revert-Do-not-URI-escape-in-server-side-includes.patch
      - 0002-Remove-script-macro-support.patch
      - 0003-Update-entities-to-remove-handling-of-ssi.patch
      - 0004-libxml2.la-is-in-top_builddir.patch
      - 0005-Fix-infinite-loop-in-xmlStringLenDecodeEntities.patch
      libxslt_patches: []
      compiled: 2.9.10
      loaded: 2.9.10

What am I doing differently than you, @chapmajs?

Closing. If someone can help me reproduce an installation issue, please open a new issue. Thanks.


fix: change block time in secs to millisecs

So actually if you look at:
https://github.com/dojoengine/dojo/blob/d4f36a226515d4ea6c75a7614db584f33f075e56/crates/katana/src/args.rs#L27-L31

The block time is in milliseconds, not in seconds. But the book says otherwise. So just trying to fix that.

the change from seconds to mili was planned for the 0.3.0 update. pls re-open the PR and merge to branch 0.3.0 instead.

Closing this one and opening #66 instead


Wave-Body Interaction from WAMIT Data

Pull request for free-surface hydrodynamics.  Still WIP.  Currently this plugin implements the linearized wave-radiation forces using WAMIT data that is read in from a file, and linearized buoyancy.  The wave-exciting forces are also read from WAMIT but are not currently included as there's some work and testing to do there.  Plenty of review needed, particularly in the manner that the WAMIT data is stored and read, among other items.

@hamilton8415 and @mjcarroll, as an FYI I've created a version of this branch rebased on #83 here: https://github.com/srmainwaring/buoy_sim/tree/srmainwaring/humble-garden-fs_hydro-2212. It's required for building on macOS which needs humble-garden, but may be of use when #83 is merged if you decide to then rebase to clean up the history rather than merge. The comment in #83 about the gnuplot-iostream dependency applies here too.

With the added-mass capabilities now in the garden binaries, this PR is now able to be merged.  Thanks go to @andermi for fixing a few issues recently.  A number of tasks remain so I'm listing them here:

[ ] Add ability to ingest a seed value from the .sdf value, and use that to set the irregular waves.  This will require an update to the FreeSurfaceHydrodynamics library to implement, but should be straightforward. https://github.com/hamilton8415/FreeSurfaceHydrodynamics
[ ] Pass existing tests.  With this plug-in in the system, the buoy will start moving as soon as the sim starts, so any tests that relied on the buoy falling from a small height and then coming to rest will not work correctly.  If the incident wave-heights are set to zero, the general behavior we're used to of the buoy oscillating a bit and coming to rest should still be present.  The rates of this will be changed as there is now wave-radiation damping added to the system...  I am not entirely sure how to implement this in the CI tests.
[ ] This plugin needs some tests, currently the FreeSurfaceHydrodynamics has some non-CI based tests that can be helpful here.  In particular that library can compute the time-domain motion of a floating body starting from rest in a prescribed sea-state,  for a single body, but independently of gazebo/DART.  So a great test will be to make sure the gazebo simulation results for a single floating body match those results decently.  Should be nearly perfect if all the physical characteristics of the body are the same, the only difference would be different time-step size or ODE solver technique between the two softwares.  This test will also be a good additional check on the added mass features in Gazebo.
[ ] This plugin currently blasts out a ton of debug data using a basic std::cout, this needs to be put into better debug messages, etc.
[ ] There is some messiness in this code related to wave-angle and the buoy yaw.  This is probably OK for the current purpose, but is likely fragile.  As a note, this work has been reduced to being applicable to axi-symmetric bodies, again that's fine for our purpose, and the pieces are here to make it for non-axisymmetric bodies, requiring changes in this plugin and the FreeSurfaceHyrdodynamics library.

Oh shoot. I broke CI by using that eta function. Should we build libFreeSurfaceHydrodynamics from source in CI for now anyways? (until you fix debs and release)

Yes, thanks for changing the CI to build from source.  That's good, we can adjust the functionality as we need to without changing the debian until we've got it working to our liking.

https://user-images.githubusercontent.com/20071132/218591182-da8b9672-25a0-4ffc-92e3-90bed43e1372.mp4

@hamilton8415 The error in the pc_commands_ros_feedback test:
[pc_commands_ros_feedback-1] Expected: (node->range_finder_) < (0.97), actual: 1.32002 vs 0.97
is from buoyancy being disabled in this branch in server.config
We can wait for @quarkytale to finish #122 before we worry about that test failure

I got things running again with the tests. I still need to update things to make the tests pass now, but at least they run

great, thanks for catching the hardcoded path to my machine...

I pushed a small change to reduce the verbosity of output from wave_body_interactions_pitch.cpp, and did a little code formatting.  Linters and tests for these still passing.

I believe we are finally at the end-zone with this one.  I ran a number of sims today and all worked as expected.  I think we should merge into main and continue testing and comparing to our tuturials from there.  I am going to be away for a bit, so feel free to merge this @andermi as far as I'm concerned.  When this is merged, the analogous PR in buoy_entrypoint should be merged also so that the install instructions remain relevant.


Allow for "direct query" style queries

Feature Description
While the choice of pre-loading all the data together with DuckDB makes the experience of using evidence quite snappy, it also means that some types of dashboard are not viable - simply because they would require loading way too much data. It would be great if it were possible to allow some queries to hit the database directly.
While it might seems undesirable, the number of OLAP databases that could handle this type of workload has exploded, and it would make the deployment easier and solution space (much) larger.
Goal of Feature
Expand the solution space from pre-aggregated data that fits easily into memory to the full set of (ad-hoc) questions one could ask from the data. For instance, drill downs per product, country, membership status, ...
Current Solution / Workarounds
Currently we need to have a ton of queries that precompute the drill downs we think are interesting, and disallow more than a single variable in these drill downs (ie sales per brand, sales per country, sales per channel)
Alternatives
Use evidence as a nice looking (very basic) email report, and use another tool for the deep-dives. Super unsatisfying, because it would require multiple tools again (and those tools can usually also send emails)

Apart from the cases where the current flow is simply not feasible, it would also make reports on large tables more editor-friendly.
For instance, imagine that the orders table in the example project is billions of rows. You wouldn't be able to do select * from orders anymore, and instead would have to use a large rollup table (which might be too big, still) or flat tables per query (daily_orders_per_country.sql)

I like this. At the moment we're focused on building out what you can do in the client side run time -- e.g. more interactive components like pivot tables, and the recent dimension grid, and increasing the interactive performance from supporting source tables with ~1 million records to 10-20 million, but at some point we will likely explore pushing queries down to the data warehouse.


bluestore config requires two redundant (?) options

So I was trying out bluestore with batrick/ceph-linode which had a few configuration problems I found confusing. I tried enabling the bluestore var:
https://github.com/ceph/ceph-ansible/blob/5192e3cd6de592b8d1aced6b0c377ef547742386/group_vars/osds.yml.sample#L147
but apparently you also need to set:
https://github.com/ceph/ceph-ansible/blob/5192e3cd6de592b8d1aced6b0c377ef547742386/group_vars/all.yml.sample#L275
to "bluestore". It would be nice if setting it in one place worked.
Also, journal_collocation needs to be unset to use bluestore which I find unnecessarily restrictive since journal_collocation is automatic (?) with bluestore. Is it really necessary to unset that?
Finally, after setting up a cluster I found that ceph-ansible choked on activating the OSDs. I had to do the following to get it running:
ansible -m shell -a 'printf "[global]\nenable experimental unrecoverable data corrupting features = bluestore\n" >> /etc/ceph/ceph.conf' osds
ansible -m shell -a 'ceph-disk activate /dev/sdc1' osds

+1 on Patrick's comment.  It would be great to have option to use raw_multi_journal with bluestore, putting the WAL on the SSD instead.    raw_multi_journal (whether you use SSD acceleration of HDDs) and osd_auto_discovery (whether you specify devices) could be independent of data format (whether you use bluestore or filestore).

to get it to work just now, I had to do this in group_vars/osds:
osd_objectstore: bluestore
bluestore: true
journal_collocation: false
raw_multi_journal: false
But it did bring up the OSDs without anything extra from me.  Now to get Ceph to use the SSD as the WAL.

@bengland2 yeah, it's a known limitation we are planning on fixing soon. Soon you will be able to specify a drive for DB and WAL.

Oh and yes, with the last RC no need to set experimental flags.
And yes, osd_objectstore and  bluestore are definitely redundant.

Actually there is an easy fix for the redundancy thing.

@bengland2 I don't think these 2 options are needed:
journal_collocation: false
raw_multi_journal: false