AOT Support for Spectre.Console

Made another run at AOT support. Spectre.Console itself mostly worked already, but with a few rough spots and unexpected behaviors for edge cases. The biggest issue may have been if someone was using prompts and relying on TypeConverters. @agocke did some work to use the intrinsic ones that I've included here. ExceptionHelper is marked explicitly as not working, as is the entirety of Spectre.Console.Cli.

Add AOT compatibility and PolySharp package support
Redo TypeConverterHelper based on the work by @agocke to support trimming and AOT
Refactor enum value retrieval to use EnumUtils for better compatibility with NetStandard 2.0 and AOT
Add RequiresDynamicCode attribute to exception formatter to indicate incompatibility with AOT. Adds a fallback if someone tries to use it.
Fix assembly name retrieval for FSharp.Core in TypeNameHelper to work better in AOT scenarios
Explicitly marks Spectre.Console.Cli as not trimmable and not appropriate for AOT scenarios. Additionally adds a warning to CommandApp for users who may try it.

Outstanding work would be

Documentation of AOT support, and the flag to revert to previous TypeHelper behavior
Pick apart how .NET itself handles ToString() these days in AOT and try to mimic that behavior

This replaces the previous PR #1508 and closes #1332 and #1401.
I feel this is pretty solid, and ready for review and merge.  I know @Armando-CodeCafe, @BlazeFace, @antoinebj and @TheExiledCat all have express interest recently in the feature so their input would also be appreciated.

This is already a great start and should already help in alot of use cases.
What im mostly surprised about is that Spectre.Console is apparently easier to get Native AOT on than Spectre.Console.Cli (im assuming thats due to reflection in the background?)
Considering most users of Spectre.Console also use the cli for their projects i would consider that the next big target. Maybe using source generators instead of reflection (again, if thats the case)

Made another run at AOT support. Spectre.Console itself mostly worked already, but with a few rough spots and unexpected behaviors for edge cases. The biggest issue may have been if someone was using prompts and relying on TypeConverters. @agocke did some work to use the intrinsic ones that I've included here. ExceptionHelper is marked explicitly as not working, as is the entirety of Spectre.Console.Cli.

Add AOT compatibility and PolySharp package support
Redo TypeConverterHelper based on the work by @agocke to support trimming and AOT
Refactor enum value retrieval to use EnumUtils for better compatibility with NetStandard 2.0 and AOT
Add RequiresDynamicCode attribute to exception formatter to indicate incompatibility with AOT. Adds a fallback if someone tries to use it.
Fix assembly name retrieval for FSharp.Core in TypeNameHelper to work better in AOT scenarios
Explicitly marks Spectre.Console.Cli as not trimmable and not appropriate for AOT scenarios. Additionally adds a warning to CommandApp for users who may try it.

Outstanding work would be

Documentation of AOT support, and the flag to revert to previous TypeHelper behavior
Pick apart how .NET itself handles ToString() these days in AOT and try to mimic that behavior

This replaces the previous PR #1508 and closes #1332 and #1401.
I feel this is pretty solid, and ready for review and merge.  I know @Armando-CodeCafe, @BlazeFace, @antoinebj and @TheExiledCat all have express interest recently in the feature so their input would also be appreciated.

When this is merged i will try it out on my projects that i was getting errors on and i will come back with my results here

Very excited to try this out!

Very excited to merge this! 😁

Made another run at AOT support. Spectre.Console itself mostly worked already, but with a few rough spots and unexpected behaviors for edge cases. The biggest issue may have been if someone was using prompts and relying on TypeConverters. @agocke did some work to use the intrinsic ones that I've included here. ExceptionHelper is marked explicitly as not working, as is the entirety of Spectre.Console.Cli.

I agree with this general approach. I tried really hard to get Spectre.Console.Cli to work with a source generator, but ran into too many problems that directly affected the surface area. The dependency injection approach is already really hard to make work without reflection. But even stuff like this:
app.Configure(config =>
{
    config.AddCommand<AddCommand>("add");
    config.AddCommand<CommitCommand>("commit");
    config.AddCommand<RebaseCommand>("rebase");
})

The TCommand parameter there contains properties that are supposed to be the inputs for the command parsing, but ICommand interface doesn't specify anything about them. That basically forces reflection to be used to light up the inputs.
By the time I got something kind-of working the API was just too different. It felt like a reboot. And at that point I figured I might as well try to reuse some code.
My eventual solution was to build a "CLI" format for my serde system: https://github.com/dn-vm/dnvm/tree/main/src/Serde.CmdLine. Serde is a framework for expressing serializers and deserializers and uses a source generator. The model is intended to allow swapping in different formats. CLI parsing is, in some sense, a serialization/deserialization format. So I built a format for that.
It's still very simplistic, but after I round off the edges I might create a NuGet package for it.

Made another run at AOT support. Spectre.Console itself mostly worked already, but with a few rough spots and unexpected behaviors for edge cases. The biggest issue may have been if someone was using prompts and relying on TypeConverters. @agocke did some work to use the intrinsic ones that I've included here. ExceptionHelper is marked explicitly as not working, as is the entirety of Spectre.Console.Cli.

I agree with this general approach. I tried really hard to get Spectre.Console.Cli to work with a source generator, but ran into too many problems that directly affected the surface area. The dependency injection approach is already really hard to make work without reflection. But even stuff like this:
app.Configure(config =>
{
    config.AddCommand<AddCommand>("add");
    config.AddCommand<CommitCommand>("commit");
    config.AddCommand<RebaseCommand>("rebase");
})

The TCommand parameter there contains properties that are supposed to be the inputs for the command parsing, but ICommand interface doesn't specify anything about them. That basically forces reflection to be used to light up the inputs.
By the time I got something kind-of working the API was just too different. It felt like a reboot. And at that point I figured I might as well try to reuse some code.
My eventual solution was to build a "CLI" format for my serde system: https://github.com/dn-vm/dnvm/tree/main/src/Serde.CmdLine. Serde is a framework for expressing serializers and deserializers and uses a source generator. The model is intended to allow swapping in different formats. CLI parsing is, in some sense, a serialization/deserialization format. So I built a format for that.
It's still very simplistic, but after I round off the edges I might create a NuGet package for it.

This would be insanely cool if it would be able to work, however i think there would be some kind of way to do the thing in your example using for example roslyn source gens by grabbing the attributes of the Command specifying the options and settings and then the roslyn source gen would have to add code to the build manually setting the different options to their
Lets say the settings have a property called Port "--port "
The roslyn source gen would have to generate some kind of line and add it to the source like:
`Port = args.ParseThePortAndDoTheThings("--port ")
So i dont think we would need a external lib for this, using some well defined roslyn generators these commands and settings can be set using some kind of functions injected at build time that contain all of the different properties and their respective cli strings

I think at the end of the day to do AOT in Spectre.Console.Cli would either take considerable effort or a change in the API. Between DI, TypeConverters, MultiMap<>, dynamically creating arrays and even some magic in there for automatically instantiating things like DirectoryInfo properties, there are just so many edge cases that are deep within the codebase that we'd be in a situation where we'd never know if any change was going to break AOT and/or we'd be in the weeds managing System.Diagnostics.CodeAnalysis attributes with every new update.
And at the end of the day, we split the Cli and Console app with the knowledge there were more "modern" libraries like System.CommandLine that integrate well with Spectre.Console that having the benefit of being developed after the introduction of things like assembly trimming have support designed in.
I do think a third party that wanted to generate a source generator that scans for Settings and dumps a ton of DynamicDependency attributes for the settings and their properties might get people limping along, but I'm not sure I'd ever feel comfortable including it in the official project. I certainly wouldn't love asking the other maintainers to have to own it either.

I think at the end of the day to do AOT in Spectre.Console.Cli would either take considerable effort or a change in the API. Between DI, TypeConverters, MultiMap<>, dynamically creating arrays and even some magic in there for automatically instantiating things like DirectoryInfo properties, there are just so many edge cases that are deep within the codebase that we'd be in a situation where we'd never know if any change was going to break AOT and/or we'd be in the weeds managing System.Diagnostics.CodeAnalysis attributes with every new update.
Additionally, a while back, we split the Cli and Console app with the knowledge there were more "modern" libraries like System.CommandLine that integrate well with Spectre.Console that having the benefit of being developed after the introduction of things like assembly trimming have support designed in.
I do think a third party that wanted to generate a source generator that scans for Settings and dumps a ton of DynamicDependency attributes for the settings and their properties might get people limping along, but I'm not sure I'd ever feel comfortable including it in the official project. I certainly wouldn't love asking the other maintainers to have to own it either.

Thats fair, so it seems this one is just gonna be: who wants to either put an unrealistic amount of effort to change the current Codebase or just rewrite it from scratch to native aot, so the options arent great here i guess.

Once Spectre.Console is in, I will take a look at generating the command tree using source generators instead of doing it by reflection. I have some ideas.

Redid the ExceptionFormatter code. The more I thought about it, it's not like the default .NET behavior is all that great anyways. So now it still uses the nicer format for printing the exception and message, then falls back to the StackFrame ToString() method to get as much info as we can at runtime.
While I was in there I went ahead and added support for Spectre.Console.Json and Spectre.Console.ImageSharp, and I even added a blurb in the documentation's best practice section.

FYI I’m totally willing to help anyone who wants to dive in the rabbit hole of writing a source generator. I just hit a wall and happened to have an alternative that I could use to unblock my app. FYI I’ve been using the rest of spectre console in dnvm as aot and it has worked great.

I have nothing really to add here anymore. Pending a review, I say ready for merge.

@phil-scott-78 I will be taking a look now. Not sure I will understand everything though 😁

Anything needing clarification or more comments to describe what's happening, I'm happy to expand!

@phil-scott-78 We can try it in a new PR.

Merged it!
Awesome work @phil-scott-78! 🎉


Grafana 4.0.0 causes Prometheus denial of service

What did you do?
Upgraded to Grafana 4.0.0
What did you expect to see?
Snazzy charts as always.
What did you see instead? Under which circumstances?
Prometheus ran out of filehandles, didn't crash, but stopped ingesting new data.
Grafana 4.0.0 introduces a bug in which each chart data gather is issued in a new HTTP connection, and these connections appear to be kept alive in Grafana even though they are never used again. The issue is described here: https://github.com/grafana/grafana/issues/6759
Clearly Grafana needs to fix this on their end, but it exposes a problem in that Prometheus can be DoSed simply by opening too many connections. Prometheus should be able to fend off a misbehaving frontend without stopping backend data ingestion.
Environment

System information:

Linux 3.13.0-76-generic x86_64

Prometheus version:

prometheus, version 1.4.1 (branch: master, revision: 2a89e8733f240d3cd57a6520b52c36ac4744ce12)
  build user:       root@e685d23d8809
  build date:       20161128-09:59:22
  go version:       go1.7.3

Alertmanager version: N/A

Prometheus configuration file:

N/A

Alertmanager configuration file:

N/A

Logs:

Thousands of lines like this:
ERRO[2900] http: Accept error: accept tcp [::]:9090: accept4: too many open files; retrying in 1s
ERRO[2898] http: Accept error: accept tcp [::]:9090: accept4: too many open files; retrying in 1s
ERRO[2898] Error refreshing service xxx_exporter: Get http://localhost:8500/v1/catalog/service/xxx_exporter?index=47790194&wait=30000ms: dial tcp <IP_ADDRESS>:8500: socket: too many open files  source=consul.go:252
ERRO[2900] Error dropping persisted chunks: open /prometheus/data/1b/949dcb022d6cfb.db: too many open files  source=storage.go:1495
WARN[2900] Series quarantined.                           fingerprint=7795383ca895e3d7 metric=node_netstat_TcpExt_TCPHPAcks{environment="production", host="xxx", instance="xxx", job="node_exporter", role="xxx", zone="xxx"} reason=open /prometheus/data/77/95383ca895e3d7.db: too many open files source=storage.go:1646
ERRO[2900] Error while checkpointing: open /prometheus/data/heads.db.tmp: too many open files  source=storage.go:1252
ERRO[2900] Error dropping persisted chunks: open /prometheus/data/1b/94b35810940463.db: too many open files  source=storage.go:1495
ERRO[2900] Error while checkpointing: open /prometheus/data/heads.db.tmp: too many open files  source=storage.go:1252
WARN[2900] Series quarantined.                           fingerprint=baf8faede9e50c85 metric=node_vmstat_nr_tlb_local_flush_all{environment="production", host="xxx", instance="xxx", job="node_exporter", role="xxx", zone="xxx"} reason=open /prometheus/data/ba/f8faede9e50c85.db: too many open files source=storage.go:1646

That's unfortunately a Grafana problem. Can you file a bug report in their repository?
@stuartnelson3 isn't that exactly the bug we fixed for them in a past Grafana version?

Repoter stated clearly that although there is obvious problem with Grafana, it shouldn't be possible to DoS Prometheus down. I was hit by this bug as well and all other datasources remained usable for Grafana, but Prometheus didn't and it wasn't able to collect data either. THAT's the problem that needs to be addressed in Prometheus.

Apologies, you are right – I missed that part in my morning dizziness.

@fabxc The previous issue that we addressed was canceling in-flight requests if "refresh" is clicked multiple times

The Grafana issue points to: https://github.com/grafana/grafana/commit/56b7e2dfaf0a38161a7f62490505d2ba5a39d113#diff-2ce5b8fd7c5c41aeaf1e8b12a3163b80
The used keep-alive time there seems reasonable. How many connections is your Grafana opening? Is it growing unbounded?
In general the Prometheus storage deals with a  lot of files and increasing the the FD limit is necessary at some point. I'm not quite sure what we can reasonably do from the Prometheus side. If Grafana is not used as a proxy, the clients can come from anywhere and going by source IP doesn't really help.
A general rate limiter would have to be configured quite aggressively (to the point where it impacts other clients) to mitigate the issue it seems.

I don't have much golang experience (but i have some time so i'm looking to contribute) but can this be because http.Server doesn't specify any timeouts?
this too many open files issue can happen according to this article
https://blog.cloudflare.com/the-complete-guide-to-golang-net-http-timeouts/

Yes, that's a good reference blog post on timeouts in general.
But it refers to slow connections or disappearing clients, which doesn't seem to be the general issue with Grafana. The HTTP timeouts also don't affect underlying connection's keep-alive time.
So while we should probably add an upper bound, I'm not sure it solves this particular problem.

OK, second try: How about Transport.IdleConnTimeout in go 1.7? But it seems it has a default value about 90 seconds, so it's a weak one. I'll try to reproduce first.

Back to first idea. It seems http read timeout does effect connection's keep-alive time.
This SO answer suggests it does http://stackoverflow.com/a/29334926
https://golang.org/src/net/http/server.go#L749 This confirms that server sets a new deadline on each request.
I simply tried with keeping a telnet open, sending some request every now and then. I can confirm it closes the idle connections. Transport is for http clients it seems, so sorry if that caused any confusion, i'm learning on the way.
Anyways, i guess it'd be better if there was a config for it with some sensible default (30 seconds)?

Thanks everyone for re-reading my suggestion that Prometheus should not stop collecting and writing data when it has a misbehaving client. Increasing the FD limit is basically a whackamole non-solution, for any limit someone will come along with an even-more-misbehaving client (i.e. build a wall, someone brings a taller ladder). Some ideas I had thinking about this:

Idea: provide a config option for maximum number of client connections allowed. If this is exhausted, then clients are refused.
Idea: provide a config option to kill a keep-alive client connection if it does not issue any queries.
Idea: for a given FD limit (Prometheus could ask the environment with syscall.Getrlimit, for example) figure out how many file handles are needed for the known set of data points, and allow only as many active connections as remain. I don't necessarily like this idea because it's magic and possibly platform-dependent.

Does #2169 factor in by any chance as a tool for enforcing a limit on number of client connections?

Just a heads up that grafana 4.0.1 is out now.

I'm not a fan of any magical introspection (be that file descriptiors, memory, or anything else). It makes the system hard to reason about and is a pretty good indication on went down a wrong path way earlier.
So agreed on 1) and 2).
#2240 sets a read deadline. I think that alone is not sufficient to solve our problems. It kills of slow clients but from my understanding, it is over once we received the first proper requests from a newly accepted connection. Thus, it doesn't apply to subsequently left open ones.
As it's recommendable to set in general, I'd set it to generous 15 seconds – I don't think this needs to come with a flag until someone explicitly states a need for it.
The Go HTTP server as it is uses a listener with a keep-alive period of 3 minutes. Depending on the platform it will take that plus some more for idle connections to be killed for good. I think that's sane and probably the reason why net/http doesn't expose configuration beyond on/off.
In the case of Grafana the client even limited itself to 30 seconds – so tweaking the duration here doesn't seem to be helpful regardless.
I'd suggest using a LimitListener which can be configured via flag. If you run Prometheus and specify the FD limit, you can easily and explicitly configure how many of those can be allocated for connections.
That should avoid impact on storage and other components. Finding and removing the malicious client is not really avoidable at this point. If it's a reoccurring problem one could think about disabling keep-alives in the server at runtime as the connections approach the limit. But that goes towards auto-magic once again.

#2240 is not sufficient for a complete DoS protection for sure. But it solves the simpler problem of closing idle connections. By idle connections i mean connections having no http conversation for some time. It does this by resetting the deadline on each new request on the same connection, so it will effect all the requests first and subsequent. BTW that's what i confirmed with primitive telnet setup.
Go http server listener having 3 minutes keep-alive period you linked won't close such connections, as that is a TCP keep-alive period, which simply checks if the TCP connection is still usable. It won't close idle connections, it will close connections of lost clients for example.
I'm not sure where grafana limited itself. Are you referring to 4.0.1?
On FD issue, i guess everyone knows linux default nofile limit is pretty low for file juggling daemon processes like prometheus. My suggestion would be increasing it to a more sensible value first and then maybe suggesting large scale users to increase it even more. Provided that prometheus is not leaking any.

Gotcha, that all makes sense. Thanks for the clarification.
Would you mind adding the LimitListener to your PR and making it configurable via flag too? That seems to be an important protection mechanism in any case.

@fabxc I have updated PR to add LimitListener. I also used govendor tool to add it under vendor, i hope i get that right.
A small note on LimitListener: I doesn't reject connections after reaching maximum but doesn't accept new ones. So it's similar to the backlog in posix listen(). I'm not sure about the default size in golang or if it works similarly to standard listen, but in any case that should no longer be a prometheus problem since non-accepted connections have no fd.

👍 Thank you!

Yes. Thanks a lot!


[SPARK-23377][ML] Fixes Bucketizer with multiple columns persistence bug

What changes were proposed in this pull request?
Problem:
Since 2.3, Bucketizer supports multiple input/output columns. We will check if exclusive params are set during transformation. E.g., if inputCols and outputCol are both set, an error will be thrown.
However, when we write Bucketizer, looks like the default params and user-supplied params are merged during writing. All saved params are loaded back and set to created model instance. So the default outputCol param in HasOutputCol trait will be set in paramMap and become an user-supplied param. That makes the check of exclusive params failed.
Fix:
This changes the saving logic of Bucketizer to handle this case. This is a quick fix to catch the time of 2.3. We should consider modify the persistence mechanism later.
Please see the discussion in the JIRA.
Note: The multi-column QuantileDiscretizer also has the same issue.
How was this patch tested?
Modified tests.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/833/
Test PASSed.

Test build #87366 has started for PR 20594 at commit 9cd7c86.

cc @jkbradley

Test build #87366 has finished for PR 20594 at commit 9cd7c86.

This patch fails due to an unknown error code, -9.
This patch merges cleanly.
This patch adds the following public classes (experimental):
 class QuantileDiscretizerWriter(instance: QuantileDiscretizer) extends MLWriter

Merged build finished. Test FAILed.

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

retest this please.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/843/
Test PASSed.

Test build #87379 has started for PR 20594 at commit 9cd7c86.

Test build #87379 has finished for PR 20594 at commit 9cd7c86.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
 class QuantileDiscretizerWriter(instance: QuantileDiscretizer) extends MLWriter

Merged build finished. Test FAILed.

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

retest this please.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/854/
Test PASSed.

Test build #87392 has started for PR 20594 at commit 9cd7c86.

Test build #87392 has finished for PR 20594 at commit 9cd7c86.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):
 class QuantileDiscretizerWriter(instance: QuantileDiscretizer) extends MLWriter

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

Merged build finished. Test PASSed.

I thought again, instead of "removing default value and restore it again later (which may cause some side effects)", maybe the better way is, add a parameter to DefaultParamsWriter.saveMetadata, specify which default param need to skip when saving.
@mgaido91 Yes I agree with you. Either #20410 or #18982 need to be merged to 2.3, the related issue is possible to cause some strange bugs.
cc @jkbradley

Because this is a quick fix, my idea is to have a surface patch that doesn't change existing API. The approach of adding parameter to DefaultParamsWriter.saveMetadata also sounds good to me, but the parameter seems useless if we get rid of this quick fix in the future.
Instead of adding parameter, I think we can pass the paramMap parameter when calling saveMetadata.
For #20410 and #18982, I have a question, are they regression? Seems to me they are not new issues to 2.3.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/888/
Test PASSed.

Test build #87440 has started for PR 20594 at commit 3a29039.

Test build #87440 has finished for PR 20594 at commit 3a29039.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

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

@WeichenXu123 @viirya as I said in the other PR, I think no default value should be persisted. #20410 and #18982 are not regression: they are problem which have been present in all the release so far, but they are showing up more and more "thanks" to all the models having the dualism inputCol/inputCols.
Every usage of isSeton Scala side is a problem with the Python API until either one of them will be merged. And this issue is the same. After persisting, every usage of isSet is not working as intended. Therefore I'd be for either not to store any default value or store them writing explicitly that they are default values.

@mgaido91 Thanks for your thoughts.  We do need to persist default values; please check out the JIRA.  For fixing Python, I think the best fix will be to transfer the default & explicitly set Params to Java separately, rather than treating them all as explicitly set.

@jkbradley thanks for your answer. I think that the 3rd approach you suggested on the JIRA is the right way to go on a long term plan. Personally, I disagree with you when you say that we should keep the default values. I think that changing a default value doesn't happen often and if it happens it is not a problem: if the user cares about the value of a parameter, he sets it. But this is just my opinion.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/903/
Test PASSed.

Test build #87458 has started for PR 20594 at commit 174c114.

Merging with master and branch-2.3

Well I succeeded in merging this with master, but the merge script isn't working for branch-2.3.  I wait to see if the read-only repo syncs and fixes the issue.

Success!  Merged to branch-2.3 too.


API to deal with timeout errors

Some IsTimeoutError style helpers would be somewhat more idiomatic than forcing devs to rely solely on switch err.(type)

https://github.com/uber-go/cadence-client/pull/385


Python: Export the TBSCertificate

Add a method to export the TBSCertificate part of the certificate.
In RFC6962-bis, the signature in the SCT for X.509 certs does not cover
the entire certificate, but the TBSCertificate and the issuer key hash.
To implement issuance of V2 SCTs, access to the TBSCertificate is necessary.

@RJPercival PTAL


Fix - side effects

Description of Change
Add CSS files to the sideEffects array of the package.json fixing #68

Can we leave only the changes related to sideEffect and exclude .gitignore and yarn.lock?

I have reverted the changes to both files by pulling them from origin/main ;)


Relative Episode Numbers - Ignore 0.5

Some series have .5 episodes quite often, i wouldnt class these as whole episodes and this can mess with metadata providers.
Maybe ignore all special episodes or round numbers?
or maybe just an option alltogether to ignore specials

This is a design choice. I know that it cause trouble with some series (there was a similar issue with episodes whose episode number is 0 (#206)) but relative_episode_number is for people who want their episode number always relative to the season the episode belongs to. This format option isn't meant to interact in any way with the "real"/provided episode numbers (like .5).


TFKUBE-414: Added Bitbucket, Jira, and Confluence modules in cleanup script

Pull request description
Provide description for the PR
Checklist

[x] I have successful end to end tests run (with & without domain)
[x] I have added unit tests (if applicable)
[x] I have user documentation (if applicable)

I must confess that I don't use the cleanup script explicitly. What is its main use case and how do you use it @nghazali ?

@nanux This script call by installer and uninstaller scripts indirectly. Usually we don't have to use in directly.


Word wrap for variables in Watch view

Sometimes the value of the variables is too long and it doesn't fit on the Watch view. It'd be nice to have a word wrap option so it can be shown on multiple lines. An horizontal scroll bar would also be useful.

We will not do this.
You can drag and drop the WATCH view to the horizontal panel for more space.

We will not do this.
You can drag and drop the WATCH view to the horizontal panel for more space.

 Horizontal dragging makes very little sense.
The WATCH view ought to show complete variables without users having to worry about space on screen. Text wrapping is and is the only way to go. I totally don't understand the denial of this feature.

I don't agree: by dragging the Watches view into another area it will gain a lot of horizontal space as you can see on this screenshot:

If you don't like that approach, please feel free to submit a Pull Request implementing what you are looking for.

What if it's a long string that doesn't fit the screen, even horizontally? The only viable way to watch it if it's being changed iteratively is by printing it in each step of a loop with the debug console. That's too cumbersome

I don't agree: by dragging the Watches view into another area it will gain a lot of horizontal space as you can see on this screenshot:

@xoelop is right though, this is the first time I've used watches and I've already got a long expression with an even longer regex string value. There is literally no way for me to view the output with watches.
Why don't you just make existing word wrap option apply globally (i.e. including watched expressions)? It's like the most basic text editor/viewer feature.

It also would be amazing to be able to view variables that include line breaks as a string with multiple lines instead of with escaped characters.

For folks like me who landed here from search, it looks like this is now on the backlog in #177733

For folks like me who landed here from search, it looks like this is now on the backlog in #177733

🎉🎉🎉! That's right!
Finally 1⃣ less weakness compared to JetBrains products!


Failed to resolve

Hi,
I'm trying to use the macro in a project with rust 1.58.0. But when I add transitive_from = "0.1.3" to my Cargo.toml, and then I want to use it as transitive_from::hierarchy!{...}, it fails with
use of undeclared crate or module `transitive_from`

As far as I understand, I don't need to use transitive_from or such, correct?
Sorry for the newbie question.

Hmm, I just double-checked and it worked for me in a minimal examle. No, you don’t need to add anything like use transitive_from;. If you try to write  use transitive_from; anyways, does it give the same error message? Did you make sure that you saved your Cargo.toml after modifying it? If you do cargo clean and then cargo check, does the cargo output on the terminal give you a Checking transitive_from v0.1.3 line?

Ouch - I put it under [dev-dependencies], which of course does not work. Sorry for the noise then. With [dependencies] it works like a charm, thanks a lot!


change to /bin/sh, use XDG_CONFIG_HOME instead of .config

Switch to a more system agnostic shell. Use $XDG_CONFIG_HOME since not everyone uses or has a ~/.config folder.
I would also recommend properly quoting some things so as to avoid any potential conflicts. Though that is more personal preference and thus not included in this commit.

thanks, merging and testing


Allow pausing/resuming geolocation streaming in Windows app and disable protocol handler / pan-tilt-zoom

Added option to pause / resume geolocation stream.
Disable access to protocol handler and pan-tilt-zoom camera permissions.

https://app.asana.com/0/0/1203947316990877/f
https://app.asana.com/0/0/1203992606607851/f

Heads up I'm just fixing the build setup so we can release this.


JSON option in Property Filter component is throwing UnsupportedOperationException

Describe the bug
JSON option in Property Filter component is throwing UnsupportedOperationException
Environment

AEM Version: AEM as Cloud Service
Asset Share Commons Version: 3.8.12
Author, Publish or both? Both

To Reproduce
Steps to reproduce the behavior:

Go to Asset Share Commons landing page
Add a Property Filter Component in the filter section and open dialog.
Choose "Dropdown" in Type field and select the Source as "JSON" and provide the JSON from AEM repo. e.g. /content/dam/testData.json
Page will crash.

Expected behavior
Page should not crash. Property Filter should render the dropdown content on page.
Screenshots

PR raised: https://github.com/adobe/asset-share-commons/pull/1172

Fixed in 3.18.14


Rewrite Workspace errors as DiagnosticData structs

This change is required for future improvements to the Workspace support of the DiagnosticsEngine.

@swift-ci please smoke test

Moved to WorkspaceDiagnostics.

@swift-ci please smoke test

@shahmishal can you check why @hartbit is unable to run CI?

@swift-ci please smoke test

@swift-ci please smoke test

@shahmishal can you check why @hartbit is unable to run CI?
Now you should be able to.

Failure looks related

Thanks @shahmishal!

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test OS X

@swift-ci please smoke test

@swift-ci please smoke test


Add autolet

All effects are shown in the test.
NOTES:

Assignment children process missed. I can’t construct a legal case.
How to handle type?

Setting autolet is removed for coffeeCompat.
Add a recursion inner AssignmentExpression to resolve NOTE 1.

@IamIpanda Thanks for the PR, looks great!
I think for autoLet types should be handled by TypeScript's type inference. In cases where you need to specify a particular type use an explicit declaration.
This looks good enough to merge in. It's ok for features flagged behind "civet ..." directives to be somewhat experimental and open to future improvements.
@edemaine any other thoughts?

I agree!  I'd like to see a short description of what autoLet does in the README, though, ideally before merging.
I also had one question: Does autoLet still prevent shadowing across functions, as in:
x = 5
function f()
  x = 10  # is this the global x?

I assume so, like autoVar.  I think that's fine, but I wanted to be clear which one it does. (And maybe it's worth adding a test to this effect.)
Assuming yes, in the future, I'd like to make a shadow flag where autoVar and autoLet both don't do this, and limit their automatic scoping to the current function, not parent functions, except when overridden by global/nonlocal (or outer?) directives, like Python. This can lead to fewer nonshadowing bugs (which I've run into maaany times), though it's probably less common with TypeScript.


ClientSideResolution strategy.

We need strategy that will return error to the client. This will always ensure client that data incosistency happened and client should deal with it.

CC @ssd71

/cc @craicoverflow, @machi1990
Automatically generated comment to notify maintainers


⚠ Fetchers has degraded performance

In fb2692b, Fetchers ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 477 ms

Resolved: Fetchers performance has improved in 45f9699.


Update README.md

Created a Read me pull request option for pull request

Remove conflicts bro @webianks


Add and utilize i18n to change title of Most Popular block

 "Most Popular" header on home page


Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding

> from 1 | grep .git
Python path configuration:
PYTHONHOME = '/tmp/.mount_Extrat1GMhA4/usr/'
PYTHONPATH = '/tmp/.mount_Extrat1GMhA4/usr/share/pyshared/:'
program name = '/usr/bin/python3'
isolated = 0
environment = 1
user site = 1
import site = 1
sys._base_executable = '/usr/bin/python3'
sys.base_prefix = '/tmp/.mount_Extrat1GMhA4/usr'
sys.base_exec_prefix = '/tmp/.mount_Extrat1GMhA4/usr'
sys.platlibdir = 'lib'
sys.executable = '/usr/bin/python3'
sys.prefix = '/tmp/.mount_Extrat1GMhA4/usr'
sys.exec_prefix = '/tmp/.mount_Extrat1GMhA4/usr'
sys.path = [
'/tmp/.mount_Extrat1GMhA4/usr/share/pyshared/',
'',
'/tmp/.mount_Extrat1GMhA4/usr/lib/python310.zip',
'/tmp/.mount_Extrat1GMhA4/usr/lib/python3.10',
'/tmp/.mount_Extrat1GMhA4/usr/lib/python3.10/lib-dynload',
]
Fatal Python error: init_fs_encoding: failed to get the Python codec of the filesystem encoding
Python runtime state: core initialized
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007fa996320740 (most recent call first):
<no Python frame>
 ~/.l/s/0/m/autocivp (master) [127]> from 1 | grep .git

i useing
ExtratermQt-0.73.0.glibc2.29-x86_64.AppImage

I have the same issue when I run the AppImage

The dependency on Python for this is becoming a real weakness. I'm thinking of rewriting those small commands into C and using https://justine.lol/cosmopolitan/index.html to make it run (most) places out of the box.

Since the shell code is running in the context of the AppImage environment, it seems the AppImage is missing the python module encodings that's used by the from.py.
Python is notorious for not being consistently distributable, and heavily reliant on the host environment.  As it is, the python-based extras will only ever work if the host system python is a supported version (which puts the effort on your development to make sure your script supports a huge range of python versions), and all the python modules you need are already installed on the host, something you can usually assume will never be true if you use any non-core modules.
Using a language that compiles to a single static binary is probably your best choice since you can't assume any external dependencies will exist on the host.  Notably, that includes most C/C++ libraries outside of the stdlibs.  You would need to be sure to statically compile your application, which means finding static libraries for any libraries you need and then abiding by the licensing restrictions of them (fingers crossed they don't conflict with each other!).
Commonly recommended solutions for this exact issue are Golang and Rust, which are designed for this use case and both have large libraries of public module/crates.  Those languages compile everything into a single static binary that can be run in-place.

It should also be pointed out here, that Terminals are generally not something that works as an AppImage.  When running a terminal you usually don't want to be in the AppImage separated environment, you instead want direct access to the host.
The error output above is a good example of how it wouldn't be possible to run python scripts on the native host from the AppImage version of Extraterm-Qt.  The "system" python is the one from the AppImage.

You don't have to convince me that Python apps are one of the hardest things to distribute to end users. I've seen the problems at work (for a desktop PyQt app).
I do have some good news though. I've been working on this problem lately and I've got C implementations of the from and show commands. (Using small, often single file libraries for the support I need.) Right now I'm trying to figure out how to compile them to ELF binaries which support Linux and the BSDs in one file. I'm not sure if AMD64 and ARM can be supporting in one file though, but it would be nice.
so, almost there.

The main way I've seen to do this is with Cosmopolitan (https://github.com/jart/cosmopolitan) that steals an idea from malware and adds a bunch of binaries for different architectures to the end of a shell script that acts like an architecture detection and jump table. It supports BSD and Linux, as well as x86_64, ARM, etc.

yeah, I've been trying out Cosmopolitan. The whole APE and binfmt_misc isn't quite as out-of-the-box as I would like, but I don't need Windows support and I'm more interested in Linux and similar unix systems. For those it should be possible to get a "normal" ELF binary out of Cosmopolitan which side-steps the whole APE thing.


project GUI

this is the gui that we will need in the project
closes #40
closes #44
closes #42

because of late approval for pull request and another commit was pushed to branch so when merging it merged on 2 commits not one


Mark code in configuring-astro.md

What kind of changes does this PR include?

New or updated content

Description

Uses our new code snippet inline marking feature to highlight important parts of the code blocks.

LGTM!


Setup-Fedora article link is bad - and hard to track down - but here is the text

Section cut and pasted from https://web.archive.org/web/20200812001802/https://docs.photoprism.org/developer-guide/setup-fedora/
Development Environment (Fedora 32)¶
Before you start, make sure you have Git and Development Tools installed on your system (git, gcc, g++, llvm, cmake, etc...).
Instead of using Docker, you can create your own development environment. You'll need:
Go >= 1.11
TensorFlow for C
Make
NPM
MySQL (if you don't want to leverage sqlite)

Without Docker, you won't be able to use our other Dockerfiles (e.g. for TensorFlow).
Step 1: Run Git to clone the project's:
git clone git@github.com:tensorflow/tensorflow.git
git clone git@github.com:photoprism/photoprism.git
Step 2: Install required packages:
sudo dnf install golang darktable intltool nodejs npm
Note: This setup is for development and testing purposes only.
Step 3: Download Bazel wrapper to build tensorflow:
Consult the TensorFlow Docs for configuration options.
go get github.com/bazelbuild/bazelisk
alias bazel='bazelisk'
cd tensorflow
bazel build --config=v1 //tensorflow/tools/lib_package:libtensorflow
sudo tar -C /usr/local/ -xvf $HOME/.cache/bazel/bazel$USER/<SOME_HASH>/execroot/org_tensorflow/bazel-out/k8-opt/bin/tensorflow/tools/lib_package/libtensorflow.tar.gz
Note: Your SOME_HASH value will depend on your build, go find it!
Step 4: Build PhotoPrism:
cd photoprism
make
Step 5: Enjoy an amazing application ;-)
Depending on your system's configuration, you might need to update your ldconfig
Add a configuration file which persists reboots
sudo echo '/usr/local/lib/' >> /etc/ld.so.conf.d/usrlocallib.conf
sudo ldconfig
Update your shell's environment which will not persist upon reboot
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
sudo ldconfig

Thanks for the heads-up, I've updated the link to point to the archived version.


Restructure docs and add meetup types document

This PR moves all the docs into a specific docs folder to keep the directory cleaner.
It further adds a document to start collaborating on different meetup types for inspiration.

/LGTM


Add eyes-open-shut dataset

Adding dataset for classification tutorial (from paper A First Step towards
Eye State Prediction Using EEG http://suendermann.com/su/pdf/aihls2013.pdf)

Used original features names as col names
Pre-processed data to replace outliers (values > 3std) with nans

@ourownstory please accept it so I can create the tutorial for classification


Assassin's Creed : Revelations hangs during savegame loading

The game runs and you can to navigate in the main menu without issue when D9VK is enabled. But each time you try to load a savegame to continue a party, the game hang and you need to kill the game's process.
When you replay apitrace with wined3d/Nine, you can see the loading stage of the savegame. Oddly, you can pass the loading stage when you replay apitrace with D9VK.
If i disable DXVK State Cache, the game hangs randomly.
Software information
Name of the game, settings used etc.
System information

GPU: AMD R580 8Gb
Driver: Mesa-git + LLVM 9
Wine version: Wine-Staging-4.9
D9VK version: last D9VK-git

Apitrace file(s)

https://drive.google.com/open?id=1O817MlLidTwVwZgrZenpLDTXWqy97F36

Log files

d3d9.log: ACRSP_d3d9.log

Other small bug
You can see that there is an small issue between D9VK and Nine/Wined3d when you're at this step before to push a button to go to the main menu.
D9VK screen :

Nine/Wined3d screen :

The logs mention the format<PHONE_NUMBER> which is AL16.
I think in WineD3D, it's a 32 Bit Format where the last 16 Bit are alpha and the first 16 Bit are empty.

I tried your branch K0bin and the game still crashes during loading savegame.
ACRSP_d3d9.log
I still have warn:  ConvertFormat: Unknown format encountered: Invalid Format<PHONE_NUMBER>) in this d3d9.log

I've implemented ColorFill here
fb03246abe449f408bb085350dbecae19ea03fe3
I will test this for your usecase tomorrow.

The game still crash with vanilla D9VK and D9VK+ R16 + AL16 patches from Rhedox
It still crashes at the same point, during the loading scene :

d3d9.log : ACRSP_d3d9.log

I think i can close this bug report since it fixed on Master.

For reference: fixed by 08755c2


--all option confused by FTS tables

Got this error:
% python -i -m sqlite_history content.db --all
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/Users/simon/Dropbox/Development/sqlite-history/sqlite_history/__main__.py", line 4, in <module>
    run()
  File "/Users/simon/Dropbox/Development/sqlite-history/sqlite_history/cli.py", line 67, in run
    configure_triggers(args.database_path, args.tables)
  File "/Users/simon/Dropbox/Development/sqlite-history/sqlite_history/cli.py", line 20, in configure_triggers
    configure_history(db, table)
  File "/Users/simon/Dropbox/Development/sqlite-history/sqlite_history/__init__.py", line 14, in configure_history
    db.execute(backfill_sql(table, columns))
sqlite3.OperationalError: no such column: rowid
>>> import pdb; pdb.pm()
> /Users/simon/Dropbox/Development/sqlite-history/sqlite_history/__init__.py(14)configure_history()
-> db.execute(backfill_sql(table, columns))
(Pdb) print(table)
releases_fts_idx
(Pdb) print(columns)
['segid', 'term', 'pgno']

Datasette has code relating to this, to figure out which tables should be hidden tables:
https://github.com/simonw/datasette/blob/5890a20c374fb0812d88c9b0ef26a838bfa06c76/datasette/database.py#L391
It's pretty complex, especially when SpatiaLite gets involved.

I'm thinking about dropping the --all feature entirely, but it's REALLY useful to have that.
So maybe I do port across that Datasette code.

This code in particular:
        # Also mark as hidden any tables which start with the name of a hidden table
        # e.g. "searchable_fts" implies "searchable_fts_content" should be hidden
        for table_name in await self.table_names():
            for hidden_table in hidden_tables[:]:
                if table_name.startswith(hidden_table):
                    hidden_tables.append(table_name)
                    continue

Cleanest solution would be to move this logic into sqlite-utils and add that as a dependency here. For the moment though I'm going to copy in a subset of the function (I'll ignore SpatiaLite for the moment).


Updates for the billing page changes

Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @ksigler7,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


chore(docker): fix master CI by using debian:buster with no backports repo for gcc8 builder

What type of PR is this?
/kind bug
Any specific area of the project related to this PR?
/area build
What this PR does / why we need it:
Debian-buster backports repo is no more present upstream: https://github.com/falcosecurity/driverkit/actions/runs/8749618529/job/24013163670
Also, enable build-dev CI to test images build if docker folder was updated.
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?:

NONE

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

Needs approval from an approver in each of these files:

OWNERS [FedeDP]

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

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

Needs approval from an approver in each of these files:

OWNERS [FedeDP,LucaGuerra]

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


Add OpenLMLab/MOSS

@gptbert Can you explain how is this project a derivative of LLaMa?
Quoted from their english readme,

GPTQ/GPTQ-for-LLaMa: Quantization and inference backend.
They only use the quantization and inference code from another project that support LLaMa


OSX arch identifer. Which is it arm64 or aarch64?

Your docs have this example.

Yet with this recipe file.
context:
  version: "1.5.4"

package:
  name: lefthook
  version: ${{ version }}

source:
  - if: linux and x86_64
    then:
      url: https://github.com/evilmartians/lefthook/releases/download/v${{ version }}/lefthook_${{ version }}_Linux_x86_64
      sha256: 1a359b807fe6dec3f796a62c436348749697571a992cd24c3f646529e20bce71
  - if: osx and x86_64
    then:
      url: https://github.com/evilmartians/lefthook/releases/download/v${{ version }}/lefthook_${{ version }}_MacOS_x86_64
      sha256: c26d50de48d3c4e70fb5ba629f0906b5a3effbb73f7daef2688ff4f4625cc8d2
  - if: osx and arm64
    then:
      url: https://github.com/evilmartians/lefthook/releases/download/v${{ version }}/lefthook_${{ version }}_MacOS_arm64
      sha256: 358be965ed88a52c53e7cdc8d8d4f5e95d592f07d9ab1015483ac2c9520d2490
  - if: win and x86_64
    then:
      url: https://github.com/evilmartians/lefthook/releases/download/v${{ version }}/lefthook_${{ version }}_Windows_x86_64.exe
      sha256: 5e27ecf5a78b13f8b3b23faf938da2f28a7310a98475a60bfc782fe1becb5132

build:
  script:
    - mkdir -p $PREFIX/bin
    - if: unix
      then: mv ./lefthook* $PREFIX/bin/lefthook
      else: mv ./lefthook* $PREFIX/bin/lefthook.exe
    - if: unix
      then: chmod +x $PREFIX/bin/lefthook

And this command: rattler-build build -r ./src/recipe.yaml --target-platform osx-arm64 ran on a Linux host. I get the following.
Found variants:

lefthook-1.5.4-hcf6ef32_0
╭─────────────────┬───────────╮
│ Variant         ┆ Version   │
╞═════════════════╪═══════════╡
│ build_platform  ┆ linux-64  │
│ target_platform ┆ osx-arm64 │
╰─────────────────┴───────────╯

Work dir: "/home/brad.jones/Projects/Personal/pixi-play/output/bld/rattler-build_lefthook_1703378139/work"
Build script: "/home/brad.jones/Projects/Personal/pixi-play/output/bld/rattler-build_lefthook_1703378139/work/conda_build.sh"
+ mkdir -p /home/brad.jones/Projects/Personal/pixi-play/output/bld/rattler-build_lefthook_1703378139/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh/bin
+ mv './lefthook*' /home/brad.jones/Projects/Personal/pixi-play/output/bld/rattler-build_lefthook_1703378139/host_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh/bin/lefthook
mv: cannot stat './lefthook*': No such file or directory
Error:   × Build failed

ie: The source file was not downloaded.
Yet if I change if: osx and arm64 to if: osx and aarch64 and re-run the same command I get a good conda package.
I feel like there is some work to be done to standardize these identifiers. As x86_64 != 64. ie: My first instinct when I attempted to supply a value to --target-platform was to combine linux and x86_64 into linux-x86_64. But that fails & you are given this list of valid platforms: Valid platforms are 'noarch', 'unknown', 'linux-32', 'linux-64', 'linux-aarch64', 'linux-armv6l', 'linux-armv7l', 'linux-ppc64le', 'linux-ppc64', 'linux-s390x', 'linux-riscv32', 'linux-riscv64', 'osx-64', 'osx-arm64', 'win-32', 'win-64', 'win-arm64', 'emscripten-wasm32', 'wasi-wasm32'
It just feels like there is a bit of a disconnect between this list & what you actually have to use in the recipe file.

Now it's arm64 (as in conda-build).
We could still make it an alias with aarch64. I am not sure about it.

Closing for now as we are following the general conda pattern (arm64 on win/macos, and aarch64 on linux).


Add abstraction for auth provider (Keycloak)

There are many good alternatives to Keycloak that administrators may prefer - nice modern open source examples being ZITADEL and the Ory stack.
It would be great to have the auth provider abstracted to allow for different providers based on ogranization needs and preferences.

@mmurto Would you actually prefer to switch to another provider or is this more a theoretical use case?

@mmurto Would you actually prefer to switch to another provider or is this more a theoretical use case?

Personally I would prefer, as we have no previous ties to Keycloak. I've got good experience of ZITADEL, and it for example supports organizations much more natively than Keycloak. The built in UI is also quite a lot more modern (though that may be personal preference) and, most importantly, it supports user avatars out of the box. :D
Both Keycloak and Ory also have cloud offerings directly from the developers, which can be a good options for smaller teams.


Objective class

It would be nice to define a class that describes an objective function.

Makepsan: $\max_{i \in O} C_i$
Total completion time: $\sum_{j \in J} \max_{i \in O_j} C_i$
Total tardiness: $\sum_{j \in J} \max ( \max_{i \in O_j} C_i-  d_j, 0)$

While at the same time, users should be able to define their own custom objective functions. One use case is when some operations don't contribute to the objective.

The difficulty mainly comes from makespan-type functions. Adding summation of tardiness or completion time are relatively easy. But I don't know how to create a way to easily compose objective functions like makespan.

The first one is probably much simpler but more error prone.
{
    "max": {
        "max": {"tardiness": 1, "tardiness": 2},
        "sum": {"completion_time": 3, "completion_time": 4},
        "min": {
            "min": {
                "completion_time": 5,
                "min": {"completion_time": 6, "completion_time": 7},
            }
        },
    }

}

expr = Max(
    [
        Max([Tardiness(1), Tardiness(2)]),
        Sum([CompletionTime(3), CompletionTime(4)]),
        Min(
            [
                Min(
                    [
                        CompletionTime(5),
                        Min([CompletionTime(6), CompletionTime(7)]),
                    ]
                )
            ]
        ),
    ]
)

Let's restrict ourselves here to objective functions as function of job completion times (or other data).


how to just concat some module

i write lib.js:
 import jQuery from 'jquery'
 import React from 'react'
 import ReactDOM from 'react-dom'

i just want to concat all third-party libs( use resolve.alias to point *min.js).
But webpack  wraps some code,like
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
    module.exports = factory();
else if(typeof define === 'function' && define.amd)
    define([], factory);
else {
    var a = factory();
    for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
}
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/    // The module cache
/******/    var installedModules = {};
/******/
/******/    // The require function
/******/    function __webpack_require__(moduleId) { //...

how to remove the wrapped code?

https://webpack.github.io/docs/list-of-plugins.html#2-explicit-vendor-chunk

@rhyzx tks very much

This doesn't seem to work. The file still gets wrapped, here is my example. I get a vendor.js that is bigger than a3rdPartyLibrary. :rage:
var webpack = require('webpack');
var path = require('path');

module.exports = function(env) {
    return {
        entry: {
            vendor: ['a3rdPartyLibrary']
        },
        output: {
            filename: '[name].js',
            path: path.resolve(__dirname, 'dist')
        },
        plugins: [
            new webpack.optimize.CommonsChunkPlugin({
                name: 'vendor', // Specify the common bundle's name.
                minChunks: Infinity
            })
        ]
    }
}

@guikubivan You need an entry(entries) where the CommonChunkPlugin can spilt out the vendors
webpack.config.js
entry: {
   index: './index.js',
   [ another: ./another.js' ],
   vendor: [ VendorLibInEntries1, VendorLibInEntries2, ... ]
}

Atm it seems to be the case that you get one bundle with vendor + your source code which is likely to be bigger then the vendors alone 😛

@michael-ciniawsky As I see, the generated vendor.js contains the webpack bootstrap code and the libraries.
There is an option to omit this code?
Before using CommonsChunk, each bundle had the bootstrap code, and now only the vendor file has it.
But I want to disable that code for a one simple project that I have.
I mean, is it possible to use webpack only for minify and concat when there is no dependencies?
Thank you in advance.

There's a new plugin to just concat a bunch of files: https://github.com/webpack/webpack/issues/1641
Bear in mind that this is outside of webpack module loading. I personally use this for compatibility purposes only.

I have the same problem, is this solved in any way? I am moving from gulp to webpack and had a general.js file with a bunch of utility global functions. Some of them were simply attached to inputs via jQuery, like:
$('#someinput').keyup(function(){ mycustomglobalfunction();});
None of these are working anymore, because webpack wraps and hides them.
How do I fix this in the "webpack way"?

?? Any updates?

I couldn't do that using webpack. I wrote gulp task for that.
On Thu, Feb 15, 2018 at 3:53 AM, Rutul Patel<EMAIL_ADDRESS>wrote:

?? Any updates?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/webpack/webpack/issues/1641#issuecomment-365764717,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AXQdzi2jZsj9Jg8zMMiTdi6OOK8lYbh6ks5tU1zMgaJpZM4Gkp7N
.

--
Regards,
Vaishali R
W: www.infibeam.com
Reduce your environmental footprint. Print only if necessary.
CONFIDENTIALITY INFORMATION AND DISCLAIMER
This email message and its attachments may contain confidential,
proprietary or legally privileged information and is intended solely for
the use of the individual or entity to whom it is addressed. If you have
erroneously received this message, please delete it immediately and notify
the sender. If you are not the intended recipient of the email message you
should not disseminate, distribute or copy this e-mail. E-mail transmission
cannot be guaranteed to be secure or error-free as information could be
intercepted, corrupted, lost, destroyed, incomplete or contain viruses and
the sender accepts no liability for any damage caused by the limitations of
the e-mail transmission.

I couldn't do that using webpack. I wrote gulp task for that.

Can you please share that with me please. @VaishaliRavindran

For my case, I had a xml file that contained all the filename that needs to
be bundled together. So, using 'gulp-yaml' plugin , I converted that to
JSON and then using 'gulp-bundle-assets' plugin, I bundled those files into
a single file.
On Thu, Feb 15, 2018 at 6:00 PM, Rutul Patel<EMAIL_ADDRESS>wrote:

Can you please share that with me please. @VaishaliRavindran
https://github.com/vaishaliravindran
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/webpack/webpack/issues/1641#issuecomment-365913365,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AXQdzpMO5wiUvrtBCM_8AUoupQF2sPJmks5tVCN6gaJpZM4Gkp7N
.

--
Regards,
Vaishali R
W: www.infibeam.com
Reduce your environmental footprint. Print only if necessary.
CONFIDENTIALITY INFORMATION AND DISCLAIMER
This email message and its attachments may contain confidential,
proprietary or legally privileged information and is intended solely for
the use of the individual or entity to whom it is addressed. If you have
erroneously received this message, please delete it immediately and notify
the sender. If you are not the intended recipient of the email message you
should not disseminate, distribute or copy this e-mail. E-mail transmission
cannot be guaranteed to be secure or error-free as information could be
intercepted, corrupted, lost, destroyed, incomplete or contain viruses and
the sender accepts no liability for any damage caused by the limitations of
the e-mail transmission.

In Webpack 4 I was finally able to achieve this by adding this to my configuration:
module.exports = {
  // the rest of my config...
  optimization: {
    splitChunks: {
      chunks: 'all'
    }
  }
}


Update Docs for GSuite Setup

User Feedback for the GSuite Setup page:
1: Screenshots on the GSuite setup page don't match the current GSuite Admin pages.  (No specific on which screenshot, so please verify.)
2: Go to your Google Admin Manage API client access Security settings.
The link doesn't work for the user. But the screenshots are totally correct though.

Link to GSuite docs so that we do not have to constantly update screenshots.


Add diff to commit comments in 'mr show' output

I was hoping to display diffs, or a least the commit ID in a note made on a commit.  However, it seems like I can't get that information or at least go-gitlab doesn't provide it.
See
https://gitlab.com/bichon-project/bichon/-/issues/30
for details.
You can see this problem reproduced in lab with
diff --git a/cmd/issue_show.go b/cmd/issue_show.go
index 94762df148ab..b8356d34bfb2 100644
--- a/cmd/issue_show.go
+++ b/cmd/issue_show.go
@@ -169,6 +169,9 @@ func PrintDiscussions(discussions []*gitlab.Discussion, since string, idstr stri
                        printit(`
 %s-----------------------------------`, indentHeader)

+                       if note.Position != nil && i == 0 {
+                               fmt.Println("\n", indentHeader, note.Position)
+                       }
                        if time.Time(*note.UpdatedAt).After(CompareTime) {
                                printit = color.New(color.Bold).PrintfFunc()
                        }

Tried this locally and I was able to see the position information. Of note, you'll only see position info on notes in discussions that are actually diff comments. In trying to fiddle with the output, I'm not sure how to actually get the diff chunk from what's returned tho. Hopefully your git-fu is better than mine, it seems like we'll have to do something like
git diff -U10 <base sha> <head sha> -- <file>
# git diff -U10 note.Position.BaseSHA note.Position.HeadSHA -- note.Position.NewPath

-U10 to get enough diff context
and then parse through the headers to find the appropriate offset to show.

OOOOOOOOOOOOOOOOOHHHHHHHHHHHHHHHHHHH :)
It's a cumulative diff, not the commit itself that gets commented on!


Add steps for Google OAuth for OIDC

[x] read the CONTRIBUTING guidelines
[ ] raised a GitHub issue or discussed it on the projects chat beforehand
[ ] added unit tests
[ ] added integration tests
[x] updated documentation if needed
[ ] updated CHANGELOG.md

I've been meaning to add this, as I was a little confused what the steps were for Google OAuth, and there are many differing solutions around. This is the easiest way to do things (and very obvious once you understand).
I also have screenshots of the process, but honestly it's pretty straight forward. The screenshots are just arrows to what to click on.

@joshuataylor can you take a look to the prettier error in oidc.md?

Will look into it asap, cheers.


Sticky Queues interface design

This PR seeks to iteratively flesh out the design for any interface changes needed to support sticky task queues.
Checklist:

[x]  Add configuration option to enable or disable sticky mode, with a cache size limit
[ ] Add some way (a new method) to evict specific workflows, or entire cache.
[x] Decide on if we should change to using run ids rather than task tokens as the primary identifier returned by polls and provided in activations

[x] If so, make that change

[ ] Add unit tests for multiple worker scenarios

We had had some discussion in Slack about changing to use run ids for activations rather than task tokens. I think we should decide that first as it will impact the rest of the changes here. The (long) history is in this thread: https://temporaltechnologies.slack.com/archives/C01FG4BRQVB/p1620064199265000 -- at the conclusion it sounds like we were all in agreement but just wanted to confirm.
@mfateev Do you have any opinion here? I think when we talked you were already saying run ids made more sense.

Options for lang sending evictions:

Explicit eviction API. Pass run id as argument.
Add a "evict" option to the status enum inside WfActivationCompletion
Add an "evict" WorkflowCommand, allowing you to include it as part of a successful activation.

1 is simple, explicit and obvious. 2 I think mixes concerns in a way that is icky and provides little benefit. 3 is more reasonable as it allows you to pretty cleanly actually complete an activation, and then say you want to evict right after that, which could be a desirable thing to do. Returning a failed activation already evicts, so that's covered.
I would be OK with either 1 or 3.
The Go SDK, for example, also exposes a "blow up the whole cache" function. Arguably that functionality is easier accomplished by just restarting the worker. And, in fact, the docstring // PurgeStickyWorkflowCache resets the sticky workflow cache. This must be called only when all workers are stopped. implies it might be better handled by just doing that implicitly once there are no live workers. So, not sure we need this. If we do, it favors solution 1 as we would need some top-level API for it anyway, and at that point might as well allow passing run_id | entire_cache as the argument.
@bergundy @mfateev @vitarb Thoughts?

I think we'd need to go with 1 because otherwise eviction can only happen as a part of completion.
With 1 what I imagine that the eviction request is sent to core that will eventually issue an eviction activation.
The shouldn't be an option for lang to just drop a workflow without receiving an instruction from core.
As for going with run id as the identifier, I'm good with that as long as the assumption we made in the slack thread about not starting a new workflow instance if another one exists for the same run id.

Spoke with Max, other thing we'll want to do as part of these changes is introduce a proper Worker abstraction, with support for registering multiple workers per core instance. Some of the stuff in the gateway options, and some of the stuff in the core options, will move into a new worker options struct, and then we'll need to support registering workers with core. Likely this also means returning which worker some activation is associated with as part of poll responses.

While we're at it are we going to support multiple task queues in a single core instance?

While we're at it are we going to support multiple task queues in a single core instance?

That would take the form of registering multiple workers, as any given worker is only supposed to poll from one task queue (with the minor exception of sticky queues, where the worker polls from it's specific queue as well as the shared one)

@bergundy I've updated the PR to change polling to accept a task queue name, and activations have the associated task queue (/ worker name) included in them.
Pending a discussion with Samar I have set for tomorrow morning, we'll either be able to do sticky queues that are host+queue specific or we'll have to stay with sticky queues that are per-host only. See https://www.notion.so/temporalio/Core-Sticky-Queues-Design-and-docs-c443300a424d4e158e03ab51edb0b668
If we can do the former, then things will just work pretty naturally. Workers poll the queue to which they are assigned, and they get tasks only from that queue, either sticky or not.
If we can't, the sticky queue has to get polled somehow. The options would be to auto-register a "sticky" worker which polls it, or to have it be polled in the background, potentially handing it's tasks to whatever worker happens to be polling next. I'd say the former is probably better if we have can't do the more-specific sticky queues. Either way, lang has to deal with activations for that queue by routing them to a (deterministically chosen) worker than can handle the workflow type, which is the crappy part we can hopefully avoid.

@bergundy Interface for wf activations is changed to use run id now too

There's still a little cleanup to do here, but just wanted to get the no-task-queue-name-passing version up. The last open question is if we need an is_cached flag for workflow activations. I think actually probably not, considering lang always needs to keep the workflow function suspended while going back and forth with core anyway. Essentially any activation that isn't just a StartWorkflow job must be "cached" already.
Does that make sense to you @bergundy ?

There's still a little cleanup to do here, but just wanted to get the no-task-queue-name-passing version up. The last open question is if we need an is_cached flag for workflow activations. I think actually probably not, considering lang always needs to keep the workflow function suspended while going back and forth with core anyway. Essentially any activation that isn't just a StartWorkflow job must be "cached" already.
Does that make sense to you @bergundy ?

Yup


update PodSpec.Host to PodSpec.NodeName

update PodSpec.Host to PodSpec.NodeName in /pkg/api/types.go and /pkg/api/v1/types.go
fix  #6895
@bgrant0607 @krousey

Fails gofmt

Ref #7018

Updated. PTAL. Thanks.

Doesn't build. Regenerate pkg/api/deep_copy_generated.go

Yeah, I have the problem when I work on #6797 today. It's strange this problem didn't occur yesterday. I will get back to this PR after fixing #6797.

@wojtek-t We're having trouble with the generated conversions. Is it obvious what we're doing wrong?

Hi @wojtek-t, no big deals, I just want to know what's the best practice when one tried to update the api, e.g., update PodSpec.Host to PodSpec.Nodename.
here are the steps that I want to take, but these don't work:

change a field name (e.g. Host->NodeName) in api/types.go and api/v1/types.go
add functions in v1beta3/conversion.go to convert "Host" in v1beta3 to "NodeName" in internal version
run hack/update-generated-conversion.sh and hack/update-generated-deep-copies.sh.
This doesn't work because in step 3, the scripts complain that the v1beta3/conversion-generated.go and deep-copies_generated.go contain undeclared field name "Host"

So I have to manually update various -generated.go, and then these update- scripts are happy. However, at this point, I have already made all the changes manually, there is no work left for these update-* scripts. Please let me know if there is a better way. Thanks.

Building the generator should not build the previously generated code. That seems wrong.

In cmd/genconversion/conversion.go:
     "github.com/GoogleCloudPlatform/kubernetes/pkg/api"
     _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1"
     _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta1"
     _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta2"
     _ "github.com/GoogleCloudPlatform/kubernetes/pkg/api/v1beta3"

So to build the generator, it requires the conversion_generated.go files in these packages to be correct.

I understand that's the way it is. I was saying it shouldn't be that way. :-)
The generated code just needs to build, though, right? It doesn't need to work? If you commented out the lines it complained about, would the generator build and then regenerate the conversions?

Yeah, that should work. That seems to be the best option.

@caesarxuchao - yes, unfortunately this is the easiest way to do it. Basically, what you can do is to remove the whole code from */conversions_generated.go files, and running:
hack/update-generated-conversions.sh will regenerate them.
I agree it's not convenient and shouldn't work like this but it's not trivial to fix it.

@wojtek-t Please add that to the instructions.
https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/devel/api_changes.md#edit-version-conversions

@bgrant0607 - I thought about it and I know how to fix the problem. Will fix the real issue instead of updating documentation :)

"remove the whole code from */conversions_generated.go" won't work, because some functions in conversion.go depend on code in conversions_generated.go
@wojtek-t, I'm looking forward to your fix : )

@caesarxuchao unfortunately my fix doesn't work because what you wrote. Updated instructions are in #8921

Tests failing:
_output/local/go/src/github.com/GoogleCloudPlatform/kubernetes/pkg/api/deep_copy_generated.go:1377: out.Host undefined (type *PodSpec has no field or method Host)

@bgrant0607  Updated and rebased. Let's wait for the Shippable results. Thanks.

Shippable failed already:
 github.com/GoogleCloudPlatform/kubernetes/test/soak/serve_hostnames
test/soak/serve_hostnames/serve_hostnames.go:188: unknown "github.com/GoogleCloudPlatform/kubernetes/pkg/api".PodSpec field 'Host' in struct literal

There is something wrong in field.selector. I'm taking a look.

@bgrant0607 Shippable is green

Please squash the commits.

LGTM once squashed.

Squashed. Thanks.


Add Cities special achievement icons to spritesheet

These are the big mostly black images for the back of the card.

Can you elaborate what images are required here?

After looking at what is in img directory, it looks like we are set here:
special_achievements_landscape.jpg


Updated the mods code a bit for you :)

only ported the fix for the stacc issue iirc
and basically got it to the latest fabric api etc etc
Feel free to edit what isnt needed/needed into it but it works.

I appreciate this PR, although I have already done this on my own fork here: https://github.com/Noaaan/numismatic-overhaul/tree/1.20.1
I am drafting up both a PR and a changelog as we speak. The main goal being using the newly ported releases of stacc, see https://modrinth.com/mod/stacc-api/versions
As such I will close this to prevent potential merge-conflicts occuring


[[Power-Fx]] Localization hand-back [CTAS - RunID=20230613-213820-e29v4zkq13]

Translation handback check-in (PR Created by automation).

✅ No public API change.


Trying to create the new NomCom (nomcom2022) in the datatracker renders an internal server error

Describe the issue
In creating the appropriate nomcom "object" for the datatracker (as per the Secretariat procedures) at https://datatracker.ietf.org/admin/nomcom/nomcom/add/ I got this error:
"Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there was an error in a script used to generate the requested page. In case this was an overload problem or other temporary error, you may want to try again in a little while.
A failure report with details about what happened has been sent to the server administrators. It would be helpful if you would create an issue providing additional information at GitHub, too."
Code of Conduct

[X] I agree to follow the IETF's Code of Conduct

This step may no longer be necessary since the last time we created a NomCom, but I'd still like someone to take a look at let us know. These were the steps I was following after creating the Group (https://datatracker.ietf.org/admin/group/group/add/):
Go to https://datatracker.ietf.org/admin/nomcom/nomcom/add/
Search for the group you just created and find the group number in the URL
Enter the group number into the field
Remember to save!
Thanks so much!

This is likely (based on reading the crash reports) some interface (likely the admin) that led the secretariat to create the nomcom object twice. I'm speculating that it was the admin being slow and the add button got clicked twice.
Validation in the admin should prevent the crash and produce a more useful error message, even if we do make a workflow that keeps the secretariat from having to use this part of the admin to set up a new nomcom.


tests/config: prefect test

Signed-off-by: Zhou Hao<EMAIL_ADDRESS>

@q384566678 What is a prefect?

LGTM, I think @q384566678 meant "perfect" or perhaps "improve".

Ok, @q384566678 Can you fix the commit message and then we can merge.

updated. Sorry for spelling mistakes.

@rh-atomic-bot r+

Thanks @q384566678


fixed typo in description

just fixed a typo within description:  'searhced' => 'searched'

Thanks!


⚠ ClamAV has degraded performance

In 948c56f, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 80 ms

Resolved: ClamAV performance has improved in de1cb03.


Edit: TV Salud

Channel ID (required)
TVSalud.cl
Channel Name
TV Salud Chile
Alternative Names
No response
Network
No response
Owners
No response
Country
Chile
Subdivision
No response
City
No response
Broadcast Area
No response
Languages
No response
Categories
No response
NSFW
None
Launched
No response
Closed
No response
Replaced By
No response
Website
No response
Logo
No response
Notes
No response

Channel data being edited corresponds to what we have in the database. Rejected.


Adds fly-cli v3.9.1 and credhub-cli v1.6.0

Hi,
I added the fly cli and credhub cli to the release.
The binaries (I linked them to the names above) need to be added/uploaded to blob.

@jhunt : can you take care of uploading the blobs?

@drnic can you help with that?

CI is currently failing. Unknown when someone will pick this up and fix. Sorry about delay.

@benjaminguttmann-avtq I uploaded the blobs. Just add these two entries to your pull request's config/blobs.yml and it should pass our CI:
jumpbox/bins/credhub:
  size: 9730875
  object_id: ae9adbcb-fc8c-4c9a-6cb7-9868775a0f5c
  sha: ec7d4e5dbbe9d3f5364929ac435e1ae5b94b1393
jumpbox/bins/fly:
  size: 16036735
  object_id: 214b5ab1-1351-4369-6925-9f120c48c59f
  sha: 87afcc6f09ccda7bd49d350ee574b6ac8c9e145c


Bid check for flights/show

Add missing $bid to flight/show so when needed Load In Acars button can be placed there too.


MMLSpark model.save changes dfs working directory

With the following diagnostic code,
hdi_wd = get_hdispark_working_dir()
print("AFTER STATS TRANSFORM, BEFORE WRITE")
print(hdi_wd)

# save model
model.save("outputs/aot-mmlspark.model")
hdi_wd = get_hdispark_working_dir()
print("AFTER WRITE")

AFTER STATS TRANSFORM, BEFORE WRITE
wasb://snip/testhdi_1505503317753
Running HDI/Spark job in wasb://snip
AFTER WRITE
Regular spark model:
Running HDI/Spark job in wasb://snip/testhdi_1505505091869
BEFORE WRITE
wasb://snip/testhdi_1505505091869
Running HDI/Spark job in wasb://snip/testhdi_1505505091869
AFTER WRITE
wasb://snip/testhdi_1505505091869

hhmmm, thats odd because looking at the save code there doesn't seem to be any directory changing smoking guns. Is this a blocking issue?


Added code for dark-light mode

I has been added code for this change/issue.

thanks for adding a new feature to my project.

maintaining formalized code as it.

thanks for adding a new feature to my project.


rename symfony2 to symfony

when tagging the new release with sf3, the symfony2 labels are no longer valid since symfony3 is also supported.
In order to avoid confusion, Symfony2 has been renamed to Symfony
Note: similar stuff happened in other projects like symfony itself: https://github.com/symfony/symfony/commit/0a76b7e9fc2fcc0495312047f83843e041e28cfc
#223

ping @snc

Thanks!


[BUG]ErrCode: 60, Reason: 'SSL certificate problem: unable to get local issuer certificate'.

Describe the bug
curl_cffi.curl.CurlError: Failed to perform, ErrCode: 60, Reason: 'SSL certificate problem: unable to get local issuer certificate'. This may be a libcurl error, See https://curl.se/libcurl/c/libcurl-errors.html first for more details.
To Reproduce
session = requests.Session(impersonate='chrome101')
# success
resp1 = session.get('https://github.com')
# error
resp2 = session.get('https://www.tnslgb.com/main/index.do')

Expected behavior
'https://www.tnslgb.com/main/index.do' should be success
Versions

OS: WSL2 (Ubuntu 20.04.6 LTS)
curl_cffi version: 0.5.10

Additional context

No special characters in the environment path.

The certificate of this site is invalid. Try open the URL in your browser to verify that. To bypass this, set verify to False.
resp2 = session.get('https://www.tnslgb.com/main/index.do', verify=False)

The certificate of this site is invalid. Try open the URL in your browser to verify that. To bypass this, set verify to False.
resp2 = session.get('https://www.tnslgb.com/main/index.do', verify=False)

Thank you very much. It works very well.


Moving out of mutable reference for Parts

Hello,
I would like to do GPIO initialization in a separate function, mostly for clarity/convenience.
I have a function like:
fn init(gpioa: &mut Parts)  {
    gpioa.pa8.into_alternate_push_pull(&mut gpioa.crh);
    .
    .
    .
}

This doesn't work:
error[E0507]: cannot move out of `gpioa.pa8` which is behind a mutable reference

Is there a solution to this? I think having an option of doing GPIO initialization in separate functions passing around &mut Parts is a useful thing.

Thata's not possible to do, because we use the ownership system to ensure that each pin (and hardware resource in general) is only used once. So .into_alternate_push_pull takes ownership over pa8. It's a bit of a tradeoff between ease of writing and safety, but we choose to lean towards the safety side to avoid having to do debugging if 2 pieces of code accidentally try to use the same hardware.
In your case, you may be able to take ownership over Parts and return the pins you're interested in, i.e.
fn init_gpioa(gpioa: Parts) -> Pa8<Alternate<PushPull>> { // This type signature is a guess, might be slightly different
    gpioa.pa8.into_alternate_push_pull(&mut gpioa.crh)
}

The downside of doing that is that you can only have one init function that uses gpioa. I tend to do all my initialisation in one function for this reason.

Thata's not possible to do, because we use the ownership system to ensure that each pin (and hardware resource in general) is only used once. So .into_alternate_push_pull takes ownership over pa8. It's a bit of a tradeoff between ease of writing and safety, but we choose to lean towards the safety side to avoid having to do debugging if 2 pieces of code accidentally try to use the same hardware.
In your case, you may be able to take ownership over Parts and return the pins you're interested in, i.e.
fn init_gpioa(gpioa: Parts) -> Pa8<Alternate<PushPull>> { // This type signature is a guess, might be slightly different
    gpioa.pa8.into_alternate_push_pull(&mut gpioa.crh)
}

The downside of doing that is that you can only have one init function that uses gpioa. I tend to do all my initialisation in one function for this reason.

Thanks for the explanation/confirmation!

Thanks for the explanation/confirmation!


Misskey => Bluesky: Convert _misskey_requireSigninToViewContents flag to !no-unauthenticated label

Misskey 2024.11.0 added a new option to hide notes from logged-out view that is very similar to Bluesky's one. Let's convert this option between these nodes.
Misskey added a _misskey_requireSigninToViewContents flag to AP Actors:
https://github.com/misskey-dev/misskey/pull/14799/files#diff-e69e0203183c3337ff7ea11c3e9219e5591e32f92de33cee1f7fbffeb96d8363
Note that Misskey has a distinct "no-federate" option. Misskey will federate notes even if the "require sign-in to view contents" option is enabled and Misskey devs intentionally chose that behavior. So _misskey_requireSigninToViewContents should not be considered as an opt-out signal.

Oh wow, interesting idea! Thanks for the idea and details.

Note that Misskey has a distinct "no-federate" option. Misskey will federate notes even if the "require sign-in to view contents" option is enabled and Misskey devs intentionally chose that behavior. So _misskey_requireSigninToViewContents should not be considered as an opt-out signal.

I appreciate the thought here. However, I'm probably still inclined to interpret Misskey's "require sign-in" setting as opting out, like Bluesky's. I understand the difference from Misskey's "no-federate" option, but I generally prefer to handle only fully public data and accounts in both Bridgy classic and Bridgy Fed.

I appreciate the thought here. However, I'm probably still inclined to interpret Misskey's "require sign-in" setting as opting out, like Bluesky's. I understand the difference from Misskey's "no-federate" option, but I generally prefer to handle only fully public data and accounts in both Bridgy classic and Bridgy Fed.

Makes sense, it’s your call.


Getting a compile error on Linux Ubuntu 64-bit

==== SixXSd - SixXS Daemon ====
Building  : SixXSd
Copyright : (C) Copyright SixXS 2000-2015 All Rights Reserved
Version   : 4.0
Release   : 2015.10.12
Options   :  -DOPTIMIZE
OS        : Linux 64-bit
Compiler  : cc 5.4.0

Compiling sixxsd.o
sixxsd.c: In function ‘main’:
sixxsd.c:551:3: warning: ignoring return value of ‘freopen’, declared with attribute warn_unused_result [-Wunused-result]
freopen("/dev/null", "r", stdin);
^
sixxsd.c:552:3: warning: ignoring return value of ‘freopen’, declared with attribute warn_unused_result [-Wunused-result]
freopen("/dev/null", "w", stdout);
^
sixxsd.c:553:3: warning: ignoring return value of ‘freopen’, declared with attribute warn_unused_result [-Wunused-result]
freopen("/dev/null", "w", stderr);
^
Compiling ayiya.o
Compiling checksum.o
Compiling common.o
In file included from /usr/include/x86_64-linux-gnu/sys/socket.h:38:0,
from platform.h:67,
from sixxsd.h:62,
from common.c:7:
common.c: In function ‘recv_from_to’:
common.c:83:32: error: invalid application of ‘sizeof’ to incomplete type ‘struct in6_pktinfo’
char cmsg6[CMSG_SPACE(sizeof(struct in6_pktinfo))];
^
common.c:124:56: error: dereferencing pointer to incomplete type ‘struct in6_pktinfo’
memcpy(&((struct sockaddr_in6*)to)->sin6_addr, &pkt6->ipi6_addr, sizeof(pkt6->ipi6_addr));
^
Makefile:90: recipe for target 'common.o' failed
make[1]: *** [common.o] Error 1
Makefile:263: recipe for target 'all' failed
make: *** [all] Error 2

Perhaps missing a .h file ?

I don't have any Ubuntu's handy; but just compiled on Debian 9.4 with the two commits just pushed and then it nicely compiles.
Include definitions change over time....

That was perfect.
For anyone else interested in compiling this code on Ubuntu 16.04:
apt-get install libmysqlclient-dev librrd-dev
make all


Switch to xo

The reason for safe-buffer is that we're still testing for 6.2.1 according to our .nvmrc and Buffer.from wasn't backported.

will be releasing new version soon, will post a comment here once done.

See v2.0.0 via npm install frisbee@latest or yarn add frisbee@latest.
This release includes refactoring for Node v10+ support, new tests with ava (instead of mocha), and use of @babel/preset-env targeted to Node v6.4+ and the last 2 versions of browsers (see .babelrc and .browserslistrc).


[REQUEST] Using a rancher to milk mushroom cows for mushroom stew

Description:

Putting a bowl inside a rancher would milk the mushroom cows aka generate mushroom stew just like putting a bucket in gives milk from normal cows.

As far as I know this should already work unless it's bugged.


Is it possible to install MSIX update by HTTP link? (WinRT API)

Hello.
Right now, in my application to install the update I need to download new version MSIX and install it by downloaded path with PackageManager.UpdatePackageAsync (I can't use appinstaller, since it's broken windows-wide).
Because of that I can use advantage of differential update, and app needs to download full archive.
Is there any possibility (or maybe planned) to install/update MSIX package by its HTTP link with working differential update?
Not sure, if it's the right repository to ask this question, since it's more related to Windows API and not MSIX Core.

@maxkatz6 thank you for your question. Until we get the ms-appinstaller protocol launcher issue resolved and re-enable the functionality, you are right regarding a webpage link. However, you should be able to enable automatic updating using an AppInstaller file and/or PowerShell (Set-appxpackageautoupdatesettings) with an appinstaller file. Then configure the app to update on launch.


Feature request: Utilities: d-inline-flex

What do you think about adding a d-inline-flex as one of the display properties?
https://v4-alpha.getbootstrap.com/utilities/display-property/
Bootstrap is using flexbox everywhere now and it can be a useful addition (override display: flex with display: inline-flex) so we can put elements on the same line.

Oops, already available here: https://v4-alpha.getbootstrap.com/utilities/flexbox/


Select toml vs tomllib conditionally based on Python version in build process

Starting in 3.11, Python started shipping tomllib as a standard library. Prior to that, a library had to be imported with the best option being toml. Currently, drawpyo has no dependencies except this library so it would be nice to preserve that independence. However, it would also be nice to have compatibility with Python pre 3.11.
The way it's currently handled is with a version check and a conditional import:
    if version_info.minor < 11:
        import toml

        data = toml.load(file_name)
    else:
        import tomllib

        with open(file_name, "rb") as f:
            data = tomllib.load(f)

But this won't work with builds and releases. It has to be seen if a conditional dependency can be set based on major Python version for a build.

Implemented in pyproject.toml and tested in virtual environments with Python 3.10 and 3.11.


Fix config loading, install device and call sanitize

Syncs the cfg.install.device to the installspec.target As on manual-install the device can actually come from a flag and its not on the cloud-config, we need to initialize the InstallSpec with the value of the cfg.Install.Device as by that time we already have the final value of the install target.
Also calls sanitize on config and specs and warns if anything goes wrong

Directly merging as main is broken


Clarify ScheduledEnqueueTime

Message enqueuing time does not mean that the message will be sent at the same time. It will get enqueued, but the actual sending time depends on the queue's workload and its state.
change above to
ScheduledEnqueueTime is the time after which a message is activated. The actual time the messages becomes active depends on the queue's workload and its state.

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

ID: 47f3ba00-15b2-f56d-2420-dfd5dec94147
Version Independent ID: 32340b9d-e5e0-052b-10c8-d4fc4d68f4df
Content: ServiceBusMessage.ScheduledEnqueueTime Property (Azure.Messaging.ServiceBus) - Azure for .NET Developers
Content Source: xml/Azure.Messaging.ServiceBus/ServiceBusMessage.xml
Service: azure
GitHub Login: @CamSoper
Microsoft Alias: casoper

Thank you for your feedback.  Tagging and routing to the team member best able to assist.

Please clarify what this actually does. What happens between the time you call SendAsync on the client and the ScheduledEnqueueTime? Where is the message?
Is this the same as the InitialVisibilityDelay on storage queues but with a fixed DateTime instead of a TimeSpan?

Closed via #37861


Add column generators, support for mixed grid spans

Regarding issue #1057, this is a proposed solution that generates all the permutations needed to mix any grid size n with any column spanning (up to n).  (See codepen with and without this patch)
As a side-effect of this new feature, the generation of all other column-related rules is now automated (so for example setting @columnCount: 18 generates the .seventeen and .eighteen classes and rules on forms and tables).
Generating rules for n columns is as easy as:
&{.forCols(); .-each(@number, @i) {
<EMAIL_ADDRESS>> .foo.column {
        .-nColumn
    }
}}

This generates:
.my.one.column.grid > .foo.column {
    width: 100%;
}
.my.two.column.grid > .foo.column {
    width: 50%;
}
.my.three.column.grid > .foo.column {
    width: 33.33333333%;
}

/* ... up to @columnCount, or pass a number to .forCols() */

.my.n-th.column.grid > .foo.column {
    width: 5%;
}

I documented the generators on mixins.less, but I guess that should go elsewhere.
If this PR is too disruptive, I can create a new one that just adds the needed rules to grid.less :smile:

:+1:


Note IP addresses for outbound ASM requests

Add ASM IP address information to docs as it is laid out in the product -
Scanning originates from IP <IP_ADDRESS> (US) and <IP_ADDRESS> (EU).

The ports are already listed in the documentation in a section further down in the page.

Matching branch name is not required for non-production workloads - primarily would like a review to make you aware of the change and see if you would tweak the copy.

preview looks good:


Convert ServiceTypeDropdown.js to ES6 module

Who is this PR for?
Developers who want to contribute to the codebase by adding or improving client-side features.
What problem does this PR fix?
Not all our JS files use ES6 modules, which can be confusing for new JS devs coming on to the project.
What does this PR do?
Converts ServiceTypeDropdown.js to ES6.
Checklist

[ ] New Bulk Services Upload, services dropdown — tested latest commit in Internet Explorer

Screenshot

Ooooh, caught a bug while testing locally in Internet Explorer — toggle open/close on click broken on this branch, error message involved ref undefined.


fix: missing filters in the table #354

affects: @haulmont/jmix-react-core, @haulmont/jmix-react-ui, @haulmont/jmix-rest

Will use different approach


how would I do with byte data

behind the file byte can't work

When opening an issue, please provide all of the information requested in https://github.com/mozilla/pdf.js/blob/master/.github/ISSUE_TEMPLATE.md

ok ,google browser,I want to give the file the byte ,but it dont work


[BUG] Invert after intensity normalisation

Describe the Bug (might not be a bug tho)
Hi @carsen-stringer!
I found three suspicious implementations in intensity normalization but could only identify two as potential bugs. I attempted to fix these two in #981, but I still wonder if the third issue should be addressed:
To invert the image so that dark cells become bright cells while the bright background becomes darker, the current implementation is:
https://github.com/MouseLand/cellpose/blob/84344b0ceb6eb91e759301fbdad5c9b77a1c881b/cellpose/transforms.py#L666-L667
essentially:
image = -1 * image + 1

However, image here is usually the output of a percentile-based normalization like normalize99() and is not strictly within the [0, 1] range. I guess most pixels are in [0, 1] so this inversion makes sense, but still some are outside [0, 1]. I haven't thoroughly thought this through. Is this a problem, or is it working as intended?
Many thanks!

thanks for looking into this, yes this is how it should work, like when not inverted, some pixels will lie outside the [0,1] range


Replace CGO Lua with GopherLua

The Lua support as it is, works, but relies on CGO, which makes the embedding of LedisDB no pure Go, the way it is supposed to be (possible).
Would it be possible to replace https://github.com/siddontang/golua with https://github.com/yuin/gopher-lua? I would be willing to put dev time into making this happen as a priority, as the dependency on CGO isn't desired.
Please let me know your opinion on this @siddontang and thank you very much for the time and effort you've put into ledisdb!

Hi @GlenDC
It is great if we can use pure GO LUA implementation. But I have no time this week, will see it next weekend.
You can send me a PR too. Thanks.

Hi @siddontang a PR is open for this :) The unit tests pass, and I've also tested it manually with some stuff, and it all seems to hold up fine. Up to you to be the final judge of course.