Adds support for MusicBed.com (#153)

This PR adds support for musicbed.com.
This is done using new process_musicbed() function.
It also adds 2 new arguments to SoundScrape:
-L or --login sets login text.
-P or --password sets password text.
process_musicbed() requires login and password information in order to
download full songs from the site.
It will notify user if he/she forgot to set their login and/or password.
Of course these arguments can be also used in different plugins if they
would need them.
Also download_file() function is modified in order to OPTIONALLY download using
Session object and/or params. These changes were required for
process_musicbed() to do it's job. No other plugins should be affected by
this change.
At last test.py was updated with musicbed test.
I made several tests, fixed errors I could find, so far it seems to be
stable.

Every test passes on my machine when ran locally. I have no idea what travis doesn't like.

Yeah, it's really annoying, it looks like they're blocking the Travis IP
maybe? I don't know why
On Wed, Jan 11, 2017 at 9:10 AM, brachna<EMAIL_ADDRESS>wrote:

Every test passes on my machine when ran locally. I have no idea what
travis doesn't like.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Miserlou/SoundScrape/pull/155#issuecomment-271877745,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAIi04sFHHVOb3857A7O4HnqhF8ESB_cks5rROLwgaJpZM4LgnFj
.

Ok, looking at travis logs - it's MixCloud test that's failing, not MusicBed.
Maybe it's an IP thing.
So what do you think of this PR? Any changes?

I don't know why we're adding this, but hey, it's a great PR.


[Build] Enable Swift compiler's batch mode

This leads to faster build times when WMO is off.
rdar://problem/39262812 SwiftPM should build using multifile mode (batch mode)
(cherry picked from commit e29d446c998bc278f8b77fbac8d95a45537d2c88)

@swift-ci please smoke test


Better separation of html and javascript

Rather than including all the "dynamic" HTML content within javascript, make a separately-downloadable HTML file that can be parsed and distributed as needed within the
window. This allows better formatting and error checking than including the HTML within
quoted strings in the javascript.

likely use something like https://developer.mozilla.org/en-US/docs/Web/API/DOMParser

fixed in #18


Live demo needed

Need to provide a live demo that users can try on browsers.
Preferable by GitHub pages that built from examples directly.
Probably an index page with description of the project, list and description of examples, and information of GitHub repo here.

Implemented GitHub pages. Issue fixed.


ERROR in Cannot read property 'isFile' of undefined

Running my angular project and after updating to the latest version I am getting this error:
ERROR in Cannot read property 'isFile' of undefined
In the terminal we see:
Refused to load the image 'http://localhost:4200/favicon.ico' because it violates the following Content Security Policy directive: "default-src 'none'". Note that 'img-src' was not explicitly set, so 'default-src' is used as a fallback.
I've deleted favicon.ico but still get this error. Any suggestions?

Hello, we reviewed this issue and determined that it doesn't fall into the bug report or feature request category. This issue tracker is not suitable for support requests, please repost your issue on StackOverflow using tag angular-cli.
If you are wondering why we don't resolve support issues via the issue tracker, please check out this explanation.


Incorrect DateFormat for en_CA - update CLDR to 43+

Describe the bug
Latest version of intl 18.1 generates dates in in US format when using en_CA locale. This is a result of a change in CLDR v41 (or 40) but it has been reverted since then and the fix is available in CLDR 43
see: https://unicode-org.atlassian.net/jira/software/c/projects/CLDR/issues/CLDR-16399
To Reproduce
With en_CA locale selected, the date format has changed from  this  '2020-01-20 09:07'
to this '1/20/2020 09:07'.

This was indeed fixed in https://github.com/dart-lang/i18n/commit/eaa46481c72dcbbe622162e6c87cfea90c96ac37. This is currently not published yet, but available at version 0.19.0-dev. I do plan on publishing this soon, as a lot of changes have accumulated already!

@mosuem thank you, great to know. Looking forward for the updated version then!

Fixed by #756.


Add CodeQL variant analysis scanning

This is a different type of static analysis than others we run.
It identified new issues (already fixed) that our other tool missed.
The company that built it was bought by GitHub and the tool is being
integrated into GitHub's security workflow.
Add one unprivileged version of the job to gate PRs and one privileged
version on-merge to report results.
Relates-to: submariner-io/submariner#1970
Signed-off-by: Daniel Farrell<EMAIL_ADDRESS>

2022-08-26T15:04:36.5162383Z ##[warning]This run of the CodeQL Action does not have permission to access Code Scanning API endpoints. As a result, it will not be opted into any experimental features. This could be because the Action is running on a pull request from a fork. If not, please ensure the Action has the 'security-events: write' permission. Details: HttpError: Resource not accessible by integration

I think this is not an issue, missing these experimental features on PR scans, but wanted to highlight.

Little late, but FYI you can see this correctly failing here: https://github.com/dfarrell07/submariner-website/pull/6/checks?check_run_id=8039932528 (all the bugs in found by CodeQL Go have already been fixed)


upgrade lb controller

Closes #193

add helm chart deployment for aws-load-balancer-controller v2
add kustomize for required CRD for aws-load-balancer-controller v2

can you rebase from master 🙏

@dan-slinky-ckpd thanks for your review 🙏
Pushed updates for your comments, nvcr.io was down today but it's back alive so I've kick started the test suite again


API Authorization is missing

No developer would want to show and use this fantastic component to  render only Static data through Unprotected and non secured  API Endpoints
when they encounter User is prompted to ask to enter the API Credentials while using the API everytime  :)

If support for this is added, please not just support Basic Auth but also API keys and authentication schemes like OAuth.


Subtraction of days is inconsistent across DST boundaries

Describe the bug
Moment is not accounting for the hour shift when doing subtract of days across a timezone boundary.  Below is an example that can be seen when running in the 'America/Denver' timezone.
To Reproduce
var moment = require('moment');
var d1 = new Date('2020-04-01');
var d2 = moment(d1).subtract(31, 'days').toDate();
console.log('D2:', d2);

Desktop (please complete the following information):

OS: Fedora 31 (x86_64)
Node: v12.6.3
Moment: 2.25.3

Moment-specific environment

The time zone setting of the machine the code is running on
The time and date at which the code was run
Other libraries in use (TypeScript, Immutable.js, etc)

Please run the following code in your environment and include the output:
console.log((new Date()).toString())
console.log((new Date()).toLocaleString())
console.log((new Date()).getTimezoneOffset())
console.log(moment.version)

Fri Jun 26 2020 15:10:10 GMT-0600 (Mountain Daylight Time)
6/26/2020, 3:10:10 PM
360
2.25.3

Looking at the moment-timezone tests, it looks like that's the intended behavior (time remaining the same).
https://github.com/moment/moment-timezone/blob/develop/tests/moment-timezone/manipulate.js#L21

@MinusFour I see.  So here are two examples with their time zones listed:
Pacific/Honolulu
➜  af-ohare git:(password-reset-update) ✗ node packages/af-services/test.js
Sat Jun 27 2020 06:13:27 GMT-1000 (Hawaii-Aleutian Standard Time)
Moment Version: 2.25.3
D2: 2020-03-01T00:00:00.000Z

America/Denver
➜  af-ohare git:(password-reset-update) ✗ node packages/af-services/test.js
Sat Jun 27 2020 10:16:18 GMT-0600 (Mountain Daylight Time)
Moment Version: 2.25.3
D2: 2020-03-01T01:00:00.000Z

Notice how the value of D2 in the Denver time zone is at 01:00, but for Pacific/Honolulu the value is 00:00.  This is because America/Denver has a time-shift forward that happened on March 8.  Pacific/Honolulu does not have such a shift.

Yes, that makes sense. 00:00 UTC is 18:00 MDT (UTC -6). moment-timezone is still returning 18:00 but now in MST (which is UTC -7). Therefore 18:00 MST is 01:00 UTC. 18:00 MDT -> 18:00 MST | 00:00 UTC -> 01:00 UTC

Perhaps the definition of a day needs to be clarified here.  When we say we are subtracting one day, does this mean that we are subtracting a days worth of time (24 hours) or are we going back to the exact same hour, minute, second, millisecond yesterday?  Because when it comes to this scenario the two are clearly not the same.  I personally would expect the latter with moment, especially because I am staying within the same timezone.  If this expectation is not correct then documentation needs to be updated to clarify this distinction.  Otherwise if the latter case is what is desired then there is a logic issue here.

It's actually not even something specific to moment-timezone but moment itself. Have a look at the documentation for add.

There are also special considerations to keep in mind when adding time that crosses over daylight saving time. If you are adding years, months, weeks, or days, the original hour will always match the added hour.

If you want to be more specific though you can use hours instead of days.


[Flink-9691]  [Kinesis Connector] Attempt to call getRecords() at correct frequency.

What is the purpose of the change
The purpose of this change is to make the Kinesis connector call getRecords() on the interval specified by the SHARD_GETRECORDS_INTERVAL_MILLIS configuration parameter.  Without this change the Kinesis Connector sleeps() for the given interval regardless of how long it takes to process the records.  This hurts badly when trying read through a backlog of data for example.  With this change we instead time the loop and sleep() for the specified interval MINUS any time spent processing.  This is more in line with what user's expect and makes the connector perform much better when there is a backlog of data to read through.
Brief change log
Time the run loop and subtract that time from the time spent sleeping.
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no

+1, LGTM

+1, from my side~

Thanks, merging this...

👍


[docs] Task guide with Dreambooth LoRA example

This PR adds a task guide based on this example

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Update CI action versions

GitHub won't run some of the older versions anymore.

thanks @dan-blanchard!


speed up requests

Currently --update, --get and --getall uses non stream requests. Then use streamed version for speed.

Implemented. Now only using single session per each operation.


fix ccpd converter doc

Thank you for your contribution to the MindOCR repo.
Before submitting this PR, please make sure:

[x] You have read the Contributing Guidelines on pull requests
[x] Your code builds clean without any errors or warnings
[x] You are using approved terminology
[ ] You have added unit tests

Motivation
Fixes issue: https://gitee.com/mindspore-lab/mindocr/issues/I7RZSB
Test Plan
(How should this PR be tested? Do you require special setup to run the test or repro the fixed bug?)
Related Issues and PRs
https://gitee.com/mindspore-lab/mindocr/issues/I7RZSB

Fix Chinese docs as well.


Type information isn't fully available in patterns

The following tests fail on the bots, and the root of the issue is some uninferred types left after the analysis procedure worked on the patterns.

co19/LanguageFeatures/Patterns/map_A01_t02
co19/LanguageFeatures/Patterns/map_A01_t03

Example of a stack trace.
stderr:
Unhandled exception:
  Crash when compiling file:///b/s/w/ir/tests/co19/src/LanguageFeatures/Patterns/map_A01_t02.dart at character offset 1987:
Internal problem: Unhandled ImplicitTypeArgument in _IsKnownVisitor.

#0      internalProblem (package:front_end/src/fasta/problems.dart:57:5)
#1      unhandled (package:front_end/src/fasta/problems.dart:71:10)
#2      ImplicitTypeArgument.accept (package:front_end/src/fasta/kernel/implicit_type_argument.dart:36:11)
#3      _IsKnownVisitor.visitInterfaceType (package:front_end/src/fasta/type_inference/type_schema.dart:151:25)
#4      InterfaceType.accept (package:kernel/ast.dart:11979:42)
#5      isKnown (package:front_end/src/fasta/type_inference/type_schema.dart:15:41)
#6      InferenceVisitorBase.findInterfaceMember (package:front_end/src/fasta/type_inference/inference_visitor_base.dart:1095:36)
#7      ListPattern.transform (package:front_end/src/fasta/kernel/internal_ast.dart:4379:56)
#8      MapPattern.transform (package:front_end/src/fasta/kernel/internal_ast.dart:4996:12)
#9      InferenceVisitorImpl.visitPatternSwitchStatement (package:front_end/src/fasta/type_inference/inference_visitor.dart:7795:68)
#10     PatternSwitchStatement.acceptInference (package:front_end/src/fasta/kernel/internal_ast.dart:452:20)
#11     InferenceVisitorImpl.inferStatement (package:front_end/src/fasta/type_inference/inference_visitor.dart:156:26)
#12     InferenceVisitorImpl._visitStatements (package:front_end/src/fasta/type_inference/inference_visitor.dart:740:50)
#13     InferenceVisitorImpl.visitBlock (package:front_end/src/fasta/type_inference/inference_visitor.dart:761:31)
#14     Block.accept (package:kernel/ast.dart:9694:43)
#15     InferenceVisitorImpl.inferStatement (package:front_end/src/fasta/type_inference/inference_visitor.dart:158:26)
#16     TypeInferrerImpl.inferFunctionBody (package:front_end/src/fasta/type_inference/type_inferrer.dart:187:17)
#17     BodyBuilder.finishFunction (package:front_end/src/fasta/kernel/body_builder.dart:1307:43)

The error was encountered during work on https://dart-review.googlesource.com/c/sdk/+/276524.
This issue is assigned label area-front-end tentatively, and it needs further investigation, and possibly reassignment of the tags.

More potential inference issues, similar to those failures mentioned above.

co19/LanguageFeatures/Patterns/object_A04_t01
co19/LanguageFeatures/Patterns/list_A01_t02
co19/LanguageFeatures/Patterns/list_A01_t03
co19/LanguageFeatures/Patterns/object_A02_t05
co19/LanguageFeatures/Patterns/object_A02_t06

More potential inference issues:

co19/LanguageFeatures/Patterns/object_A02_t07
co19/LanguageFeatures/Patterns/record_A02_t06
co19/LanguageFeatures/Patterns/record_A04_t02

More of the potential inference issues:

co19/LanguageFeatures/Patterns/list_A01_t01
co19/LanguageFeatures/Patterns/map_A01_t01
co19/LanguageFeatures/Patterns/object_A02_t04
co19/LanguageFeatures/Patterns/record_A01_t01
co19/LanguageFeatures/Patterns/record_A01_t04


Feature Request: Add environment variables to homepage on circleci developer

It would be helpful if the various env vars that can be passed to the container image (POSTGRES_DB, POSTGRES_USER etc) were described on the CCI homepage (https://circleci.com/developer/images/image/cimg/postgres).

Hi @shedworth this would be a task for the docs team, please can you open an issue on their repo? https://github.com/circleci/circleci-docs Thanks!


[CONTROLLER/SERVICE] fixes infinit loop bug #21690

This PR is for:

Server

Fixes infinit loop bug
Steps to reproduce the bug
Changes to fix the bug
Affected branches

main

Checklist

[ ] Added unit test to verify the fix.
[ ] Verified eBPF program runs successfully on linux 4.14.x.
[ ] Verified eBPF program runs successfully on linux 4.19.x.
[ ] Verified eBPF program runs successfully on linux 5.2.x.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.zhengya seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Same transition for notification end

Currently when a notification is displayed, it comes from the top.
It wool be cool if it was same when it is hidden, bottom to the top instead of opacity transition.

If somebody has same problem.
We can change close animation by overriding killed class.
https://github.com/alexcrack/angular-ui-notification/blob/674ff6b8f8e1c5faabc6f4ff7d41c1807dba509d/src/angular-ui-notification.less#L19


Update copyrights to 2020 year in releases branch

Description
This change update copyrights year to 2020

make test

http://intel-ci.intel.com/ea36b81c-1e6e-f151-87aa-8cdcd4b723a1


Missing Issue Template in Repository

Explanation:
I have created and added three new templates to the repository, aiming to improve the GitHub issue creation process, feature requests, and documentation contributions. These templates introduce a standardized format for creating issues, requesting features, and documenting project details. By implementing these templates, contributors and maintainers will be able to collaborate more effectively.
here is demo of templates. :

cool


Update mime type realted content in files-images-overview.md

Mime types

Closing in favor of https://github.com/MicrosoftDocs/powerapps-docs-pr/pull/8221


Switch to webview for ebook reader

Currently, the app renders EPUB files by parsing the contents inside the OEBPS directory. However, parsing EPUB files is never entirely reliable because many EPUB files out there do not follow the standard EPUB structure and may not include a table of contents (toc.ncx) file or navMap properties. Fortunately, Gutenberg's books do follow proper EPUB 3 structure and include a toc.ncx file, which is why the EPUB reader works well for books available within Myne. However, due to the aforementioned reasons, it's not reliable at all and often breaks when opening some random EPUB file that is poorly built and doesn't follow proper file structure or lacks navigation-related properties.
The only solution to this issue is switching to a WebView for rendering EPUB files. This solves all of the parsing-related problems because then we skip parsing entirely and directly render the xhtml/html files in the WebView.

So, After trying a bunch of libraries and WebView (see issue-152 branch), I couldn't really find a single EPUB parsing library that isn't decades old since its last update, or documentation and implementation for modern Jetpack Compose apps that is not very hard or even possible. I don't really have time right now to build yet another EPUB parser of my own and test 50 different edge cases. I guess I'll just try to improve the current implementation for now.


feat: Download individual PDFs for multiple proposals at a time

Description
It's important for scientists, user officers and FAP secretaries across ISIS and CLF to be able to select multiple proposals, click download, and for it to output a package of individual PDFs.
Motivation and Context
When the number of proposals selected to download is higher than one, the individual pdfs generated is collected into a zip folder instead of merging all the individual pdfs into 1 pdf file.
How Has This Been Tested
Manually, Tests
Fixes
https://github.com/UserOfficeProject/issue-tracker/issues/738
Changes
src/pdf/index.ts
src/util/fileSystem.ts
src/workflows/pdf/PdfWorkflowManager.ts
src/workflows/pdf/proposal.ts
Depends on
https://github.com/UserOfficeProject/user-office-core/pull/544
Tests included/Docs Updated?

[x] I have added tests to cover my changes.
[ ] All relevant doc has been updated

I think we might need this as an option to download one file or have one zip file with multiple proposals in a zip file .We can also include the attachments in the zip file ,like each proposal have its own folder and the attachments.


Remove interfaces and functionality that move

The interfaces and functionality have moved to QEDbase and QEDcore.

@AntonReinhard Please update QEDbase and push again. Whats needed to fix this?

@AntonReinhard Please update QEDbase and push again. What's needed to fix this?
Edit: Seems like QEDbase-compat is broken. Maybe rebasing would be good :)

This needs to be merged: https://github.com/QEDjl-project/QEDcore.jl/pull/25 and QEDcore needs to be released. The implementations of PhaseSpacePoint for example move there but aren't yet available.

Also, the QEDbase. replacements in QEDcore need to be removed again I think.

This builds and tests locally with the changes from https://github.com/QEDjl-project/QEDcore.jl/pull/29 and the dev-branch of QEDbase.

The doc building fails because for some reason it refuses to get QEDbase 0.2 instead of 0.1. I have no idea why.

I found the problem. Should be ready for review now. @szabo137 ping


Generate Polyline and valid fix in gazebo

We need a way to mock what google maps does in the real world for gazebo

Ideally, we'd need an easy way (maybe a tool?) to define a polyline inside gazebo (where you can see the world) and then it'll spit out that polyline and we can put it in each individual test case.


Fix indentation in all test files

Proposed Changes

Fix indentation in all test files for better implementing future changes

@dfavretto I really appreciate the work you have been done. Please resolve the simple conflicts and I would merge this PR first. Thanks!


Error running with PaperMC

CommandAPI version: 6.0.5
Minecraft version: paper-1.17-17
What I did:

Starting up the server

Actual result:
[14:02:26 WARN]: [CommandAPI] Task #386 for CommandAPI v6.0.5 generated an exception
java.lang.NoSuchMethodError: 'net.minecraft.server.packs.resources.IResourceManager net.minecraft.server.DataPackResources.i()'
	at dev.jorel.commandapi.nms.NMS_1_17_R1.reloadDataPacks(NMS_1_17_R1.java:861) ~[?:?]
	at dev.jorel.commandapi.CommandAPI.lambda$onEnable$0(CommandAPI.java:177) ~[?:?]
	at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftTask.run(CraftTask.java:100) ~[patched_1.17.jar:git-Paper-"33d6b6f"]
	at org.bukkit.craftbukkit.v1_17_R1.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468) ~[patched_1.17.jar:git-Paper-"33d6b6f"]
	at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1127) ~[patched_1.17.jar:git-Paper-"33d6b6f"]
	at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[patched_1.17.jar:git-Paper-"33d6b6f"]
	at java.lang.Thread.run(Thread.java:831) [?:?]

What should have happened:

Not sure if you are planning on supporting PaperMC for Minecraft 1.17, but this error occurs on startup.

Paper is in beta, it's possible that this will be resolved as they continue to complete the conversion.

Currently a paper issue, nothing to do with the CommandAPI I'm afraid!
https://github.com/papermc/paperweight/issues/24

This should now be fixed in Paper build 40 due to a hotfix which fixes the underlying issue.


Specialize the unary RPC flow internally

Currently, all RPCs flow through the same internal abstraction: duplexHTTPCall. This abstraction can accommodate all manner of calls, including full-duplex bidirectional calls, but it is overkill for unary RPC. Some of the machinery needed to support bidirectional streaming (synchronization mechanisms and an extra goroutine and io.Pipe per call) is pure overhead and unnecessary for simple, unary RPCs.
We can eliminate this overhead by providing a dedicated flow for unary RPCs via a new method on the protocolClient interface. Something like so:
// Invoke invokes a unary RPC. The given req is sent to the server and the reply
// is unmarshalled into resp. Returns the HTTP method used, response headers,
// trailers, and optional error.
Invoke(ctx context.Context, spec Spec, reqHdr http.Header, req, resp any) (method string hdr, tlr http.Header, error)

A very naive implementation of this new method might look like so (just to demonstrate what it conceptually does):
func (m *myClient) Invoke(ctx context.Context, spec Spec, reqHdr http.Header, req, resp any) (http.Header, http.Header, error) {
	conn := client.protocolClient.NewConn(ctx, spec, reqHdr)
	if err := conn.Send(req); err != nil && !errors.Is(err, io.EOF) {
		_ = conn.CloseRequest()
		_ = conn.CloseResponse()
		return nil, err
	}
	if err := conn.CloseRequest(); err != nil {
		_ = conn.CloseResponse()
		return nil, err
	}

	if err := conn.Receive(resp); err != nil {
		return nil, err
	}
	// Make sure there's no extra message and also
	// make sure we've received any trailers.
	if err := conn.Receive(resp); err == nil {
		return nil, NewError(CodeUnknown, errors.New("unary stream has multiple messages"))
	} else if err != nil && !errors.Is(err, io.EOF) {
		return nil, NewError(CodeUnknown, err)
	}
	return http.MethodPost, conn.ResponseHeader(), conn.ResponseTrailer(), conn.CloseResponse()
}

But the value of it is that it enables a much more bespoke flow that eschews the under-the-hood complexity of the StreamingClientConn (which is implemented by way of duplexHTTPConn).
Having this in place would also make it trivial to resolve #541 for unary RPCs in a way that doesn't further complicate duplexHTTPConn.

An alternative to the suggestion above would be a means to independently specialize the request-handling from the response-handling flows. This would allow the same optimizations unlocked above for unary RPCs to also be used for server-streaming RPCs, which also have a unary request.
Here's a quick sketch of what that might look like:
type protocolClient interface {
	Peer() Peer
	WriteRequestHeader(StreamType, http.Header)

	// Use for unary and server-stream RPCs.
	NewUnaryRequestConn(context.Context, Spec, http.Header, req any) streamingResponse
	// Use for client-stream and bidi-stream RPCs.
	NewStreamingRequestConn(context.Context, Spec, http.Header) streamingClientConn
}

type streamingResponse interface {
	Receive(any) error
	ResponseHeader() http.Header
	ResponseTrailer() http.Header
	CloseResponse() error
}

type streamingClientConn interface {
	streamingResponse

	Spec() Spec
	Peer() Peer
	Send(any) error
	RequestHeader() http.Header
	CloseRequest() error
}

func unaryResponse(str streamingResponse, resp any) error {
 	// used by unary and client-stream RPCs to extract a unary response
	// message or an error from the given response.
	// ...
}

@akshayjshah, @mattrobenolt, @emcfarlane, thoughts?

Yup, that much more matches my expectations of the abstraction here. Then the client vs server conn implementations are composable to make any of the permutations, and bidi includes the extra overhead of needing a goroutine to do both sides concurrently.

and bidi includes the extra overhead of needing a goroutine to do both sides concurrently.

The client-side still needs this, too. The goroutine is not needed to do both concurrently but rather is necessary in order to stream the request. That's just the way the net/http interface works. The call to http.Client.Do must be started before the application can start sending request bytes. But that call blocks until the server sends a status line and response headers. So it must happen in a separate goroutine for a streaming upload so that the application can send bytes while the http.Client.Do call is blocked. It is only after the application has finished uploading the request data and half-closes the RPC that the server will then send a response and unblock that goroutine.
In the above outline, of just two methods, the latter one (NewStreamingRequestConn) must use a pipe and a goroutine.

Sure that's fair. That's what I said might be more of a limitation of stdlib APIs available to us. Theoretically it wouldn't need it, but doesn't matter.
I think treating client stream with the bidi path is more than acceptable.

@emcfarlane, your initial approach in 9c7641025fdc12edaf16b8a08e544058e4d1efc9 is actually pretty close to the above suggestion. Instead of having the split in logic be in the protocolClient interface, you've got it one layer lower, by splitting the HTTP call in two. So maybe that is the right direction (sorry I suggested otherwise in PR comments). Instead of calling them unaryHTTPCall and duplexHTTPCall, maybe call them unaryRequestHTTPCall and streamingRequestHTTPCall to better convey their purpose.

The problem is with the request body, the io.ReadCloser which is currently an io.Pipe but should be a bytes.Buffer for unary to trivially allow GetBody to be set. It surfaces on the client side because we want to use an io.Writer to send the payload but need to provide an io.Reader. On the server we have an io.Reader for request and io.Writer for response, which maps cleanly to send and receive. I think down the road we can implement a more sophisticated streaming reader to replace io.Pipe that allows GetBody but for unary and server-stream we can use the simple solution of a bytes buffer reader.
Adding a unaryRequestHTTPCall works well for connectUnaryClientConn as we can replace the duplexHTTPCall here: https://github.com/connectrpc/connect-go/blob/b6d44ecfd51ddab5fa37fbbc7c3cbcece7940179/protocol_connect.go#L446
For grpc and grpc-web the duplexHTTPCall can't be switched out for unaryRequestHTTPCall as easily as there's no separate grpcUnaryClientConn: https://github.com/connectrpc/connect-go/blob/b6d44ecfd51ddab5fa37fbbc7c3cbcece7940179/protocol_grpc.go#L326
To reduce the changes needed I want to replace duplexHTTPCall with a more general httpCall struct that changes the io.Writer interface to Send(buffer *bytes.Buffer) error. duplexHTTPCall already has the streamType, so on Send if it is a unary or server-stream request we can set the body to the entire buffer and create the GetBody function. For streaming we build the io.Pipe and call the request in a go routine.
This makes the duplexHTTPCall a bit more complicated as it decides which call style to invoke but removes complications in protocol implementations having to switch behaviour on streamType. @jhump @mattrobenolt what do you think?

The problem is with the request body, the io.ReadCloser which is currently an io.Pipe but should be a bytes.Buffer for unary to trivially allow GetBody to be set. It surfaces on the client side because we want to use an io.Writer to send the payload but need to provide an io.Reader. On the server we have an io.Reader for request and io.Writer for response, which maps cleanly to send and receive. I think down the road we can implement a more sophisticated streaming reader to replace io.Pipe that allows GetBody but for unary and server-stream we can use the simple solution of a bytes buffer reader.

For my understanding, why is it relevant to implement GetBody? From my understanding and experiments around here, this is used to replay a request in error, but only if a request is deemed idempotent: https://cs.opensource.google/go/go/+/refs/tags/go1.21.3:src/net/http/transport.go;l=87-94
Personally, I've dealt with this for our load balancer situation, and we explicitly do not want a GetBody, since none of our RPCs would be safe to be idempotent. Granted, Connect has awareness of idempotency, but that's bundled up with a GET request, and doesn't have a body anyways. https://cs.opensource.google/go/go/+/refs/tags/go1.21.3:src/net/http/request.go;l=1440-1454
Given that this would be for our POST path, I'm not sure it'd even be used, at least by the default stdlib http.Transport.

This makes the duplexHTTPCall a bit more complicated as it decides which call style to invoke but removes complications in protocol implementations having to switch behaviour on streamType.

I think that makes sense inside the the *HTTPCall implementation. I'd consider that closer to our "transport" and makes sense to me that it would determine how to do this.

@mattrobenolt, it is used. See #541. The HTTP library can also replay a request if it is certain that it was not processed. This happens, for example, in HTTP/2 when the server is doing graceful shutdown and sends a GOAWAY frame with an error code of NO_ERROR.

Interesting, TIL! I had assumed if the body was read at all, this is quite unsafe. It's not a scenario I guess we've encountered.

I've implemented the basic unary changes needed: https://github.com/connectrpc/connect-go/pull/611
Theres some remaining work but I'd like to break it into another PR to avoid growing this one too much. If that sounds like a good idea I can get the current work ready for review once #594 merges.

I'm proposing the Send method on the duplex HTTP call to replace the io.Writer:
// Send the payload to the server.
func (d *duplexHTTPCall) Send(payload messagePayload) error

// messagePayload a single message for a stream. It allows for rewinding of the underlying
// source to support retries.
type messagePayload interface {
	io.Reader
	io.WriterTo
	// Rewind seeks the payload to the beginning.
	Rewind()
}

With two implementations, one enveloped and the other based on a bytes buffer. Extending the *envelope methods to implement is started in #622:
type envelope struct {
	Data *bytes.Buffer
	Flags uint8
	offset uint // Offset into Data
}

And the bytes buffer could be:
type messageBuffer struct {
	Data *bytes.Buffer
	offset uint // Offset into Data
}
// TODO: methods to implement messagePayload similar to envelope.

@akshayjshah, @mattrobenolt, @jhump what do you think about this API? How should the envelopeWriter be modified to support calling this method? Or is there a better alternative?

For envelopeWriter I was thinking the current method would be changed to accept a destination:
func (e *envelopeWriter) Marshal(dst io.Writer, msg any) *Error

Both the client *duplexHTTPCall and the server http.ResponseWriter can use. Then to update to Send for the client add a method which returns the envelope created in Marshal (rewritting Marshal to call MarshalEnvelope then write to the destination):
func (e *envelopeWriter) MarshalEnvelope(data *bytes.Buffer, msg any) (*envelope, *Error)

func (e *envelopeWriter) Marshal(dst io.Writer, msg any) (*Error) {
	buffer := e.bufferPool.Get()
	defer e.bufferPool.Put(buffer)
	env, err := e.MarshalEnvelope(msg)
	if err != nil { return err }
	if _, err := env.WriteTo(dst); err != nil { return err }
}

I think you'll want another method in the messagePayload interface:
    Release(*bufferPool)

So when the message is no longer needed, it can be returned to the pool.
As I mentioned F2F, I was bothered by *envelope needing to track mutable state to implement io.Reader. An alternative might be a slightly different interface:
type messagePayload interface {
	// Creates a new reader for reading the payload data.
	NewReader() io.Reader
	// Writes the payload data to w.
	WriteTo(w io.Writer) (n int64, err error)
	// Returns any underlying *bytes.Buffer instances to pool.
	// This payload must not be used again after this is called.
	Release(pool *bufferPool)
}

This way, a message payload implementation (i.e. *envelope) is effectively immutable -- which in my mind is more intuitive since it's surprising that a thing called a "payload" might be mutable. The way it was previously specified, it also lacks symmetry/consistency with how other things work that also implement both io.Reader and io.WriterTo: if I consume some data via the io.Reader interface, that doesn't actually impact the io.WriterTo behavior (or at least it didn't in the PR you had opened, #622).
So the value returned from NewReader is the thing that tracks mutable state (offset). Then there's no need for Rewind() since the caller instead just creates a new reader. And since it doesn't implement both io.Reader and io.WriterTo, there would be no expectations about how the two methods should interact. I changed the above to actually explicitly state the WriteTo method, instead of embedding io.WriterTo, to further clarify this point.
Does that make sense? What do you think?

WriterTo is often called after a partial Read to sniff the content type. Separating them out doesn't make sense as WriterTo is an optimisation for Read. Consuming some Read should affect the WriterTo and always does in the std library implementations. The behaviour should match what a *bytes.Reader does with the Rewind() effectively being (*bytes.Reader).Seek(io.Start, 0).

WriterTo is often called after a partial Read to sniff the content type. Separating them out doesn't make sense as WriterTo is an optimisation for Read. Consuming some Read should affect the WriterTo and always does in the std library implementations

Sure. But that case will never happen here. We either need to use it as a reader (for non-streaming request messages) or to write (everything else). Seems strange to complicate the implementation of WriteTo for a non-existent use case. 🤷

I think we'd still want the Request body as an io.Reader to implement io.WriterTo to so we get the optimized io.Copy calls (and other internal funcs that use it). The complexity cost is very low.

Okay. That's fair. I guess that's really only for Connect unary, but since that is likely a significant majority of RPC traffic, that does make sense.

In the current GetBody change for unary we can ensure that the buffer is fully read or closed before returning to the caller on Send. This removes the need to change the ownership of buffer from the caller. I think this simplifies the changes for unary and when we want to implement for both unary and stream we can address the need to change the buffer ownership.
Currently a unary call effectively does:
rdr, wtr := io.Pipe()
req.Body = rdr
go client.Do(ctx, req)
wtr.Write(buf) // Blocks on Read/Close

The new GetBody changes:
rdr := &payloadCloser{buf: buf}
req.Body = rdr
req.GetBody = func() (io.ReadClosure, error) {
	return rdr, rdr.Rewind()
}
client.Do(ctx, req)
rdr.Wait() // Blocks on Read/Close

Both wtr.Write and rdr.Wait block on being drained fully or closed. (*payloadCloser).Wait() was added as under testing with -race there were reads occurring after recycling the buffer in the pool. client.Do returns don't guarantee that the request.Body will no longer be used, even for unary calls. To ensure that the client request cannot access the buffer Wait resets the payload closure when we know the body has been Close() or the read returns an error. If GetBody is called the state of the payload closure is rewound so Wait() will not release until the next Close or error. This lets the request be rewound as many times as needed, then when the client returns we wait for the drain event before returning to the caller. In most cases this Wait() should be immediate, the request was read during the call.

An alternative to the API on envelopeWriter above would be to swap the io.Writer for:
type sender interface {
	Send(messagePayload) (int64, error)
}

With a simple adapter for io.Writer so http.ResponseWriter can still be used:
type writeSender struct {
	writer io.Writer
}
func (s writeSender) Send(payload messagePayload) error {
	return payload.WriteTo(s.writer)
}

This would keep the semantics that envelopeWriter closes over the destination.

Implemented the sender API here: https://github.com/emcfarlane/connect-go/compare/main...ed/sender annoyingly this increases allocations removing some of the benefits we gain. I think related to creating the interfaces, maybe I missed something.
geomean                           192.3         198.3        +3.15%

Are we happy with this approach?

Resolved in #649.


Installation Error

# github.com/google/gopacket/pcap
../../go/pkg/mod/github.com/google/gopacket@v1.1.19/pcap/pcap_unix.go:34:10: fatal error: pcap.h: No such file or directory
   34 | #include <pcap.h>
      |          ^~~~~~~~
compilation terminated.

look here
https://github.com/hktalent/scan4all/issues/42


tox/misc: Update to new black version

Signed-off-by: Till Maas<EMAIL_ADDRESS>

This change is

Coverage decreased (-1.9%) to 66.428% when pulling 6b3aed0026dde0abfa2f78ce9ec24c0574278dc3 on tyll:black_19.10b into 228305864a81c99f777dd497c86d69168957f046 on nmstate:master.


nil pointer in e1000 driver on AWS EC2

Hi,
This is a very cool project - thank you for building it! I tried running the helloworld example on AWS EC2 and got the following error. This output is running with the "debug" log level.
[trap] tid:2
[syscall] tid:4
[pci] no pci device found for e1000
[inet] begin dhcp
panic: nil pointer or invalid memory access
goroutine 1 [running]:
github.com/icexin/eggos/kernel.pageFaultPanic()
	/Users/aidan/dev/oss/eggos/kernel/trap.go:73 +0x2a
github.com/icexin/eggos/drivers/e1000.(*driver).Transmit(0x68056140, 0x6808c200, 0x3a29de, 0x6)
	/Users/aidan/dev/oss/eggos/drivers/e1000/e1000.go:224 +0x3b
github.com/icexin/eggos/inet.(*endpoint).WritePacket(0x680561e0, 0x68024cdc, 0x4, 0x3ff958, 0x4, 0x680249e8, 0x6, 0x0, 0x0, 0x300000800, ...)
	/Users/aidan/dev/oss/eggos/inet/endpoint.go:89 +0x67
gvisor.dev/gvisor/pkg/tcpip/link/nested.(*Endpoint).WritePacket(...)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/link/nested/nested.go:117
gvisor.dev/gvisor/pkg/tcpip/link/ethernet.(*Endpoint).WritePacket(0x68056230, 0x68024cdc, 0x4, 0x3ff958, 0x4, 0x680249e8, 0x6, 0x0, 0x0, 0x300000800, ...)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/link/ethernet/ethernet.go:66 +0x12d
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writePacket(0x680ee000, 0x68024cdc, 0x4, 0x3ff958, 0x4, 0x680249e8, 0x6, 0x0, 0x0, 0x300000800, ...)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/stack/nic.go:368 +0xfe
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).writePacketBuffer(0x680ee000, 0x68024cdc, 0x4, 0x3ff958, 0x4, 0x680249e8, 0x6, 0x0, 0x0, 0x300000800, ...)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/stack/nic.go:314 +0xd0
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).enqueuePacketBuffer(0x680ee000, 0x6808a960, 0x800, 0x404800, 0x6808c200, 0x6805822a, 0x8, 0x8)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/stack/nic.go:329 +0x25d
gvisor.dev/gvisor/pkg/tcpip/stack.(*nic).WritePacket(0x680ee000, 0x6808a960, 0x800, 0x6808c200, 0x1c, 0x0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/stack/nic.go:307 +0x53
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).writePacket(0x6806ca00, 0x6808a960, 0x6808c200, 0x6808a900, 0x0, 0x0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/network/ipv4/ipv4.go:495 +0x375
gvisor.dev/gvisor/pkg/tcpip/network/ipv4.(*endpoint).WritePacket(0x6806ca00, 0x6808a960, 0x4000000011, 0x6808c200, 0x0, 0x0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/network/ipv4/ipv4.go:445 +0x179
gvisor.dev/gvisor/pkg/tcpip/stack.(*Route).WritePacket(0x6808a960, 0x4000000011, 0x6808c200, 0x680b0458, 0xd2d0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/stack/route.go:462 +0xad
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*udpPacketInfo).send(0x6845e930, 0x405290, 0x680639e0, 0x68022340)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/transport/udp/endpoint.go:874 +0x3f9
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).write(0x680a4f00, 0x405290, 0x680639e0, 0x68022340, 0x0, 0x35f520, 0x1, 0x680639e0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/transport/udp/endpoint.go:581 +0x176
gvisor.dev/gvisor/pkg/tcpip/transport/udp.(*endpoint).Write(0x680a4f00, 0x405290, 0x680639e0, 0x68022340, 0x0, 0x36c720, 0x3381e0, 0x680562d0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/transport/udp/endpoint.go:431 +0x68
gvisor.dev/gvisor/pkg/tcpip/adapters/gonet.(*UDPConn).WriteTo(0x680562d0, 0x680cc100, 0xfa, 0xfa, 0x406f28, 0x68063860, 0x0, 0x0, 0x0)
	/Users/aidan/go/pkg/mod/gvisor.dev/gvisor@v0.0.0-20210716193733-566c23a60eea/pkg/tcpip/adapters/gonet/gonet.go:651 +0x1eb
github.com/icexin/eggos/inet/dhcp.(*Client).Request(0x680ec090, 0x409328, 0x6804c660, 0x0, 0x0, 0x0, 0x0)
	/Users/aidan/dev/oss/eggos/inet/dhcp/client.go:150 +0x5e5
github.com/icexin/eggos/inet.dodhcp(0x680249e8, 0x6, 0x6, 0x68056230)
	/Users/aidan/dev/oss/eggos/inet/stack.go:87 +0x147
github.com/icexin/eggos/inet.Init()
	/Users/aidan/dev/oss/eggos/inet/stack.go:50 +0x234
github.com/icexin/eggos.kernelInit()
	/Users/aidan/dev/oss/eggos/eggos.go:34 +0x1dc
github.com/icexin/eggos.init.0()
	/Users/aidan/dev/oss/eggos/eggos.go:38 +0x25

That nil pointer panic is from this code:
https://github.com/icexin/eggos/blob/971efada741e1d984cd284d591f15adaba03c77b/drivers/e1000/e1000.go#L223-L224
A successful run of the same kernel in qemu has different logs:
[trap] tid:2
[video] can't found video info from bootloader, video disabled
[syscall] tid:4
[pci] found 8086:100e for e1000, irq:43

[e1000] enable bus master
[e1000] mmap for bar0 0xfebc0000
[e1000] begin reset
[e1000] reset done
[e1000] link up
[e1000] begin read mac
[e1000] mac:525400123456
[inet] begin dhcp
[dhcp] offer done
[dhcp] offer ip:<IP_ADDRESS> server:<IP_ADDRESS>
[dhcp] lease:24h0m0s
[inet] dhcp done
[inet] addr:<IP_ADDRESS>
[inet] gateway:<IP_ADDRESS>
[inet] mask:<IP_ADDRESS>
[inet] dns:<IP_ADDRESS>
hello eggos
[syscall] write(1)(0x1, 0x681a4020, 0xc, 0x20, 0xc, 0x4) = 12

I understand that this is unlikely to be enough detail for you to diagnose the problem. I am happy to try assist, but I might need some directions from you. Let me know what details you need and I will try provide them.

Some more details: I logged the PCI devices discovered in both qemu and ec2.

PCI devices in qemu
[pci] found devices: ([]*pci.Device) (len=6 cap=8) {
 (*pci.Device)(0x68024560)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 4663
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 0,
   Func: (uint8) 0
  },
  Class: (uint8) 6,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024570)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 28672
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 1,
   Func: (uint8) 0
  },
  Class: (uint8) 6,
  SubClass: (uint8) 1,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024580)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 28688
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 1,
   Func: (uint8) 1
  },
  Class: (uint8) 1,
  SubClass: (uint8) 1,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024590)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 28947
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 1,
   Func: (uint8) 3
  },
  Class: (uint8) 6,
  SubClass: (uint8) 128,
  IRQLine: (uint8) 9,
  IRQNO: (uint8) 41
 }),
 (*pci.Device)(0x680245a0)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 4660,
   Device: (uint16) 4369
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 2,
   Func: (uint8) 0
  },
  Class: (uint8) 3,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x680245b0)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 4110
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 3,
   Func: (uint8) 0
  },
  Class: (uint8) 2,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 11,
  IRQNO: (uint8) 43
 })
}

PCI devices in EC2
[pci] found devices: ([]*pci.Device) (len=6 cap=8) {
 (*pci.Device)(0x68024554)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 4663
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 0,
   Func: (uint8) 0
  },
  Class: (uint8) 6,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024560)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 28672
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 1,
   Func: (uint8) 0
  },
  Class: (uint8) 6,
  SubClass: (uint8) 1,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024570)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 32902,
   Device: (uint16) 28947
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 1,
   Func: (uint8) 3
  },
  Class: (uint8) 0,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 9,
  IRQNO: (uint8) 41
 }),
 (*pci.Device)(0x68024580)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 7439,
   Device: (uint16) 4369
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 3,
   Func: (uint8) 0
  },
  Class: (uint8) 3,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 }),
 (*pci.Device)(0x68024590)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 7439,
   Device: (uint16) 32865
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 4,
   Func: (uint8) 0
  },
  Class: (uint8) 1,
  SubClass: (uint8) 8,
  IRQLine: (uint8) 11,
  IRQNO: (uint8) 43
 }),
 (*pci.Device)(0x680245a0)({
  Ident: (pci.Identity) {
   Vendor: (uint16) 7439,
   Device: (uint16) 60448
  },
  Addr: (pci.Address) {
   Bus: (uint8) 0,
   Device: (uint8) 5,
   Func: (uint8) 0
  },
  Class: (uint8) 2,
  SubClass: (uint8) 0,
  IRQLine: (uint8) 0,
  IRQNO: (uint8) 32
 })
}

Thank you very much for your report.
The network card driver model of eggos is intel's e1000 series. From the PCI list you provided, the network card used by ec2 is the one with vendor 7439 and device 32865, which is an exclusive model of amazon, see https://www.pcilookup.com/?ven=1d0f&dev=&action=submit.  I will try to support the virtio driver later, so that the network module can be used on the cloud server. I wonder if ec2 supports virtio network card?
I'm just curious about how you made eggos into an ec2 image?
Thanks again for sharing eggos' attempts on the cloud server.

Hi @icexin, thanks for your quick feedback! I realised the next day that you are indeed correct, EC2 does not use the e1000 so I understand why it couldn't find it 😄
I did some more research and the network hardware for EC2 is actually quite complex. There are at least three options that I am aware of:

Elastic Network Adapter (which is what is seen in above) which is on the newest instance types (the ones with a "5" in them, e.g. c5, m5, r5)
Intel 82599 VF (which uses Intel's ixbgevf driver) on c3, c4, m4 and a few others.
Xen's VIF on older instances.

The ENA drivers are open source and seem to be well-documented, but I am not enough of an expert to replicate them in Go: https://github.com/amzn/amzn-drivers/tree/master/kernel/linux/ena. This would be the best perf driver to copy, but I assume it's complex.
The older instances (the ones without ENA) are based on Xen and have the "Xen Platform Device" PCI device attached. It has vendor ID 0x5853 and device ID 0x0001. This appears to be documented here (ctrl+F for xen_platform_pci=1). The network driver on Linux is here.
Regarding eggos -> EC2 image: I can submit a PR sometime in the next few days with a script to do it. But the approximate process is:

egg build
egg pack to ISO
upload ISO to S3
aws ec2 import-snapshot --format RAW --user-bucket ... path-to-iso-in-S3 (gives a snapshot ID)
aws ec2 register-image ... snapshot-id $snapshotID (gives an AMI ID)
aws ec2 run-instances ... --image-id $amiID

Sorry it is not more detailed. It is on my other computer. I will submit a PR soon.


[Feature]: Recompress posters & other media

Describe the Feature Request
I don't know if this is a great idea, but looking through the Metadata folder I see a lot of directories with >2mb images. I don't know that posters need to be that large on my TV or phone. I know that a lot of images I download from TPDB are 10mb each. If those aren't resized on upload, I'm sure that adds up too.
Would it make sense to iterate through what is there and recompress/resize/resample images to lower sizes or qualities?

That could be a thing but in my opinion outside the scoop of this project.


Update gitea/sdk vendor

Brings in changes from https://github.com/go-gitea/go-sdk/commit/559190dbdcc3b73773d2866fa9f3ac7780a00820

drone failed

@lunny Fixed (some RPC issue with git clone in the first build; reran and it passed)

LGTM

@ethantkoenig Why is this needed?

@bkcsoft I am planning to add API endpoints for editing/removing an organization's teams, and that will require EditTeamOption. See https://github.com/go-gitea/go-sdk/pull/25

Than you should update the sdk together with that pr

@tboerger The SDK has already been updated; https://github.com/go-gitea/go-sdk/pull/25 has been merged.
It was my understanding that to make an update to the SDK, one first issues a PR to the SDK repo, and when that is merged, then issue a second PR to gitea that updates vendors/ accordingly. Apologies if this isn't the right workflow.

I was talking about updating vendor together with the api changes :)

Oh, will do!


Display an error message in autoload settings when autoload name is invalid

Fixes #52631
Issue
In autoload settings window, when autoload name was invalid, "Add" button was disabled without any further information about the reason.
Fix Proposal
Add a label under the linedit.
The label is shown only if name is invalid (and not empty).
The label contains the reason of invalidity.
What it looks like

Thanks!


🎉 release: v1.15.1

Description
This is a release PR.

:tada: This PR is included in version 1.15.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


fix(common): implement a standard redirect method on PlatformResponse

Information

Type
Breaking change

Refactor
No

:tada: This PR is included in version 7.61.1 :tada:
The release is available on:

v7.61.1
GitHub release

Your semantic-release bot :package::rocket:


https url is not hitting with http-community in IONIC React.

These two properties are not working when code is converting from IONIC REACT with Android studio for using app in Mobile.:

setSSLCertMode:'no-check',
setServerTrustMode:'no-check'

Kindly tell me the procedure for both self-signed SSL Certificate and Trusted SSL Certificate in http-community api calling.
Url is :(for example- https://<IP_ADDRESS>:8000)
Framework: IONIC + REACT +CAPACITOR
Api hitting using : http-community

USED THIS PROCEDURE BUT NOT WORKING::
Configuration
In most cases no configuration is required for this plugin. If the Android application connects with use the self-signed certificates or without encryption, see Network security configuration article.
Even including raw/certificates and changed manifest file, Following error is coming:
Error: SSLHandshakeException


Whitespace in Karate

I am receiving whitespace in name field in json response which cause me failure of test case.
How to remove space from the value receive in response
Example(reading value from karate response)
def empName= karate.jsonPath(response,"$.name")

@gjain3693 please stop. kindly use stack overflow. and one hint - read this VERY CAREFULLY: https://stackoverflow.com/help/how-to-ask

why it is marked as invalid

@gjain3693 because you have to follow this process: https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue


Unable to find the ZFS pool image file.

Required information

Distribution:  ubuntu 16.04
Distribution version: 16.04
The output of "lxc info" or if that fails:

Kernel version: linux 4.13.0-1011-gcp
LXC version: 2.1.1
LXD version: 2.21
Storage backend in use: zfs

Issue description
I installed Lxd via snap in a fresh machine. I am trying to grow my zfs pool using the method stated in doc (listed below). However, I am not able to find any file list under  /var/snap/lxd/common/lxd/disks.
truncate -s +20G /var/snap/lxd/common/lxd/disks/default.img
zpool set autoexpand=on default
zpool online -e default /var/snap/lxd/common/lxd/disks/default.img
zpool set autoexpand=off default

'ls -la' shows the result below
sudo ls -la  /var/snap/lxd/common/lxd/disks
total 8
drwx------  2 root root 4096 Mar 13 00:24 .
drwx--x--x 14 root root 4096 Mar 13 00:43 ..

Steps to reproduce

sudo snap install lxd
sudo lxd.migrate --yes
sudo lxd init
initial lxd using block device '/dev/sdb'
list any file under  /var/snap/lxd/common/lxd/disks

You're using a real block device, in this case /dev/sdb, so those instructions don't apply to you.
If this is a virtual machine, you'd have to grow your attached disk, reboot the VM and then set autoexpand=on on the pool. If this is a physical hard drive, then well, there's not much you can do as you can't physically grow a disk :)


Added Restaurant Owner Functionalities, Admin functionalities and mod…

…ified other functionalities

Added Restaurant Owner Functionalities, Admin functionalities and modified other functionalities


是否可以支持chatgpt4新开放的插件系统?

chatgpt plus新开放了插件系统，可以提供接入网络或者使用其他插件的能力，不知道chatall在调用chatgpt4的时候，是否有办法可以有办法使用上这个插件能力?

可以支持。正在想该怎么配置当前激活哪些插件

好主意！

可以支持。正在想该怎么配置当前激活哪些插件

Hey sunner, may I inquire if there are any plans or ideas regarding this matter? I believe this is much more important than adding other models, and it should be a milestone event. Are there any challenges?

@msaong The API is not complicated, the only problem is the UI. I want to keep the UI clear.
BTW: I rarely use ChatGPT plugins. Why you like it so much?

@msaong The API is not complicated, the only problem is the UI. I want to keep the UI clear.
BTW: I rarely use ChatGPT plugins. Why you like it so much?

Sometimes I need the WEBQUEST plugin to fetch the latest information, such as having OpenAI learn the latest API documentation. Of course, it's fine if it's not supported right now.


Installation failed

Getting this message when I press install;
Can't install ghcr.io/yeonv/aarch64-addon-ledfx:v2.0.69: 500 Server Error for http+docker://localhost/v1.41/images/create?tag=v2.0.69&fromImage=ghcr.io%2Fyeonv%2Faarch64-addon-ledfx&platform=linux%2Farm64: Internal Server Error ("manifest unknown")

i just update the addon need to work now

I confirm that the installation was successful. Congratulations and thank you very much


Added to conda

Hi, I just wanted to let everyone know that I added this package to conda-forge so that it can be downloaded with conda.
See: https://github.com/conda-forge/staged-recipes/pull/13671
If there's any interest, I can also add the maintainers here as maintainers there, just ping me in the comments or make an issue/pr there. I can also add a badge or download instructions to the readme but just wanted to check first. Like so:

(Might not work yet, as it was just merged.)

Repo: https://github.com/conda-forge/arn-feedstock

Repo: https://github.com/conda-forge/arn-feedstock


[ng13]  ng serve auto compiling infinitely without any changes

Which @angular/* package(s) are the source of the bug?
compiler
Is this a regression?
Yes
Description
Hi, after upgrading ng13 from ng12, I got this issue. It worked well in ng v12.

Please provide a link to a minimal reproduction of the bug
No response
Please provide the exception or error you saw
No response
Please provide the environment you discovered this bug in
Angular CLI: 13.0.1
Angular Core: 13.0.0
Node: 14.17.3

Anything else?
No response

Moving to the CLI as that's responsible for setting up watch mode. That said, without a reproduction this is unlikely to be actionable.

Hi @Wenrong108,
Please provide the output of ng version and as @JoostK mentioned without a reproduction even shared privately it will be hard to get to the bottom of this.

Hi, @alan-agius4 , here is ng version result

Are you using custom builders by any chance?
Can you run npm ls @ngtools/webpack?
Can you also try to delete node_modules, package-lock.json and run npm install again?

Another observation which is unrelated to the above issue I am seeing a number of "outdated" packages, @schematics/angular, @angular-devkit/schematics. @angular/pwa? Unless you have custom schematics these packages should not be directly in your package.json.  Also, @angular/http is no longer supported.

Hi, @alan-agius4. thanks for your reply.

I never use custom builders
npm ls @ngtools/webpack

Can you also try to delete node_modules, package-lock.json and run npm install again?
I did so many times, but nothing effect.

@Wenrong108, in that case without a reproduction / remote debugging session it would be hard to get to the bottom of this.

Hi, @alan-agius4 , by the way, why does the issue happen in only ng v13? it works well in ng v12.

@Wenrong108, without a reproduction we cannot investigate and ascertain in what’s is causing the problem.

I ran into the same issue, but it seems to be related to an old issue that should have been fixed in 12.0.3 when polling is enabled.
By disabling polling everything works normally again. Please view issue: https://github.com/angular/angular-cli/issues/20891

@vincentpalita, can you please provide a reproduction?

@alan-agius4 it seems to be related to the new cache system.
On a small repository with the poll option to 2000ms the problem will not appear.
But if you set it to 10ms it will instantly happen as soon as you save a file for example.
To reproduce (make sure you @angular/cli global package is up to date with v13):
ng new i22163
// Y to routing, and choose SCSS
cd i22163
ng serve --poll 10 --verbose

Then for example save a new line in the style.scss file of the app located in src folder.
It will then do this:

I intentionally lowered the polling to 10ms to get the problem, on our repository, which is very big (700+ libs) it happens even with 2000ms, but if we remove the option it works well again.
I am available for a remote call if you want more information!
Thank you for your help!!

I've got the same issue for even angular new version 13.0.3 :(

@vincentpalita,
I am unable to reproduce using the steps provided above. Are you using docker by any chance? Also, can you also please provide the output of ng version?
@Xumochuan,
3Gb seems quite a lot, can you please provide the size of each sub directory of cache?.
The .angular has been created in the project root for a number of reasons:

ease of access
immutable node_modules
Compatibility with PNP package managers where there is no node_modules directory.

This pattern is also used by other tools one of the most popular one is Eslint, where by default it writes a cache file in the root.
You can clean the cache at any time, and also you can change the cache path if desired, See https://angular.io/cli/cache for more information.
Back to the original issue,  @Xumochuan and @Wenrong108 are you also using polling?

@alan-agius4
No, I am not using docker for the example provided.
Please find below the output ng version

     _                      _                 ____ _     ___
    / \   _ __   __ _ _   _| | __ _ _ __     / ___| |   |_ _|
   / △ \ | '_ \ / _` | | | | |/ _` | '__|   | |   | |    | |
  / ___ \| | | | (_| | |_| | | (_| | |      | |___| |___ | |
 /_/   \_\_| |_|\__, |\__,_|_|\__,_|_|       \____|_____|___|
                |___/

Angular CLI: 13.0.3
Node: 16.13.0
Package Manager: yarn 1.22.4
OS: darwin x64

Angular: 13.0.2
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.3
@angular-devkit/build-angular   13.0.3
@angular-devkit/core            13.0.3
@angular-devkit/schematics      13.0.3
@angular/cli                    13.0.3
@schematics/angular             13.0.3
rxjs                            7.4.0
typescript                      4.4.4

I also tried using Node.js 16.13 and I am still unable to replicate this issue.
Out of curiosity, does this happen if you touch the file outside of your IDE?
touch src/styles.scss

@alan-agius4 , have you tried to upgrade any project from ng v12 to ng v13?

I am testing using the exact same versions provided in the above ng version.

@vincentpalita, I tried to set the polling value down to 1ms and I was still unable to replicate this behaviour. Can it be that you have another application that is interacting with file once you save them?

@alan-agius4 I quit the IDE, launched the app from terminal. Tried again, same status: unlimited build once I touched a file. If you would like to open a remote session to see that on my desktop, feel free to DM me!

A remote session would definitly be helpful. I don't see a way to contact you in your GH profile. Can you please reach out personally on twitter or via email? Thank you.

Following a debug session with @vincentpalita, we managed to track down what is causing the problem. Will be working on a fix shortly.
Thanks again @vincentpalita for your help.

Hi, @vincentpalita , how did you solve this issue?

@dev181992 it was fixed by alan-agius4 as shown in this ticket.

Hi, @alan-agius4 , could you help me solve issue?

@dev181992 you just need to update to the latest angular/cli version and it will go away.

@vincentpalita , I updated angular/cli (v13.1.1) today, but still issue

@dev181992, can you please provide the output of ng v?

@alan-agius4 , sure. please look at this:

The versions looks okay, so you should be experiencing this issue when polling is used.
I suggest that you file a new issue with a reproduction so that we can investigate this issue further. Although might be related to https://github.com/webpack/webpack/issues/14911


Last Week in Pony - September 16, 2018

Audio from the September 12, 2018 Pony development sync is now available:
https://pony.groups.io/g/dev/files/Pony Sync/2018_09_12

I created a channel called ponylang in the Strange Loop 2018 Slack, in case anyone going to Strange Loop wants to talk about Pony.


Global template options

Global environment passing to templates was recently added. This works as a sort of global template configuration space.
But for a feature like autoInstall which is an option on every template, it could be useful to explicitly treat this as global template configuration instead of an environment variable.
The suggestion would be to not pass env into templates, but instead pass globalTemplateConfig, where this is configured like:
[global_config]
  pkgManager = 'yarn'
  autoInstall = true

Perhaps [defaults] would make sense here? Implying that if not set at the
top-level, the individual task args can override.
On Sun, Jan 9, 2022 at 11:22 AM Guy Bedford @.***>
wrote:

Global environment passing to templates was recently added. This works as
a sort of global template configuration space.
But for a feature like autoInstall which is an option on every template,
it could be useful to explicitly treat this as global template
configuration instead of an environment variable.
The suggestion would be to not pass env into templates, but instead pass
globalTemplateConfig, where this is configured like:
[global_config]
pkgManager = 'yarn'
autoInstall = true
—
Reply to this email directly, view it on GitHub
https://github.com/guybedford/chomp/issues/27, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAAABAJ6L2GGGIKBO2CDRI3UVHG75ANCNFSM5LSEF5AQ
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

One issue with that is that template arguments are like function arguments - specific to each template, so I was kind of thinking more of a global config dictionary that plugins could hook into. Of course the problem of name confusions still arises, but is perhaps more clear in this framing.

This was implemented in https://github.com/guybedford/chomp/pull/31 as being a double map for default options by template name.
So:
[default-template-opts.npm]
  auto-install = true


add possibility to comment out lines in exclusion file

The comment character should be "#"

Skip line if is starts "#". ex:  # user or #user
On a line, skip what is right to a "#". Ex: user #a comment


Subversion

Submission Checklist
Required

[x] The pull request title clearly contains the name of the sheet I am editing.
[x] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[x] The pull request makes changes to files in only one sub-folder.
[x] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details

The name of this game is:  (i.e. Dungeons & Dragons 5th Edition, The Dresden Files RPG)

The publisher of this game is: <   > (i.e. Wizards of the Coast, Evil Hat)

The name of this game system/family is:  (i.e. Dungeons & Dragons, FATE)

[x] I have followed the Character Sheets Standards when building this sheet.

[x] I have authorization from the game's publisher to make this an official sheet on Roll20 with their name attached.
[ ] This game is not a traditionally published game, but a copy of the game rules can be purchased/downloaded/found at: <   >
[ ] This sheet is for an unofficial fan game, modification to an existing game, or a homebrew system.

Changes / Description

Character Sheet Info Roll20 Internal Use only.

Hey @UnicornOpti
Couple small issues jump out to me before we can merge this.
First, sheet workers can malfunction and behave oddly if they're split into multiple <script type="text/worker"> elements.  I'd highly recommend combining them into one script element, and using comments, etc to delineate different sections.
Second, it looks like there are still some placeholder values in your sheet.json.  To clarify, authors should be the name(s) of the sheet authors involved, or their usernames on Roll20.  roll20userid is the numerical ID of their respective roll20 accounts.  You can get this number by going to your profile on roll20 and, from the url of that page, copying the number between users/ and your username.   You probably want instructions to be something other than 'test' as well.
As this is an official sheet, we'd also greatly appreciate it if you can fill in the three "New Sheet Details" in the description of this PR, specifically the Name, Publisher, and game system/family.  That allows you to make sure we put the intended game details in the dropdown.
Let me know if you have any questions.


Dynamically adding rows as nodes should be allowed

I'm unable to add rows as following: clusterize.append([$('<div>')])
The only way to get around this is to use another element as a wrapper, and then extract the child node using .html(). Example: clusterize.append([$('<div>').append($('#item-of-interest').clone()).html()])

It's not the only option, you could use native .outerHTML
clusterize.append([$('<div>').get(0).outerHTML)

@NeXTs thank you for your suggestion.


Support an array for the "who" field

It's been pointed out that some large audits might be multi-person efforts. It wouldn't be a disaster to just put one of the names in there, or to use comma-separation, but I think it should be trivial with our existing machinery to support making the field an optional array, similar to the authors field in Cargo.toml.
This might also be a good exercise to kick the tires on format changes in the wild. How would an older version of cargo-vet behave when it encounters the array, and how do we want it to behave?

If we do a similar trick to what we do for criteria, of allowing either a string for one element or an array for multiple, we should be able to avoid needing to do any major machinery changes.
In terms of how an older version of cargo-vet would behave upon seeing an array, it would likely error out early while running with a parse error, pointing at the line in question.
Unfortunately, my quick testing revealed that the error is actually reported in completely the wrong place:
$ ./mach cargo vet
ERROR
  × Failed to parse toml file
  ╰─▶ invalid type: sequence, expected a string for key `audits.synstructure.who` at line 1211 column 1
      ╭─[audits.toml:1210:1]
 1210 │
 1211 │ [[audits.xmldecl]]
      · ▲
      · ╰── here
 1212 │ who = "Henri Sivonen<EMAIL_ADDRESS>      ╰────

For whatever reason it appears to be being reported on the last audit in the file, rather than on the line which it failed to parse, though the error message is correct. I expect this is a toml crate issue, as we should be pulling the line and column information from there, but I haven't dug very deep yet.


Add flexible type overload for React.createElement

Makes stuff much cleaner.

"Makes stuff much cleaner." TM

Thanks!

is this already released?

Now it is 😉<EMAIL_ADDRESS>

:kiss:


Release new version

Hello,
current html-proofer has a lot of fixes compered to this image. Could you update it, please?
Ideally configure automated deployment.

I see it is already configured, just stopped. #5


Smoke test tables

Changed to data-tables-readme.md. PR to different branch

Docs Build status updates of commit 250e79a:
:clock10: Full build: the average full build time is 146 min(s) 1 sec(s), this is based on the last 386 build(s) for this repository.

Docs Build status updates of commit 250e79a:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs-ref-mapping/reference-unified.yml
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Decision forest feature

Decision forest feature
Here is union of requests:
https://github.com/intel/daal/pull/333
https://github.com/intel/daal/pull/290
in addition: cpp example, java example, java interface

CI with upgraded tests: https://intel-ci.intel.com/ea47e8b5-da78-f1b7-a176-8cdcd4b723a1

make test

Did you check dynamic Backward Compatibility?

@ShvetsKS BC is checked


Nicer output when an exception bubbles through main

When an exception happens in a program and isn't catched, what's printed is a bit hard to digest. For example, for this program:
def foo
  bar
end

def bar
  a = [1]
  a[2]
end

foo

The output is:
Index out of bounds (IndexError)
0x1025cc715: *CallStack::unwind:Array(Pointer(Void)) at ??
0x1025cc6b1: *CallStack#initialize:Array(Pointer(Void)) at ??
0x1025cc688: *CallStack::new:CallStack at ??
0x1025c62a5: *raise<IndexError>:NoReturn at ??
0x1025e553e: *Array(Int32)@Indexable(T)#at<Int32>:Int32 at ??
0x1025e54d9: *Array(Int32)@Indexable(T)#[]<Int32>:Int32 at ??
0x1025cba51: *bar:Int32 at ??
0x1025cb9d9: *foo:Int32 at ??
0x1025bb807: __crystal_main at ??
0x1025cb8b8: main at ??

That's at least on Mac without running dsymutil. On linux, or on Mac when running dsymutil, this is the output:
Index out of bounds (IndexError)
0x104c6d53e: at at /usr/local/Cellar/crystal-lang/0.23.1/src/indexable.cr 0:17
0x104c6d4d9: [] at /usr/local/Cellar/crystal-lang/0.23.1/src/indexable.cr 74:5
0x104c53a51: bar at /Users/asterite/Projects/crystal/foo.cr 8:3
0x104c539d9: foo at /Users/asterite/Projects/crystal/foo.cr 3:3
0x104c43807: __crystal_main at /Users/asterite/Projects/crystal/foo.cr 10:1
0x104c538b8: main at /usr/local/Cellar/crystal-lang/0.23.1/src/main.cr 12:15

That's a bit better: we can see raise and CallStack are removed from the trace.
So I see a few things to improve:

The numbers at the left are super hardcore. They are memory addresses of the functions inside the executable (I think). Not very useful unless you will debug at a lower level (but maybe for that one can use gdb or lldb)
For the trace where I didn't run dsymutil on Mac, CallStack and raise are still there, and also all names have an annoying * prefix (this is part of the function mangling in Crystal)
For the trace where I didn't run dsymutil on Mac, filenames are shown as "??" which clutters the output
Filenames are always absolute
main is always in the trace but adds little info because it's always the same and adds no info

This PR improves all of that:

The cryptic numbers are removed
CallStack and raise are always removed from the trace
"??" filenames are not shown anymore
Files are shown relative to the current directory if possible
We keep __crystal_main but we show it as main, because that will have the line number in the "main" file, and we remove the actual main from the trace.

I also formatted the output a bit more like how Ruby shows it.
The result, without running dsymutil on Mac, is:
Index out of bounds (IndexError)
        from Array(Int32)@Indexable(T)#at<Int32>:Int32
        from Array(Int32)@Indexable(T)#[]<Int32>:Int32
        from bar:Int32
        from foo:Int32
        from main

With dsymutil, or in linux, the output is:
Index out of bounds (IndexError)
        from /usr/local/Cellar/crystal-lang/0.23.1/src/indexable.cr 0:17 in 'at'
        from /usr/local/Cellar/crystal-lang/0.23.1/src/indexable.cr 74:5 in '[]'
        from foo.cr 8:3 in 'bar'
        from foo.cr 3:3 in 'foo'
        from foo.cr 10:1 in 'main'

I think it's a bit better than before.
As a comparison, this code in Ruby:
def foo
  bar
end

def bar
  raise "oh no"
end

foo

Gives this output:
foo.cr:6:in `bar': oh no (RuntimeError)
	from foo.cr:2:in `foo'
	from foo.cr:9:in `<main>'

I'll send a separate PR to always try to execute dsymutil on Mac so we always get files and line numbers (tracked in #4186).
We should also investigate why line numbers are incorrect, but probably in a different issue.

@RX14 Maybe we can keep it all the time. I was thinking maybe like this:
Index out of bounds (IndexError)
0x10026084e |    from src/indexable.cr:0:17 in 'at'
0x1002607e9 |    from src/indexable.cr:74:5 in '[]'
0x10023df61 |    from foo.cr:8:3 in 'bar'
0x10023dee9 |    from foo.cr:3:3 in 'foo'
0x10023035f |    from foo.cr:11:1 in 'main'

What do you think?

@asterite I've never actually needed to use the function hex locations, they're practically random with ASLR anyway. What I have done before is to use --no-debug to remove the line numbers so I can see the symbol names when the debug info has been particularly wrong. I'd like an option to show the raw symbols too, at least until we fix debug info.

@RX14 Sounds good. The main issue now is deciding how to trigger this behaviour. We can either use an ENV var, configure something in CallStack itself, or use a compile-time flag.
Also, what do you think about removing the --no-dsymutil option? It could be implied by --no-debug as @oprypin suggested.

@RX14 Actually, I think we can show the IP address when there's no file/line/column information. That happens when you compile with --no-debug. I'll make that change.

Wouldn't "symbol location" be a much less confusing name than "ip address"...
Regardless, my entire point with the request was to request a way to switch between showing debug info and plain symbols without recompiling. Sorry if I didn't make it clear.

@ysbaddaden @RX14 I applied your suggestions.
I also made it so that if the env variable CRYSTAL_CALLSTACK_FULL_INFO is 1, the ip address (or symbol name, however we want to call it) will be shown, without having to recompile the program. We can later document that, or not, if we really need to, depending on whether we fix all bugs relative to debug locations.
Going back to the original example, we have:
Without dsymutil:
Index out of bounds (IndexError)
        from Array(Int32)@Indexable(T)#at<Int32>:Int32
        from Array(Int32)@Indexable(T)#[]<Int32>:Int32
        from bar:Int32
        from foo:Int32
        from __crystal_main
        from main

With dsymutil:
Index out of bounds (IndexError)
        from src/indexable.cr:0:17 in 'at'
        from src/indexable.cr:74:5 in '[]'
        from foo.cr:8:3 in 'bar'
        from foo.cr:3:3 in 'foo'
        from foo.cr:10:1 in '__crystal_main'
        from src/main.cr:12:15 in 'main'

Without dsymutil, with CRYSTAL_CALLSTACK_FULL_INFO:
Index out of bounds (IndexError)
        from Array(Int32)@Indexable(T)#at<Int32>:Int32 at 0x10365a4ee
        from Array(Int32)@Indexable(T)#[]<Int32>:Int32 at 0x10365a489
        from bar:Int32 at 0x103637da1
        from foo:Int32 at 0x103637d29
        from __crystal_main at 0x103627934
        from main at 0x103637c08

With dsymutil, with CRYSTAL_CALLSTACK_FULL_INFO:
Index out of bounds (IndexError)
        from src/indexable.cr:0:17 in 'at' at 0x10d02e4ee
        from src/indexable.cr:74:5 in '[]' at 0x10d02e489
        from foo.cr:8:3 in 'bar' at 0x10d00bda1
        from foo.cr:3:3 in 'foo' at 0x10d00bd29
        from foo.cr:10:1 in '__crystal_main' at 0x10cffb934
        from src/main.cr:12:15 in 'main' at 0x10d00bc08

@asterite I used --no-debug to get at the symbol info, not at the instruction pointer address (which changes between process runs because of aslr and is therefore useless in most situations). CRYSTAL_CALLSTACK_FULL_INFO should show both the hex address and the corresponding symbol name (perhaps with the old +delta as well?).

@RX14 Updated!
Now without dsymutil when full info is requested:
Index out of bounds (IndexError)
        from Array(Int32)@Indexable(T)#at<Int32>:Int32 at 0x106bed4ee
        from Array(Int32)@Indexable(T)#[]<Int32>:Int32 at 0x106bed489
        from bar:Int32 at 0x106bcac31
        from foo:Int32 at 0x106bcabb9
        from __crystal_main at 0x106bba7c4
        from main at 0x106bcaa98

With dsymutil when full info is requested:
Index out of bounds (IndexError)
        from src/indexable.cr:0:17 in '*Array(Int32)@Indexable(T)#at<Int32>:Int32' at 0x10e00d4ee
        from src/indexable.cr:74:5 in '*Array(Int32)@Indexable(T)#[]<Int32>:Int32' at 0x10e00d489
        from foo.cr:8:3 in '*bar:Int32' at 0x10dfeac31
        from foo.cr:3:3 in '*foo:Int32' at 0x10dfeabb9
        from foo.cr:10:1 in '__crystal_main' at 0x10dfda7c4
        from src/main.cr:12:15 in 'main' at 0x10dfeaa98

That way you can see the real symbol name plus the address.
Is it good now? :-)

Is it good now? :-)

I have only a small nitpick-kinda-question actually. 😁
Why 8 spaces of indentation? Been using some shards with some nested path structure and ended with really long lines in the backtrace.
Don't see it as a real problem, but always wondered about it and perhaps avoid wrapping at 120 columns like happens under some scenarios.
Anyway, thank you for the contribution! ❤ ❤ ❤

@luislavena I copied Ruby here. I find that those 8 spaces immediately signals an exception was thrown, but only because I'm used to that. I have no problem changing that to 2 spaces, if @RX14 agrees.
I'll also add specs for CRYSTAL_CALLSTACK_FULL_INFO

I have no problem changing that to 2 spaces

I have no problems with the 8 spaces either, was wondering if there was a particular reason that I was missing. Thanks for the details.
And thank you for the improvements!

I changed it to use 2 spaces instead of 8. I think that's better because it gives more spaces to show the trace. Thanks for the suggestion, @luislavena !

@asterite what about the spec changes?

I'd like CRYSTAL_CALLSTACK_FULL_INFO to remain internal knowledge for now. It's also not critical to deserve specs, and it's hard to test (just a regex with numbers?). But if you want to add it, I'll approve it :-)

An update to this issue - would it be better to add colours in the form of ANSI colour formatting to these errors? I personally think it's a little bit of effort that goes a long way to making errors more readable, and I'm willing to do it - just not sure if everyone supports this idea.

CC @asterite ^


Read count wrong in glk_get_line_stream(_uni)

Opened 2011-05-08:
Caused 12 of the external file unit tests to fail.

@ptomato closed from commit [ed5dac1]


Improved examples

Improved consistency of examples and moved examples related resources out of the root folder and into the examples folder.
I also wanted to ask what to do with examples that crash (such as with icon.rs on wayland: should we remove them or keep them for the future?

As set_icon is a public API we should make sure that it doesn't crash under wayland even if wayland doesn't support setting icons on Windows.

Merging this even if the icons example crashes on wayland. Great work once again!

Merging this even if the icons example crashes on wayland. Great work once again!

There were quite a number of examples that did not work or crashed, due to missing implementation of internal methods, so these examples will "fix themselves" once the required functionalities get implemented

Yeah, the problem is that I didn't implement the Wayland backend myself so it has some issues with some missing functionality. It all should be updated to the latest crates, but it requires a bunch of rewrite when doing that and I just haven't got around to do it.


Add my school to JetBrains for City Colleges of Chicago.

@k-nario I am sorry, the domain ccc.edu is blacklisted because the school allows to register an email address there even if you are not a student of the school. If you are the student of this school, please apply with official document (OFFICIAL DOCUMENT tab at https://www.jetbrains.com/shop/eform/students).


Add bumping prerelease and build versions

I added bumping prerelease and build version. It works quite well, I just wasn't sure how semver should behave when we are going to bump prerelease or build on version 1.2.3, so I assume to append 'rc.1' / 'build.1' respectively instead of raising exception.

Looks good, thank you!

Released as 2.3.0


Mouse wheel and key up/down in time input

Adds the ability to change the value of hours, minutes and seconds by scrolling the mouse wheel and pressing the up and down arrows.

@dintecomfl I've implemented this on this fork: https://github.com/danielmoncada/date-time-picker

@danielmoncada Better use this fork https://github.com/ye3i/date-time-picker

@artar94 oh man, too many forks of this


feat: added a draft of async requests in js client

Made by default synchronous, asynchronous via the 'X-Async: on' header


Remove showdown from API's dependencies

We're removing the platform-report, this library will therefore only be used in old migrations that should be archived.

Depends on https://github.com/opencollective/opencollective/issues/5515


UX Updates

Codecov Report

Merging #47 (b9c56f9) into prep-release (e3f95b9) will not change coverage.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@              Coverage Diff              @@
##           prep-release      #47   +/-   ##
=============================================
  Coverage         27.87%   27.87%
=============================================
  Files                68       68
  Lines              3408     3408
=============================================
  Hits                950      950
  Misses             2458     2458

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


x/build/cmd/coordinator: many repeating js-wasm builds running every 15 seconds

Over at https://farmer.golang.org/#completed, I'm seeing a large number of js-wasm builders start every 15 seconds for the exact same commit:

Each one completes within a second with the following output:
  builder: js-wasm
      rev: dea961ebd9f871b39b3bdaab32f952037f28cd71
 buildlet: (nil *buildlet.Client)
  started: 2018-08-15 21:48:11.498031687 +0000 UTC m=+521730.873199532
    ended: 2018-08-15 21:48:11.658471517 +0000 UTC m=+521731.033639405
  success: true

Events:
  2018-08-15T21:48:11Z ask_maintner_has_ancestor
  2018-08-15T21:48:11Z finish_ask_maintner_has_ancestor after 24.5ms
  2018-08-15T21:48:11Z skipped_build_missing_dep

Build log:
skipping build; commit dea961ebd9f871b39b3bdaab32f952037f28cd71 lacks ancestor 3dced519cbabc213df369d9112206986e62687fa

This seems unintentional and suboptimal, right? If so, I'd like to better understand why it happens and try to fix it.
/cc @bradfitz

Not sure how relevant this is, but both commits exist:

https://github.com/golang/go/commit/dea961ebd9f871b39b3bdaab32f952037f28cd71
https://github.com/golang/go/commit/3dced519cbabc213df369d9112206986e62687fa

And there are 1735 commits between them.

Couple things:

this isn't great, but isn't terrible: we're stopping before creating a VM at least.
we shouldn't be trying to do js-wasm builds for release-branch.go1.10 or many other old branches
we should keep a global cache wasSkippedBuild[builderRev{builder, rev}] = true once discovered, to avoid enqueuing that duplicate work in findWork* later.

@dmitshur Is this still an issue?

It does not appear to be. I've checked now, things look good, and I have not observed other occurrences in a long time.
"we shouldn't be trying to do js-wasm builds for release-branch.go1.10 or many other old branches" is resolved.
I don't think "a global wasSkippedBuild cache" was implemented. But it doesn't seem to be very relevant now.
Let's close this as resolved. If we find a problem, we can file a new issue with with current and actionable information.


EOS-21399 CORTX-HARE: Implement test rpm for Hare

Modified Makefile and added new specfile to create test rpm.
Use case:
pytest /opt/seagate/cortx/hare/libexec/test/ -m sanitytest

@knekrasov I have replied to your comments, please have a look

@SwapnilGaonkar7, kindly elaborate the commit message.

Closing this PR as this task is not valid as per new requirements.


Notebook module

notebooks are designed for interactive data exploration and experiments. There are best practices in the industry:

Jupyter notebook: https://jupyter.org/
Clerk: https://github.com/nextjournal/clerk
Observable, a "blog platform" equivalent for notebook: https://observablehq.com/
Amazon sagemaker: https://datasciencenotebook.org/sagemaker
Hex, "google docs" equivalent for notebook: https://hex.tech/
Deepnote: https://deepnote.com/

Implemented as in Greptime Play


[Backport][v1.2.5] Snapshot prune feature & snapshot revert improvement

https://github.com/longhorn/longhorn/issues/3613
https://github.com/longhorn/longhorn/issues/3748
https://github.com/longhorn/longhorn/issues/3768

Sorry for pointing to a wrong branch, will recreate a PR


Fix codestyle rendering of name: value in Quick Starter

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Pass req and attribute to required rule

It's possible to replace the "required" rule with a custom rule.  That custom rule may need additional context other than just the field value to work, but the various required rules that depend on the required rule only pass in the value.  Changing those other required rules to pass all three attributes (value, req, and attribute) to the required rule.
Background: I have a custom required rule for a configuration-driven dynamic UI wherein fields may become visible or not or may be editable or not.  Also my required rule checks if a field is a dropdown and has no options (due to misconfiguration), making it not required since the user would be stuck in a situation they could not resolve.  My custom required rule requires the attribute in order to look the field up in the dynamic configuration, but when the required derivative rules call the required rule, they only pass the value and not the req or attribute parameters.  Simply adding those parameters in when calling the base required rule fixes the problem for me.

Closing, duplicate from PR #402

Closing, duplicate from PR #402

Sorry, didn't see that the previous PR went through.  Thanks.

Sorry, didn't see that the previous PR went through.  Thanks.


Code for SimiS

When will the code for SimiS [1] be released? All configs are available, but the code is missing.
[1] An Embarrassingly Simple Baseline for Imbalanced Semi-Supervised Learning.

Hi there, we are still working on this work. The code will be released soon.

got it.


Memory leak with DRAW_STRING

Looks like DRAW_STRING has a memory leak.

With "DRAW_STRING"

Without "DRAW_STRING"

I Understand, that such crazy numbers are not for practical use, but if your session is ~8-9 hours, you're in trouble.
Is this fixable? Is it CLEO+ related thing or GTASA related?
Looking for a fix, because I'd like to use DRAW_STRING a lot
UPD:
This works fine.

Results:

UPD2:
this struct:
tFontPrint* fontPrint = new tFontPrint();
Is not freeing it's memory on deletion in TextDrawer::ClearAll() for some reason. I'll continue my research...

All fine here, I tested your exact code, and also with 30,000 iterations for minutes.
Anyway, I rewrote the TextDrawer::ClearAll() in a different way in v1.1, maybe it's fixed?

Omg, my bad not testing it on clean game. Yeah, the problem exists if I minimize my game. I have MixMods with "NoPauseWhenUnfocus   = 1" option. So, script events are running, adding strings, but draw event is not. Mystery solved. Thanks.

Fixed in v1.1.3


Release Notification Channels (Webhooks)

Today we're looking at automating reactions to RancherOS releases. Today, a human periodically looks at the README and visually parses the latest stable release AMI. While this has served us well in development, we'd like to take a more event-driven approach. In lieu of an active release notification event published by Rancher we're looking at periodically parsing the GitHub releases atom feed for "newer" releases without an rc suffix and searching the AMI marketplace for the official AMI with the relevant tag. This integration takes several "conventions" as interface which makes the whole thing too fragile for production systems.
We'd ideally prefer lifecycle channel subscriptions. Consider a release hook that pushes various lifecycle events - and relevant references to release artifacts - via release phase specific topics e.g. stable, rc, dev. The notification payload should include the following details:
{
  "version": "1.1.1",
  "major": "1",
  "minior": "1",
  "patch": "1",
  "engine": "Docker 17.03.2-ce",
  "kernel": "Linux 4.9.67",
  "artifacts": {
    "iso": "https://releases.rancher.com/os/v1.1.1/rancheros.iso",
    "initrd": "https://releases.rancher.com/os/v1.1.1/initrd",
    "openstack": "https://releases.rancher.com/os/v1.1.1/rancheros-openstack.img",
    "digitalocean": "https://releases.rancher.com/os/v1.1.1/rancheros-digitalocean.img",
    "ipxe": "https://releases.rancher.com/os/v1.1.1/rancheros.ipxe",
    "gce": "https://releases.rancher.com/os/v1.1.1/rancheros-gce.tar.gz",
    "rootfs": "https://releases.rancher.com/os/v1.1.1/rootfs.tar.gz",
    "vmlinuz": "https://releases.rancher.com/os/v1.1.1/vmlinuz",
    "ami-hvm": {
      "ap-south-1": ...,
      "eu-west-2": ...,
      "eu-west-1": ...,
      "ap-northeast-2": ...,
      "ap-northeast-1": ...,
      "sa-east-1": ...,
      "ca-central-1": ...,
      "ap-southeast-1": ...,
      "ap-southeast-2": ...,
      "eu-central-1": ...,
      "us-east-1": "ami-4584ec3f",
      "us-east-2": "ami-4695bc23",
      "us-west-1": "ami-d24e4ab2",
      "us-west-2": "ami-99cb6de1",
    }
  }
}

Such a notification might be publishable via release pipeline, however the sensitive nature of these messages will make authentication "tricky." Where some users will use these notifications as notifications, others will use them to drive deployment automation. The HTTPS webhook path might contain a secret - this is what Slack does - allowing the recipient to make the assertion that the sender is allowed to send the notification and is therefore trustworthy. However, unless the webhook is actually treated like a secret by Rancher then this is bound to become a security risk. I'd alternatively suggest a trust-but-verify model where Rancher pushes these notifications without critical reaction data such as artifact references. Instead include a single reference to the authoritative event hosted on an HTTPS rancher.com URL. That even might look like:
{
  "version": "1.1.1",
  "major": "1",
  "minior": "1",
  "patch": "1",
  "engine": "Docker 17.03.2-ce",
  "kernel": "Linux 4.9.67",
  "event_url": "https://api.rancher.com/os/release/v1.1.1"
}

The document returned by the event_url would then contain the full document including the artifacts map. Publishing events in this way leverages Rancher's existing HTTPS infrastructure. Realistically, Rancher could simply host these documents in an S3 bucket with HTTPS enabled. There is little need for complicated server side logic here.

Great idea.
But I think that it might not be too urgent.

The biggest feature gap between RancherOS and CoreOS is the automatic update mechanism. I prefer disposable infrastructure and so we need something to close that gap. If we cannot find some way of reasonably automating reactions to Rancher updates then the management pain might soon outweigh that of dealing with Systemd. I guess, this is me saying that release deployment automation is important. How do your other adopters react to patches or other releases?

@allingeek
We have just discussed it internally.
We will add it to milestone v1.1.3, please be patient.

Hi @allingeek ,

Just realized that, at a minimum this could be addressed by including the release artifacts like AMIs

I added some files including the release artifacts, you can use like this:
curl -sSL https://releases.rancher.com/os/latest/artifact.json | jq .
# or
curl -sSL https://releases.rancher.com/os/v1.2.0/artifact.json | jq .

Not sure whether this can mitigate your problem.
For us, it is expensive to maintain a webhook server.
Do you know which public services can support webhook server? if so, feel free to let me know.