Implement a more flexible dispatcher

Hi guys,
We're using an inhouse developed multisite package for which we need to override the Application::dispatch method. At the moment this is solved by a custom Application class in the package which we instantiate in every project instead of the core class. This is tedious as we currently have many projects which use this, and more to come, so I'm looking for a way to solve it in a more elegant way.
At the moment we can intercept the dispatch via the on_before_dispatch event, but the way it's setup now would mean that the entire dispatcher process would need to be overridden. Additionally the script must be terminated before the event returns, as otherwise the core dispatcher is run anyway.
I see several possible solutions:

Allow overriding or extending the DispatcherRouteCallback class in some way;

Add an additional event before the DispatcherRouteCallback is instantiated (which allows to modify the request before it's dispatched, our current dirty solution to the problem above);

Add a dispatcher manager à la the recently added url resolver which allows to register and prioritize custom dispatcher routines. It would need to completely replace the current dispatch process to make it as flexible as possible.

I would write up a proposal for that last one, but I'd like to run it first through you guys before I spent any time on it only to find out you've already had something else in mind :-)
Thoughts?

Are you saying that you would like to override/extend the DispatcherRouteCallback from a package?

That would be one solution that solves our case, yes.
In my mind the most elegant solution would be the third option as it would allow influencing the dispatch process from anywhere, though I'm not completely sure how feasible that would be.

Is this in order to facilitate new functionality on existing pages, or is it in order to add a new type of callback ? (e.g. recently I wanted to add a RestCallback to the router, which worked a bit differently than the standard route callback, and ran into some trouble and had to abandon it.) Could you explain what you're trying to accomplish in a bit more detail? I'm leaning toward the second one, obviously – since the dispatcher callback is a bit byzantine and inviting people to add and prioritize their own sounds frightening. That said, if it were a bit more modular maybe this wouldn't be such a problem.

Both, actually. I'll need to explain a bit further how the multisite package works to come to a good example.
We have several pages below a common page each which is in itself the homepage of a multisite website. We then map a domain name to the internal path of that page and rewrite the Request so the dispatcher will pick up the correct page. As mention before, this is done by a custom Application class which overrides the dispatch method, adding in an event before the DispatchRouteCallback is called.
Multisite websites usually have their own domain, but "layered" websites are also supported - a multisite website can have several subsites. So for example:
http://example.com	- a multisite website, lives at /sites/1 in the concrete5 page tree
http://www.foo.com	- another multisite website, lives at /sites/2
http://www.foo.com/bar	- multisite website which has the www.foo.com website as a parent. Lives at /sites/3
This complicated situation is possible for several reasons, amongst which are inheritable site attributes and to facilitate easy content sharing for our clients via a separate content sharing module where they can copy site content from one site to another.
Now we also have several apis available on the website which we need to call from Magento among others. This is for a normal website no problem as we can just define a route to the relevant controller, however on a multisite website we need to export data relevant to that multisite website on which the api is called. This is at the moment not solvable with just a normal route as subsites might also exist on a relative path as explained before. So if we define the route /ccm/blah/get-dealers-for-this-website then we can export the dealers for every website which exist at the root level because we can simply resolve the host name, but the route dispatcher will simply ignore www.foo.com/bar/ccm/blah/get-dealers.
Our current solution to the problem is to create a singlepage with api actions, but besides this being an ugly solution it also requires to copy the page over to every subsite.
Third, we also have a seo redirect package which is just a bunch of redirects which can be easily managed from the dashboard. The redirects are initiated from the package on_start method, but in my mind this is not the place to do that. (We built this package because the .htaccess file was being misused by our seo people, in one case leading to a list of over 50.000 lines of redirects which was processed for every request including images and such)
So.
What I propose is a dispatcher manager in which one can register and prioritize his own dispatcher routines. This manager, once the dispatch process is initiated, will run the request through each registered dispatcher until a response is returned.
Currently the dispatch process in concrete5 consists of 3 main parts:

the "early dispatch" which check the user session and account validity
the route dispatcher
everything that happens in the current DispatcherRouteCallback

These parts can be registered at different priority levels leaving ample room for custom dispatchers. For example in case of the multisite it would look like this:
1: process any redirects
2: early dispatch
3: regular route dispatcher
4: multisite route dispatcher
5: multisite page dispatcher
6: DispatcherRouteCallback
Note that i've named the concrete5 parts in the situations they exists currently in. I believe for example the DispatcherRouteCallback can also be separated and made a bit more modular.
I'd look to the UrlResolver as an example how to build a dispatcher manager, allowing priority levels between 0 and 1024 (or something). The concrete5 dispatchers can then be spread out at several levels.
So that's it, "in a nutshell". Sorry for the wall of text :D

I just found this discussion as I was trying to override DispatcherRouteCallback myself too. I'll see if there are better ways, but I was basically trying to add some custom code to the 404 handling. I could do that in on_before_render, but I'd prefer if I would be able to run my code for 404 calls only.

I'm currently using this in my on_before_render function, but I'm sure there could be a nicer way:
$v = View::getInstance();
if (!$v->getPageObject()->getController() instanceof \Concrete\Controller\SinglePage\PageNotFound) {

Play close attention to work on version 8.0.0, we've been discussing a middleware stack and an http kernel with the same design as most PSR-7 middlewares. See https://github.com/concrete5/concrete5/tree/feature/psr-7_middleware for an mostly functional middleware stack for PSR-7. It currently uses symfony's http message bridge to keep backwards compatibility, but due to https://github.com/symfony/psr-http-message-bridge/issues/15 this branch is on hold. Likely we'll stick with symfony's http kernel and build a middleware stack around that.

@acohin with the runtime stack and the middleware stack, I think we've covered all the bases of this issue. Would you agree?


Trust Wallet 6.2 iOS

Trust wallet updated their app in iOS to 6.2. This implementation of the bridge no longer works for connecting to Trust Wallet via wallet connect. I can confirm that reverting back to the official https://bridge.wallectconnect.org doesn't have this issue, so I do believe it is an issue with this implementation (though I agree with you the official server is very intermittent!)

This is the output from my instance when attempting to connect to trust wallet 6.2. In the app the connection is successful, however when you return to the browser (as directed to do so) the connection is closed
root@grv:~/walletconnect-bridge# java -cp target/bridge.jar:target/dependency/* com.aktionariat.bridge.BridgeServer
[main] INFO com.aktionariat.bridge.BridgeServer - WalletConnect Bridge Java Edition 0.1 started on port: 8887
[WebSocketWorker-11] INFO com.aktionariat.bridge.BridgeServer - /<IP_ADDRESS> opened a connection to us
[WebSocketWorker-11] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"863eff01-12f2-46ed-ad74-ca060498ef19","type":"pub","payload":"{\"data\":\"26202d28574728260834a442d674a80b568ed369dfa1e2fcd52e8176e10693a53614b112404a50eecf1e6e33acc0fe1b969cf03910f92318c78dfb31c61bdf8d92c9a2c31a63979d854c640f58a742923561be33df7508f874ea9f12a0e7ae7a58af5c940e933be0a8a71d6e3ab58494d93544b089e69e4aa66210e96dd79ab0ead8aee4b93406e2347fa21a8d91397128ba4001e62bb1e2186ca1edcea3013f8b8bcef7c929aa14cb3e2ec5a360b6dacccad378c4cd8e79d29f387d4a19ea8d8aa928bf31b6a80667b89d763e056686bd6420dce1e37eda8e0e699c084359d9082c952052084381cf4fcca250e0df0cc135f5f8f470baa2e9a6fa56004a92a4daaac08d3b1a2682ed2f6565942a6d89d6f4ae6ab4249b12f82d78ae2b0f8bb671282c0fa0549b5174ad28ba78c9ff16c6f7b55ecdee171a33cea9b0c3f73c9626104a8342c4944ff6dcc8ba6536a5369565aed50e78401c95a5b780a9b95c0811a4e7bbe9dc41b8796cec0cef89942930cecbba03ea5761d20b4d5822918a5a1d78812222a9bb54be46d54f8863e0b832247fffc599a888e65e98b304dc8e188c58c0cd4e34ef61c0baa107d761f12a2528d4f0ee16a77a3e6b4e8d4074ce9f8cfff8464a891ebea5ef14281aa7cdbf73e24a708122272c978117c10f155188c870beb3960feaf5b5c1e6475423a7bdcf6b9f4049a804f7f46a9a017d9b5a691e8eae5649a930f662e2a8672b941a02\",\"hmac\":\"537affe7bd6874f558bc211ad2cae153cc25da232567f8a727ba7dc0218ebb31\",\"iv\":\"fd17cd948d625a38dca0ba290d1887cc\"}","silent":true} from /<IP_ADDRESS>
[WebSocketWorker-11] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"b1e6c6ff-9ab1-4c56-99ae-2bcdf0481753","type":"sub","payload":"","silent":true} from /<IP_ADDRESS>
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - /<IP_ADDRESS> opened a connection to us
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"863eff01-12f2-46ed-ad74-ca060498ef19","type":"sub","payload":""} from /<IP_ADDRESS>
[WebSocketWorker-13] INFO com.aktionariat.bridge.BridgeServer - /<IP_ADDRESS> opened a connection to us
[WebSocketWorker-14] INFO com.aktionariat.bridge.BridgeServer - /<IP_ADDRESS> opened a connection to us
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"b1e6c6ff-9ab1-4c56-99ae-2bcdf0481753","type":"sub","payload":""} from /<IP_ADDRESS>
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Implicitely acking Bridge to org.java_websocket.WebSocketImpl@495bffb6 since Fri Jan 24 01:01:34 UTC 5997 from /<IP_ADDRESS>:41964
Replacing subscriber org.java_websocket.WebSocketImpl@51d69f6b with  /<IP_ADDRESS>:41964
[WebSocketSelector-15] INFO com.aktionariat.bridge.BridgeServer - null closed the connection, status 1000
[WebSocketWorker-13] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"3cfb575d-9779-4ae0-96bc-1f84cfe99b5a","type":"sub","payload":""} from /<IP_ADDRESS>
[WebSocketWorker-14] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"eb41a431-b01e-4130-bda1-c532e03fc760","type":"sub","payload":""} from /<IP_ADDRESS>
[WebSocketWorker-14] INFO com.aktionariat.bridge.BridgeServer - Received {"payload":"{\"iv\":\"a1d6f272bd24c491f93aaa93ea22a33f\",\"data\":\"220ba1bff69fb85f2785c7b7b253419d85da01b4fc8fc4f10f854b09b38331faa0959c7dc01a27ff32906a9be7162fcaaebdff4b6325d30e9b6934bc6b432a02eb2629b7ac244e056d7623dd2151cea74c6db169e131741873a3d470b07fcfa6eff5317de3b6b4f2040870bc9c24806cab1b79149cd3cca8057040e4f76ea7d2\",\"hmac\":\"c5a610528c732776cbe8d4fcd01ef91f1adf78ca687237eaa581c1489402b93c\"}","topic":"eb41a431-b01e-4130-bda1-c532e03fc760","type":"pub"} from /<IP_ADDRESS>
[WebSocketWorker-14] INFO com.aktionariat.bridge.BridgeServer - Implicitely acking Bridge to org.java_websocket.WebSocketImpl@799258d9 since Mon Jan 27 00:57:51 UTC 5997 from /<IP_ADDRESS>:41968
[WebSocketSelector-15] INFO com.aktionariat.bridge.BridgeServer - null closed the connection, status 1006
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Received {"payload":"{\"iv\":\"65d7e5f884c1ae7c601d9b1e84a23673\",\"data\":\"c19f90f3d060ad90280b451fefd783a8bfda853f812c369e396221d0947cbeb36ee2b7c098d3d9a92843133218712720707d9020b0387c72f5cae8839cab4bbc21f6c8d27b885addc9966ac713b315e9ce8858905d38f054effc4ff19a7ab405fc6e6c3ccbbf090dab16402e9898eb0cfc5559349a43cb44657654d5d30c89d8d4553332c68ff78935a976dafe252f18922037df4270a915f3aa37b6a92ef7af99c1e3b6917b81d358b949585c72206116af9dffc32fb5b81454b4fd0a9bc527c222135b808d2a8ec6958a20e880f649c7be821e6f5806ce17bc88768ae40bfc78135360560171b4c140d5a4b974404077e56bd77d662ba526fc99c71d0855f197b01d49d39f2c87b63726001bb69c34399ec62e4c3120b6c33fa1d90c4980c6612a775f41f09cb9e2da68a72a4279f9bfd7834e651c190260d9ef7dc9fda893cca2380b6f7b134f894edba07ab7aedb5fc892a6bf98f6a9688fdc18804355994dff6dc3a03b9949b404ea6ec07242266a4778d109faea333f45670255f1d5f3089b71a72504e955c653dfc38cbf6d6d06c7b55b2949e0a1158b415715080ccf35e9b351bde522c93eb2197b2ea4ded7cbb1b2d0c8bb5d62e3067b3033a65f2119024dd52ba98fb6e739fa59f83aba19a9cd7c561a82cde62b4b5f29e06efe826eec72069f5663f653bfe00985fa6e9f190b0f14a88dc0876127a890c2c365991fd2fc991c13150169069002e4e159c0a0509cd76db4fcb9d603118bb2ce27c72d721884738f2f84cbec2c73abdaa83c965f5e09ec57ba4252abdfaf0112edb9275aed8671bb1e3611817e05dd543054\",\"hmac\":\"75d7ea521765fdc424dcbe0ff30bbf7e8f10279898e934b1987297f3110c7f7c\"}","topic":"b1e6c6ff-9ab1-4c56-99ae-2bcdf0481753","type":"pub"} from /<IP_ADDRESS>
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Implicitely acking Bridge to org.java_websocket.WebSocketImpl@495bffb6 since Fri Jan 24 02:15:54 UTC 5997 from null
[WebSocketWorker-12] INFO com.aktionariat.bridge.BridgeServer - Implicitely acking Bridge to org.java_websocket.WebSocketImpl@495bffb6 since Sun Jan 26 07:07:17 UTC 5997 from null
[WebSocketSelector-15] INFO com.aktionariat.bridge.BridgeServer - null closed the connection, status 1006
[WebSocketWorker-11] INFO com.aktionariat.bridge.BridgeServer - /<IP_ADDRESS> opened a connection to us
[WebSocketWorker-11] INFO com.aktionariat.bridge.BridgeServer - Received {"topic":"b1e6c6ff-9ab1-4c56-99ae-2bcdf0481753","type":"sub","payload":""} from /<IP_ADDRESS>
[WebSocketSelector-15] INFO com.aktionariat.bridge.BridgeServer - null closed the connection, status 1006
[WebSocketSelector-15] INFO com.aktionariat.bridge.BridgeServer - null closed the connection, status 1006

Reorganized the behaviour of our server and released version 0.2.
See commit comment for details.


do not use globals

the handlers array is a global

Hi @mcollina please review again https://github.com/hemerajs/fastify-graceful-shutdown/commit/e5c98bc6d8921a5a337d3e51d45b373c7f6a6f0a


Make tests to run independently

What this PR changes
Currently the tests can't be run independently because they rely on the local server which started in one of the files. That is uncomfortable when working with a particular file. This commit adds the server to every file where necessary.
Also, fixed typo in .editorconfig and added WebStorm IDE's project folder to .gitignore.

Hello guys! Please review this PR, I think AppVeyor doesn't pass check because of misconfiguration since the repo was moved from cgiffard/node-simplecrawler.

Thanks for the PR @kbychkov! I think we would also have to destroy the server after the tests in each file have been completed – my suspision otherwise is that we continue to send requests to a server that was instantiated in a previous file.

That was in fact my first idea to wrap the server into before and after hooks. Though it will need more code changes and I'm hesitate to make the larger PR for the first time :)
I could rewrite accordingly, if it helps.

Hello @fredrikekelund! Did you received my email?


add commit test

Signed-off-by: Zhou Hao<EMAIL_ADDRESS>

LGTM, really nice additions to the test suites @q384566678, TYVM!

Agreed, look nice. 👍

@rh-atomic-bot r+


[Bug]: Node Page & Edit Node Page - Service Sections don't allign

Environment
Release
Bug Description
On node & edit the service sections do not align (server services & config services box)

Launcher Version
2.2.1
Operating System
Other
Affected Service (if applicable)
--
Logs (if applicable)
--

Acknowledgment

[X] I have checked the existing bugs and confirmed this issue is not already reported.


asciidoctorj-pdf error when processing

I have got following error:
[ERROR] Failed to execute goal org.asciidoctor:asciidoctor-maven-plugin:1.5.6:process-asciidoc (output-pdf) on project projectName: Execution output-pdf of goal org.asciidoctor:asciidoctor-maven-plugin:1.5.6:process-asciidoc failed: (SyntaxError) C:/Users/username/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-beta.5/asciidoctorj-pdf-1.5.0-beta.5.jar!/gems/asciidoctor-pdf-1.5.0.beta.5/lib/asciidoctor-pdf/core_ext/numeric.rb:3: syntax error, unexpected kDO_BLOCK
[ERROR] Float.prepend (Module.new do

Maven:
<plugin>
                        <groupId>org.asciidoctor</groupId>
                        <artifactId>asciidoctor-maven-plugin</artifactId>
                        <version>1.5.6</version>
                        <dependencies>
                            <dependency>
                                <groupId>org.asciidoctor</groupId>
                                <artifactId>asciidoctorj-pdf</artifactId>
                                <version>1.5.0-beta.5</version>
                            </dependency>
                        </dependencies>

works fine if I change
   <version>1.5.0-beta.5</version>

to
<version>1.5.0-alpha.15</version>
The same occurs on:
   <version>1.5.0-beta.6</version>

When I change version from 1.5.6 to 1.6.0 it does not immediately give error as in the examples above. Consider giving some matrix telling which version to use.

This looks like an incompatibly with JRuby. Can you figure out which
version of JRuby is being used? Try to turn up the verbosity in Maven and
search for the string jruby.

These are the versions of JRuby:
[DEBUG] org.asciidoctor:asciidoctor-maven-plugin:jar:1.6.0:
[DEBUG]    org.asciidoctor:asciidoctorj-pdf:jar:1.5.0-alpha.15:runtime
[DEBUG]    org.jruby:jruby-complete:jar:<IP_ADDRESS>:compile
[DEBUG]    org.asciidoctor:asciidoctorj-pdf:jar:1.5.0-alpha.15:compile
[DEBUG]       org.asciidoctor:asciidoctorj:jar:1.5.5:runtime
[DEBUG]       org.jruby:jruby-complete:jar:<IP_ADDRESS>:runtime
[DEBUG]    org.asciidoctor:asciidoctorj:jar:1.6.2:compile
[DEBUG]       org.asciidoctor:asciidoctorj-api:jar:1.6.2:compile
[DEBUG]       org.jruby:jruby:jar:<IP_ADDRESS>:compile
[DEBUG]   Included: org.asciidoctor:asciidoctor-maven-plugin:jar:1.5.6
[DEBUG]   Included: org.asciidoctor:asciidoctorj-pdf:jar:1.5.0-beta.6
[DEBUG]   Included: org.jruby:jruby-complete:jar:1.7.26
Caused by: org.jruby.exceptions.RaiseException: (SyntaxError) C:/Users/username/.m2/repository/org/asciidoctor/asciidoctorj-pdf/1.5.0-beta.6/asciidoctorj-pdf-1.5.0-beta.6.jar!/gems/asciidoctor-pdf-1.5.0.beta.6/lib/asciidoctor/pdf/ext/core/numeric.rb:3: syntax error, unexpected kDO_BLOCK
Float.prepend (Module.new do
^
at org.jruby.RubyKernel.require (org/jruby/RubyKernel.java:1040)
at RUBY.require (/C:/Users/username/.m2/repository/org/jruby/jruby-complete/1.7.26/jruby-complete-1.7.26.jar!

It appears you have multiple versions of Ruby on the classpath. Most concerning is JRuby 1.7.26, which is no longer supported. And that's likely why you're getting the error. You must at least be using JRuby 9.1.

The comment above was aggregating information and i was changing version in pom.xml.

That's a low-level Ruby language compliance error. It indicates that the
JRuby dependency is outdated.
I'm not exactly sure what to tell you to change to get the right version of
JRuby, but I'm certain that's the problem.
Does the example project have the same issue? If not, you could use it as a
reference. So that would be something to check first.

Here's a branch that shows that the example works:
https://github.com/asciidoctor/asciidoctor-maven-examples/pull/88
It also works if I test it with these versions:
        <asciidoctor.maven.plugin.version>1.5.6</asciidoctor.maven.plugin.version>
<asciidoctorj.pdf.version>1.5.0-beta.6</asciidoctorj.pdf.version>
<asciidoctorj.version><IP_ADDRESS></asciidoctorj.version>
<jruby.version><IP_ADDRESS></jruby.version>

So I think your dependencies have disagreements. I'd need to see a full example to know more.

Noted! I will upgrade all versions for all projects today. I started it, but kindlegen is giving me some headaches on this machine and I want to test all projects manually.I'll do when I get home later (in 9h).
Do you mind If I close this PR?

You can close the PR. I submitted merely as a reference for answering this issue.

Ok, thanks. I am happy that version 1.6.0 works fine with 1.5.0-beta.6 in my case.
Also note that in the example you provided you have explicity:
<jruby.version><IP_ADDRESS></jruby.version>
Which i do not have anywhere in my project.
Are you sure that:
        <asciidoctorj.pdf.version>1.5.0-beta.6</asciidoctorj.pdf.version> 	  <asciidoctorj.version>2.1.0</asciidoctorj.version>
Does not provide JRuby?
In my plugin Depedency Anaylyzer i do not see conflict regarding JRuby in the component i use generating pdf with it.
I think that for example:
  <groupId>org.asciidoctor</groupId>   <artifactId>asciidoctorj-pdf</artifactId>   <version>1.5.0-alpha.15</version>
Contains:
    <dependency>
      <groupId>org.jruby</groupId>
      <artifactId>jruby-complete</artifactId>
      <version><IP_ADDRESS></version>
      <scope>runtime</scope>
    </dependency>

That is JRuby or what?
If i would provide

        <dependency>
            <groupId>org.jruby</groupId>
            <artifactId>jruby-complete</artifactId>
            <version><IP_ADDRESS></version>
        </dependency>

Then i see conflict in my Depedency Analyzer with jruby-complete.
You should discard this depedency to test what i provided here.

Does not provide JRuby?

jruby-complete is provided by the maven plugin as a default, is not part of dependencies of asciidoctorj or asciidoctorj-pdf.
We try to use the latest stable version at the time of release unless some problem is found. So it is mostly always good to replace the provided version by the most recent one. In this case going from <IP_ADDRESS> to <IP_ADDRESS>.

Then i see conflict in my Depedency Analyzer with jruby-complete.

I can't help here, but I assure you it is safe. Also, I recommend to use the latest maven plugin version as shown in the examples. It is a RC, but is perfectly stable.

Please reopen the ticket if the error still occurs with the latest versions of the asciidoctor-maven-plugin, asciidoctorj and asciidoctorj-pdf.


Instructions For Updating Database Lacking

The database provided for downloading is over 1 year old and hundreds of new alleles are available in version 3.28.0. There is no script provided to produce a database folder of files as required by the software, so it'll be hard for end-users to use any version other than 3.24.0 of IMGT-HLA.

I am working on the documentation and the update is coming shortly. Thank you.

This was done in July. See https://github.com/Kingsford-Group/kourami/blob/master/preprocessing.md#2-creating-kourami-hla-panel-and-merged-msas-from-another-version-release-of-imgthla-db-or-a-custom-version


How to increase layout download timeout?

In our corporate environment big downloads are slow to start due to proxy/antivirus. So the largest packages (i.e. Anaconda) constantly fail to download. Is there any workaround? Can timeout be increased?
I am able to download them manually. Is there a way to place downloaded files into approprilare layout folders?

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

ID: 1b2a7f87-7685-2618-9be0-f2286662342f
Version Independent ID: 626a45d3-732a-6992-9f0c-bf06bc87fe1c
Content: Install on low bandwidth or unreliable network environments - Visual Studio
Content Source: docs/install/install-vs-inconsistent-quality-network.md
Product: visual-studio-dev15
GitHub Login: @TerryGLee
Microsoft Alias: tglee

@antonKrouglov Thanks for your inquiry; we'll investigate and report back.

@antonKrouglov Unfortunately, the timeout is not configurable. There is also no method for manually downloading the packages, but you could create an offline layout using our installer to pre-download the packages. This has the same timeout logic as the regular installer, but the layout can be created on a machine without the proxy/antivirus and it can be shared (e.g. on a network share) with all systems for install. Directions for creating and installing from a layout can be seen here.


Merge prTesting_201903171020 branch to master branch

OPS Build status updates of commit a4df661:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details
Dependent Files

split/updateTestRef.md
:white_check_mark:Succeeded

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


ios - linking error

What library should be linked to fix below error?
xcode: 10.3
macos: 10.14.5
I would like to stay with command line and cmake and do not use CocoaPods and open xcode.
In documentation I see  "Integrate without CocoaPods"
https://firebase.google.com/docs/ios/setup#frameworks
This is my cmake:
# Add Firebase libraries to the target using the function from the SDK.
add_subdirectory(${EXTERNAL_DIR}/firebase_cpp_sdk bin/ EXCLUDE_FROM_ALL)

# The core Firebase library (firebase_app) is required to use any Firebase product,
# and it must always be listed last.
target_link_libraries(${PROJECT_NAME}
    firebase_analytics
    firebase_remote_config
    firebase_app)

Error:
Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FIROptions", referenced from:
      objc-class-ref in firebase(app_ios_814e1620d4f88024cea4bade26623a67.o)
  "_OBJC_CLASS_$_FIRConfiguration", referenced from:
      objc-class-ref in firebase(log_ios_dd26aec5b8537064a4c15d38b58b4640.o)
  "_OBJC_CLASS_$_FIRRemoteConfigSettings", referenced from:
      objc-class-ref in firebase_remote_config(remote_config_ios_e6d2ed559f32c182ac8412737f5fb36a.o)
  "_OBJC_CLASS_$_FIRRemoteConfig", referenced from:
      objc-class-ref in firebase_remote_config(remote_config_ios_e6d2ed559f32c182ac8412737f5fb36a.o)
  "_OBJC_CLASS_$_FIRApp", referenced from:
      objc-class-ref in firebase(app_ios_814e1620d4f88024cea4bade26623a67.o)
  "_OBJC_CLASS_$_FIRAnalytics", referenced from:
      objc-class-ref in libfirebase_analytics.a(analytics_ios_d28a0e676a7367b8f2d91944bb505d87.o)
  "_FIRRemoteConfigThrottledEndTimeInSecondsKey", referenced from:
      ____ZN8firebase13remote_config5FetchEy_block_invoke in firebase_remote_config(remote_config_ios_e6d2ed559f32c182ac8412737f5fb36a.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@dantti This is exactly the same issue described in: https://stackoverflow.com/questions/51646982/qt-firebase-c-sdk-linking-issues-on-ios

if your try with CMake gave the same link error then I have no idea of what else to try...

You might miss the native FirebaseIOS libs which the firebase-cpp-sdk wraps. I also had to tell QMake LIBS += -ObjC to make it link the objective C libs properly, otherwise app (or storage?) initialization failed at runtime.

Thanks, I've put the app on hold, as I have another more important ATM, but probably next week I'll try, I didn't know the cpp sdk was a wrap around the Firebase IOS libs, I think this is a bit confusing due "supported" way being using cocoa pods..

Hi @crazyhappygame,
I'm poking around a little at your issue, and just want to ask a few more questions if possible.
It looks like you're following the instructions on https://firebase.google.com/docs/ios/setup#frameworks, but only using the firebase-cpp SDK. The former actually links to this additional zip file to pull down: https://firebase.google.com/download/ios
I will say that, without seeing your entire CMakeLists.txt I may be making incorrect assumptions, so thank you for your patience if I say something totally out of left field.
First, I don't see any -framework calls as mentioned here: https://stackoverflow.com/questions/27585896/how-to-use-framework-using-cmake, although this may just work for system dependencies. The frameworks included in the download link I provided above includes a lot of the native hooks required by Firebase to integrate well with iOS. If you don't wish to use cocoapods, you should pull in the native iOS framework dependencies in whichever way your build pipeline permits.
I'm assuming that the plugins you want are Remote Config and Analytics. If you're following the iOS instructions for not using cocoapods, the Readme.md lists:
## RemoteConfig (~> Analytics)
- FirebaseABTesting.framework
- FirebaseRemoteConfig.framework
- Protobuf.framework

and
## Analytics
- FIRAnalyticsConnector.framework
- FirebaseAnalytics.framework
- FirebaseCore.framework
- FirebaseCoreDiagnostics.framework
- FirebaseInstanceID.framework
- GoogleAppMeasurement.framework
- GoogleDataTransport.framework
- GoogleDataTransportCCTSupport.framework
- GoogleUtilities.framework
- nanopb.framework

as the frameworks you'll need.
Once you have all of those, the C++ SDK should function correctly on iOS. These are a lot of dependencies, which is why cocoapods is so handy in this case.
I'm sure you've found it, but there is a good example project here: https://github.com/firebase/quickstart-cpp/tree/master/remote_config/testapp
It does use CocoaPods to manage the dependencies I listed above, but it might shed some light on how to setup a C++ project on iOS
Let me know if that helps at all,
--Patrick

@patm1987 thank you for explanation. It was really helpful!
Finally I successfully build my project with CMake only.
In deed linker error are because I did not link against libraries from:
https://firebase.google.com/download/ios
@dantti you have additionally download https://firebase.google.com/download/ios and link proper frameworks.
@stewartmiles I think that below section should be updated:
https://github.com/firebase/firebase-cpp-sdk/blob/master/README.md#including-in-projects


Automatically freeze generated AST* and TIR nodes in their constructor functions

*See issue #20 about how AST nodes need to be renamed (for future reference if "AST node" isn't something in the compiler when this issue is addressed).
AST and TIR nodes built by their constructor functions are returned as pointers to mutable objects and are then frozen in the parse and resolve functions, respectively. This was originally done so that there was a clean separation between the creation of nodes and the ownership of nodes. However in practice, the context always ends up owning the nodes, and there is literally never a time when we want to del an AST or TIR node. It is simply easier to freeze everything, even when potential tree-rewrites take place.
Update the signatures of the AST and TIR nodes so that they return pointers to const objects that have been frozen within their constructor functions. Make sure that constructors struct type (or similar objects) are only called after the freezer / interning code from the context is initialized. Rename the constructors for these objects from thing_new to thing_make to reflect that ownership of the returned objects is not managed by the caller.

Looking in resolve_decl_function it seems that there actually is a case when the object returned from a tir_* constructor is modified. The tir_function is initialized with some empty data on creation here and then frozen here, but still has its members populated further down in the function. For starters this is probably a logic error as freezing a value really should happen after all of its data has been populated, but regardless this is a case where the TIR value would not be useful if returned as a pointer to constant. Maybe we could still have the TIR functions perform the freeze, but still return the pointer to mutable?

Closing this issue as there is now more than one instance of a TIR nodes' data being modified after the node has been created.


Added docs for pre-restore-lock and post-restore-unlock

cc: @tinygrasshopper

Thanks @gcapizzi

Hi @gcapizzi and @tinygrasshopper -- I just wanted to let you know that this file has moved to the cloudfoundry/docs-bbr repo https://github.com/cloudfoundry/docs-bbr/blob/master/bbr-devguide.html.md.erb so please make any future PRs on that repo! I'll be deleting this file. Thanks again for the PR.


docs: Add information about gigsboat.json (#14)

Fixes #14

Codecov Report

Merging #18 (af31cfe) into main (75f3271) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head af31cfe differs from pull request most recent head 94ee4e9. Consider uploading reports for the commit 94ee4e9 to get more accurate results

@@           Coverage Diff           @@
##             main      #18   +/-   ##
=======================================
  Coverage   99.35%   99.35%
=======================================
  Files           5        5
  Lines         154      154
  Branches       48       48
=======================================
  Hits          153      153
  Misses          1        1

Continue to review full report at Codecov.

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

Looks great and very comprehensive review of the config file 👌🏼


Set image properties and verify_checksum

Expose Terraform openstack_images_image_v2.properties and openstack_images_image_v2.verify_checksum. Allows the setting of image properties like those described in https://docs.ceph.com/en/latest/rbd/rbd-openstack/#image-properties.

Fixes https://github.com/stackhpc/ansible-collection-azimuth-ops/issues/7

Now obsolete


Add a flag to IAgentSchdeuler.pick() that conveys what the user intent is

The user intent should tell whether the task should be picked no matter what. For example, if client is in "read" mode, we will still go ahead and pick the task by probably changing the client to "write" mode first.
Once this is done, the end-to-end tests in packages\test\end-to-end-tests\src\test\agentScheduler.spec.ts should be updated as per the new API design. Right now these tests first convert the client to "write" mode and then runs the tests.

Moving to January, as people are asking about it. In particular tasks FC needs support here.

I don't think this is needed anymore.  I also suspect that this scenario doesn't need to track the intent within the IAgentScheduler, as the "should switch to write if no write clients connected" characteristic of the task is already known by the read clients prior to switching to write, at least in the scenarios discussed so far.


FLIPKART CLONE

@akshit5565 please refer readme for more details about issues . Clones of existing websites will not be considered as a valid issue.


[PLAT-6165] Bypass KSCrashReport for user-reported errors

Goal
Simplifies the reporting of user-reported (and React Native, Unity) errors by bypassing KSCrashReport storage.
Changeset

-[BugsnagClient notifyInternal:block:] now bypasses KSCrash and sends events directly to BSGEventUploader.
Removed support for user-reported exceptions from KSCrash.
Replaced the "overrides" mechanism used to attach Javascript stacktraces, to be compatible with storage as BugsnagEvent JSON.
Implemented throttling to avoid send queue becoming too big and consuming too much memory.
Updated E2E tests that trigger a crash immediately after calling notify().

Unhandled errors are written immediately to disk, as this is essential for reliably reporting unhandled Javascript exceptions in React Native apps.
Testing

Manually tested with React Native
Manually tested with sample apps
Ran full suite of E2E tests
Ran React Native E2E tests against this branch

Performance
The average time taken for Bugsnag.notifyError() has decreased from 6.5 to 4.9 milliseconds 🎉 (measured on an iPhone SE)

what happens to kscrash-ish notify reports that are already on disk when developers upgrade?

They will be continue to be delivered; -[BugsnagEvent initWithUserData:] has been left untouched and will continue to convert kscrash-ish notify reports for delivery.


Trying to fix Issue 6

I don't know wtf happen, but it seems like clang crashed
Maybe increasing the used core can change that, idk
I try what I can tbh
It may not work, it is completely untested.

hey btw I think this was fixed in a fork here:
https://github.com/Gcenx/macos-crossover-cloud-build
I just never received a pr for it, but it's probably good to have a look at one of the forks, there was a few related discussions, see in #6 comments

This one is also quite advanced:
https://github.com/dasmy/macos-crossover-cloud-build/

This one is also quite advanced:
https://github.com/dasmy/macos-crossover-cloud-build/

Almost everything was fixed there, I mostly just provided comments to correct things as needed so my “fork” can just be ignored completely.

Yup, I went ahead and created a pr for the one from @dasmy <3, added you both as contributors in the readme.
If you're interested in being maintainers with pushing rights to the upstream repo (@Gcenx and @dasmy) let me know here and I'll go ahead, you're the best! 🤘

I guess it wouldn’t hurt, for the moment there’s not much reason to commit anything after the PR you opened is merged until CX21.
Also could close #9

Closing as I just merged #13, but feel free to suggest edits again and thanks for actually sending a contribution as this motivated me to look at the forks and actually update this project :tada:


Add delta_latest_cursor support

I've deliberately omitted include_media_info for now, since it's also missing from #delta

thanks for submitting this! We tend to be a bit picky this example code.  Would you mind breaking up the example from the rest of the PR? It should be easy to merge everything else.

Superseded by https://github.com/dropbox/dropbox-sdk-ruby/pull/38


Bug Config.js layouts exclude not working properly

Bug i changed this particular code and requested to localhost:7000/en/register  but it redirected to localhost:7000/en/login
which file i may find helpful code
layouts: [
{
name: 'primary',
include: [/./],
exclude: [/(/(en|zh))/(login|register)/],
},
],

so in short, your problem is layout or redirect?
for layout, i guess works fine
for redirect, just modify related code login => register


Better Nested Field query handling

Coverage decreased (-0.1%) to 86.97% when pulling 4de836e1301628d1d4c95dc9ae8b3c2cf3994052 on 100-more-anon-struct-issues into 7be3f3bd401d1b2b7e51df3b4c1d9cc2e088725a on master.


[Candidate 1v1 Crazy Beach ZH v1] Map intro mentions "Outdoor Experiences"

Observed behavior
Map intro mentions "Outdoor Experiences". This appears to be some sort of company name.
Expected behavior
Ranked Maps are not associated with registered companies.
Screenshots

Newgate:

Outdoor Experiences was the sponsor for the map. I don't know anything about them, everything came from Domi. I believe it has to stay. I can't remember if I talked about this with Dominator before, but I think that's what he'd say.

Crazy Beach ZH v1 will be moved to back log accordingly.


Xiao Burst infusion in optimizer

As the title suggests, there is no way (or I cannot find a way) to optimize Xiao for damage during his burst uptime. Closest I can get is either:

Plunge damage, but this is considered physical (and there's no infusion option for Anemo)
Elemental Skill damage, obviously this isn't his burst nor plunge so it's not as efficient.

Don't forget the INFO button can answer nearly all questions!
How to ensure Xiao's burst is calculated correctly:
Remember: anything relating to a talent will be handled in the talent section of that character's card.

Activation
Go to Xiao's burst in his card and activate
:ballot_box_with_check: Bane of All Evil

Rebuild
Go back to the builder and set the optimization target to
Whirlwind Thrust: High Plunge DMG


Update Bad Password

I cannot update a bad password for a BIG-IP. Can you add this as a right-click option?  Deleting the BIG-IP did not clear the password from the config either.

Yes.   Had this problem with another person yesterday.  Will get worked out ASAP
Need to add right-click option on host item to clear password, add clear password to delete device function

fixed in v2.3


Is this information being documented elsewhere now?

This page hasn't been updated in months

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

ID: c9b05f9a-54ca-e84c-dea6-b345b643125b
Version Independent ID: c9b05f9a-54ca-e84c-dea6-b345b643125b
Content: Microsoft Edge release notes for Mobile Stable Channel
Content Source: edgeenterprise/microsoft-edge-relnote-mobile-stable-channel.md
Product: microsoft-edge
GitHub Login: @dan-wesley
Microsoft Alias: charlielin

@feeked https://learn.microsoft.com/en-us/deployedge/microsoft-edge-relnote-mobile-stable-channel is the correct location.  The document was just updated today.  Thanks!


Virtual Keyboard not working ROG Ally

Describe the bug
There is currently no way to access the virtual keyboard on KDE Bazzite Ally ISO. i tried enabling it through system settings and nothing shows up.
What did you expect to happen?
i expected to tap on a search icon and have a virtual keyboard pop up but for whatever reason its not working
Output of rpm-ostree status
ROG Ally RC71L_RC71L

Hardware
             Digest: sha256:69c64cdf05aedfdd4bce0c7cb0339030581ccb39d24edf1d78398c0531df8a71
              Version: 39.20240131.0 (2024-02-01T15:23:51Z)
                 Diff: 3 upgraded, 37 added
            Initramfs: '"-I /etc/crypttab /etc/modprobe.d/amdgpu.conf /etc/modprobe.d/deck-blacklist.conf"'

● ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-ally:latest
Digest: sha256:952c0115f4ab83ebddca3f72117e816fbeb38526695ae0d1b67e1d10c792cb93
Version: 39.20240131.0 (2024-02-01T07:35:48Z)
Initramfs: '"-I /etc/crypttab /etc/modprobe.d/amdgpu.conf /etc/modprobe.d/deck-blacklist.conf"'
ostree-image-signed:docker://ghcr.io/ublue-os/bazzite-ally:latest
Digest: sha256:c34c4bc9fee9b00fd57aa5f1e04c5ebf7cb92c0451df0105390704615d72c823
Version: 39.20240130.0 (2024-01-31T05:46:41Z)
Initramfs: '"-I /etc/crypttab /etc/modprobe.d/amdgpu.conf /etc/modprobe.d/deck-blacklist.conf"'
Extra information or context
No response

@KyleGospo Hi Kyle appreciate all the help and support. I tried to read through the documentation.
I just wasn't sure, if I installed bazzite+kde on a Rog ally is it not possible to get steam keyboard?
I guess the question is it possible to use steam keyboard with HHD and bazzite? Apologies still learning the OS and its dependencies/plugins.

The Ally has a hardware limitation that requires you to press Steam and then X, rather than Steam plus X

Thank you! I appreciate the knowledge. Have a great weekend and I'll do just that.

@KyleGospo what hardware limitation are we talking about here?
Any information out there what the actual problem is?
Having worked with uinput before I see no reason why multiple split devices can't just be merged by spawning a helper device.

The Ally has a hardware limitation that requires you to press Steam and then X, rather than Steam plus X.
I would also ensure your desktop binds in Steam have just pressing X as open keyboard.

Which button of ROG ALLY is steam button?


/login not found on a fresh install

After a fresh installation where everything seemed to go fine, I got an "HTTP 404, url /login not found" error when trying to access the BookStack home page.
Bellow are the steps I've used to install BookStack.

cd /var/www/html
git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch
cd BookStack
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'c32408bcd017c577ce80605420e5987ce947a5609e8443dd72cd3867cc3a0cf442e5bf4edddbcbe72246a953a6c48e21') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
php composer.phar install
vi .env # add mysql credentials
php artisan key:generate
php artisan migrate
chcon -R system_u:object_r:httpd_sys_content_t:s0  /var/www/html/BookStack/   # SELinux is enabled on my system
setfacl -R -m u:apache:rwX .

Then I've added this file in the apache conf.d directory:
<VirtualHost *:80>
DocumentRoot "/var/www/html/BookStack/public"
ServerName bookstack.local

Alias /bookstack/ /var/www/html/BookStack/
<Directory /var/www/html/BookStack/>
AddDefaultCharset UTF-8

# Apache 2.4

Require ip <IP_ADDRESS>
Require ip ::1
Require ip X.X.X.X/24

<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from <IP_ADDRESS>
Allow from ::1

I've restarted apache and try to access bookstack.local.
Then I get the 404 http error:  url /login not found.
REM: I use apache 2.4

Is mod_rewrite enabled in apache?

Yes, the following line is my apache config:

LoadModule rewrite_module modules/mod_rewrite.so

Should I add some rewrite rule to make BookStack work?

to use mod_rewrite there should be a AllowOverride All (or at least AllowOverride FileInfo, but I'm not sure here) in your Directory directive

You're right. In my config the AllowOverride property is set to Y. So to not chnage this global directive and as encouraged by the Apache documentation, I've put the rewrite rules under a Directory directive.
But then I got another error related to the rewrite engine rule: "AH00124: Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace"
I keep on searching.

If you are using the above config this is the expected behaviour since the rewrite will run into errors since there is no index.php in laravels root-directory. Maybe the only thing to change is to add the public-folder to your directory directive:
<Directory /var/www/html/BookStack/public/>

I was having similar issues. The problem boiled down to not having www-data ownership in the right places.

Problem solved. It was related to the rewrite rules and the use of a a virtual host to access bookstack.
I had to add a "RewriteBase /" stanza to the apache rewrite rukles.
Here is the apache configuration file which is working for me:
<VirtualHost *:80>
DocumentRoot "/var/www/html/BookStack/public"
ServerName <MyBookstack.com>
# Autres directives ici

<Directory /var/www/html/BookStack/>
AddDefaultCharset UTF-8

# Apache 2.4

Require ip <IP_ADDRESS>
Require ip ::1
Require ip <IP_ADDRESS>/24
Require ip <IP_ADDRESS>/24

<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from <IP_ADDRESS>
Allow from ::1

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

Problem solved. It was related to the rewrite rules and the use of a a virtual host to access bookstack.
I had to add a "RewriteBase /" stanza to the apache rewrite rukles.
Here is the apache configuration file which is working for me:
<VirtualHost *:80>
DocumentRoot "/var/www/html/BookStack/public"
ServerName <MyBookstack.com>
# Autres directives ici

<Directory /var/www/html/BookStack/>
AddDefaultCharset UTF-8

# Apache 2.4

Require ip <IP_ADDRESS>
Require ip ::1
Require ip <IP_ADDRESS>/24
Require ip <IP_ADDRESS>/24

<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from <IP_ADDRESS>
Allow from ::1

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

@julienmmm Awesome 🎆
Happy to hear you found the issue. Sorry I didn't provide much support on this but I wasn't really sure of the issue myself. Thanks @lommes for looking into this.
I will go ahead and close this issue.


dapr tutorial port fix

Thank you for helping make the Radius documentation better!
Please follow this checklist before submitting:

[x] Read the contribution guide
[x] Commands include options for Linux, MacOS, and Windows within codetabs
[x] New file and folder names are globally unique
[x] Page references use shortcodes instead of markdown or URL links
[x] Images use HTML style and have alternative text
[x] Places where multiple code/command options are given have codetabs

In addition, please fill out the following to help reviewers understand this pull request:
Description
add env var to override the default port 80 that the .NET frontend app uses to 8080 instead, since port 80 is problematic for localhost testing.

Auto-generated description

🤖 Generated by Copilot at faaadf2
Summary
🚀🛠📝

Updated the bicep template for the .NET Core web app to use a different port than the Dapr sidecar. This change supports the tutorial-dapr scenario.

appSettings changed
Dapr sidecar needs port five
Autumn tutorial

Walkthrough

Override the default port for .NET Core web app to avoid conflict with Dapr sidecar (link)

Issue reference
Fixes: #916

the additional env variable added is per https://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/web-host?view=aspnetcore-3.1#server-urls-2


Clear deps

In response to https://github.com/metonym/svelte-intersection-observer/issues/14 reduced amount of deps that actually shipped with package,

Hey @nosovk thanks for the PR, I'll take a look today and will merge it 👌😊

@nosovk this is now merged and published to 2.1.1, thanks again :)


Stack Overflow involving mrb_json_generate

Description
We found a stack overflow involving mrb_json_generate. We've attached three pocs that involve json generation in different ways.
poc.zip
Proof of Concept
$ mruby <poc_file>

Stack Trace
Below is the excerpted part that repeats until it crashes.
    ...
    #222 0x558fe0f81f09 in mrb_value_to_string /tmp/mruby-fuzzilli/build/repos/host/mruby-json/src/mrb_json.c:182:15
    #223 0x558fe0f7c5df in mrb_json_generate /tmp/mruby-fuzzilli/build/repos/host/mruby-json/src/mrb_json.c:327:10
    #224 0x558fe0ce9cc4 in mrb_vm_exec /tmp/mruby-fuzzilli/src/vm.c:1809:18
    #225 0x558fe0cd5840 in mrb_vm_run /tmp/mruby-fuzzilli/src/vm.c:1300:12
    #226 0x558fe0ccd4ba in mrb_run /tmp/mruby-fuzzilli/src/vm.c:3116:10
    #227 0x558fe0cca4ab in mrb_funcall_with_block /tmp/mruby-fuzzilli/src/vm.c:695:13
    #228 0x558fe0cc80d2 in mrb_funcall_argv /tmp/mruby-fuzzilli/src/vm.c:706:10
    #229 0x558fe0cc7d60 in mrb_funcall /tmp/mruby-fuzzilli/src/vm.c:499:10
    #230 0x558fe0f81f09 in mrb_value_to_string /tmp/mruby-fuzzilli/build/repos/host/mruby-json/src/mrb_json.c:182:15
    #231 0x558fe0f7c5df in mrb_json_generate /tmp/mruby-fuzzilli/build/repos/host/mruby-json/src/mrb_json.c:327:10
    #232 0x558fe0ce9cc4 in mrb_vm_exec /tmp/mruby-fuzzilli/src/vm.c:1809:18
    ...

Environment
Ubuntu 20.04
Intel(R) Xeon(R) Gold 5218 CPU @ 2.30GHz
Memory: 64 GB
Affected Version
v3.2.0 (commit 595649626)

I think you should report to mruby-json gem first.
I will keep investigating to check if what we can do.

I also checked this issue with the latest commit, and they were rather changed to legitimate argument exceptions. Let me close this issue.


Problem with GPU memory usage

Hi!
I have a problem with GPU memory usage when running:
python inference_video_face.py without any changes
I'm using tensorflow 1.10.0
And currently, it shows 6607 MB of GPU memory usage per single thread

If I limit memory usage with
config.gpu_options.per_process_gpu_memory_fraction = 0.02
it starts to use only 559 MB of GPU memory.

But when running it firstly shows a lot of warnings:
2018-11-12 17:21:11.179219: W tensorflow/core/common_runtime/bfc_allocator.cc:219] Allocator (GPU_0_bfc) ran out of memory trying to allocate 1.02GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
2018-11-12 17:21:11.180674: W tensorflow/core/common_runtime/bfc_allocator.cc:219] Allocator (GPU_0_bfc) ran out of memory trying to allocate 2.05GiB. The caller indicates that this is not a failure, but may mean that there could be performance gains if more memory were available.
...

But runs okay and with the same performance
Do you know what can be a reasons of such memory consumption and how to limit it when running with multiple other models in more production way then just with per_process_gpu_memory_fraction?

@philipshurpik You can just ignore this warning.


wip: update: update readme with more informations

What type of PR is this?

Uncomment one (or more) /kind <> lines:

/kind bug

/kind cleanup

/kind design

/kind documentation

/kind failing-test

/kind feature

Any specific area of the project related to this PR?

Uncomment one (or more) /area <> lines:

/area build

/area driver-kmod

/area driver-ebpf

/area libscap

/area libsinsp

/area tests

/area proposals

What this PR does / why we need it:
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

Thanks @leogr ! Your suggestions look great too!

It would be nice to have this referenced somewhere, or at least the image:

@deepskyblue86 +1 on that! The link is super useful, and the image too!

Updated! WDYT @deepskyblue86 ?

Updated! WDYT @deepskyblue86 ?

:+1: :+1: :+1:

LGTM label has been added.  Git tree hash: 012b890b9feef3ddda59b80752bc4cb706301b8c

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: FedeDP, leogr
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,leogr]

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


Fixed #26342 -- Bug with NodeNotFoundError repr

Ticket #26342
NodeNotFoundError.node is a tuple. Feeding it as a single argument to a formatter attempts to unpack it. We don't want that!

This is probably too miniscule to need mentioning in the changelog or pushing to 1.8 branch yeahs?

Merged in 34c56687ae4df2cff632447eddd7ef255ee74726


MIME type not set with S3 upload

Maybe related to https://github.com/ArunaStorage/DataProxy/issues/30.
If I upload files via S3, no MIME type is set. Even if I explicitly upload/modify the type:
$ s3cmd put -m 'image/jpeg' -r so242_1_83_subset2 s3://biigletest/
$ s3cmd modify -m 'image/jpeg' s3://biigletest/so242_1_83_subset2/20150814_080600_IMG_37001.JPG

it is not set:
$ s3cmd info s3://biigletest/so242_1_83_subset2/20150814_080600_IMG_37001.JPG
s3://biigletest/so242_1_83_subset2/20150814_080600_IMG_37001.JPG (object):
   File size: 641698
   Last mod:  Tue, 27 Feb 2024 09:47:53 GMT
   MIME type: none
   Storage:   STANDARD
   MD5 sum:   01HQMZ6W995TF1S6VGFC5YG96D
   SSE:       none
   Policy:    none
   CORS:      <?xml version="1.0" encoding="UTF-8"?><CORSConfiguration><CORSRule><AllowedHeader>*</AllowedHeader><AllowedMethod>GET</AllowedMethod><AllowedOrigin>https://biigle.de</AllowedOrigin><MaxAgeSeconds>30</MaxAgeSeconds></CORSRule></CORSConfiguration>
   ACL:       none

I noticed this because BIIGLE checks the MIME type before it creates an image collection. This must have worked before (as I have created collections successfully in the past). Maybe I'm doing something wrong?

Sorry for the long, wait this was merged a long time ago. Please go ahead and test it and just let us know if it still does not work.

I finally managed to test this in your dev instance (I wrote an email about my issues with the production instance). The MIME type is correct now :+1:


Add ProjectWorkspaceState to ProjectSnapshotHandle.

ProjectSnapshotHandle initially contained minimal information because ProjectSnapshots had direct access to the Roslyn workspace project they were associated with. Now ProjectWorkspaceStaterepresents the Roslyn information that's needed for a ProjectSnapshot we can include it in the serialized information.
Updated tests to reflect the new ProjectWorkspaceState inclusion in the ProjectSnapshotHandle

Thoughts on this? One implication of adding ProjectWorkspaceState to ProjectSnapshotHandle is that it makes the assumption that ProjectWorkspaceState will continue to be serializable. That being said could always change that later on as well given everything is internal. Wanted to make this change because I found myself needing to re-implement the project snapshot handle in VSCode 😄. WIth this I'd just be able to use what's done in Razor.

Unfortunately this isn't super-good. It means that we're going to serialize the tag helpers to the OOP host for VS so that we can find tag helpers 👎

Good point!


cmd/go: test timeouts without useful debugging output on darwin builders

There are numerous occasional test timeouts on the darwin-amd64-race builder in the logs.
I note that the windows-amd64-race builder sets GO_TEST_TIMEOUT_SCALE=2:
https://github.com/golang/build/blob/916311cec4e1738aae572fe49767cebdc0351144/dashboard/builders.go#L2067
I suspect that we may need to do the same for the darwin-amd64-race builder to reduce flakiness.
CC @andybons
2020-04-27T23:05:16-42c4899/darwin-amd64-race
2020-04-17T04:26:54-29d925d/darwin-amd64-race
2020-04-16T15:31:20-4eaf855/darwin-amd64-race
2020-04-10T18:45:24-37470c0/darwin-amd64-race
2019-10-11T16:34:01-ba108c9/darwin-amd64-race
2019-10-04T21:22:55-5f4aa5d/darwin-amd64-race
2019-09-24T04:19:31-e29d276/darwin-amd64-race
2019-09-16T22:14:49-115e4c9/darwin-amd64-race
2019-09-06T21:22:26-8a8cf5b/darwin-amd64-race
2019-06-29T13:17:15-623d653/darwin-amd64-race
2019-06-28T20:10:05-2e0cd2a/darwin-amd64-race
2019-06-28T20:09:48-91c385b/darwin-amd64-race
2019-06-28T20:00:59-3b040b7/darwin-amd64-race
2019-06-27T20:43:26-f205ae3/darwin-amd64-race
2019-06-26T20:17:35-9acd2d6/darwin-amd64-race
2019-06-26T18:38:59-06f709a/darwin-amd64-race
2019-06-26T16:35:14-60f14fd/darwin-amd64-race
2019-06-26T03:59:57-adf8883/darwin-amd64-race
2019-06-25T21:30:39-343b7fa/darwin-amd64-race
2019-06-25T17:51:25-a6ad626/darwin-amd64-race
2019-06-25T16:43:17-3f83c83/darwin-amd64-race
2019-06-24T21:26:46-5f7e9ce/darwin-amd64-race
2019-06-14T16:46:12-80f8913/darwin-amd64-race
2019-06-13T17:12:09-f83c44e/darwin-amd64-race
2019-06-13T14:14:02-55d31e1/darwin-amd64-race
2019-06-13T03:58:11-418c7d8/darwin-amd64-race
2019-06-12T22:17:38-c0c6cee/darwin-amd64-race
2019-06-12T18:03:46-f44404e/darwin-amd64-race
2019-06-11T17:54:27-9f76566/darwin-amd64-race
2019-06-10T23:23:39-ef84fa0/darwin-amd64-race
2019-06-10T20:32:36-5ce1819/darwin-amd64-race
2019-06-10T16:19:39-8f296f5/darwin-amd64-race
2019-06-05T17:53:53-e9a136d/darwin-amd64-race
2019-06-05T17:25:56-195e753/darwin-amd64-race
2019-06-05T00:53:14-ac921da/darwin-amd64-race
2019-05-24T21:34:53-385b2e0/darwin-amd64-race
2019-05-17T22:32:30-1ab063c/darwin-amd64-race
2019-05-13T17:01:25-db2bf15/darwin-amd64-race
2019-05-09T21:13:46-56c1cf3/darwin-amd64-race
2019-05-09T21:13:23-60f6763/darwin-amd64-race
2019-05-09T21:13:19-fe67ce2/darwin-amd64-race
2019-05-09T15:32:36-b6f59cb/darwin-amd64-race
2019-04-30T18:29:07-888bac1/darwin-amd64-race
2019-04-29T22:35:35-98c5a56/darwin-amd64-race
2019-04-29T04:05:29-d016330/darwin-amd64-race

This seems to be one of the larger sources of dashboard flakes at the moment (CC @golang/osp-team).
2020-08-24T19:20:59-bb99874/darwin-amd64-race
2020-08-22T12:35:47-8acbe4c/darwin-amd64-race
2020-08-20T15:21:34-822dca4/darwin-amd64-race
2020-08-16T14:23:50-d303630/darwin-amd64-race
2020-06-03T22:07:42-429d2c5/darwin-amd64-race
2020-05-09T23:17:17-c9442dc/darwin-amd64-race
2020-05-07T23:22:45-78aa4af/darwin-amd64-race
2020-05-02T20:20:16-2d323f9/darwin-amd64-race
2020-05-01T15:02:30-e3b0e3d/darwin-amd64-race

Looks like it's not just the darwin-amd64-race builder. We might need to rework the timeout logic in the cmd/go tests to get more useful information.
2021-02-19T00:04:56-bb6efb9/darwin-amd64-race
2021-02-18T18:12:04-f3c2208/darwin-amd64-race
2021-01-20T09:06:08-928bda4/darwin-amd64-race
2021-01-07T17:51:29-e60cffa/darwin-amd64-race
2021-01-07T17:49:47-6da2d3b/darwin-amd64-race
2020-12-22T18:36:29-c06a354/darwin-amd64-10_15
2020-12-02T20:17:57-2d0258d/darwin-amd64-race
2020-12-01T21:41:39-7430266/darwin-amd64-race
2020-11-19T19:35:35-add4593/darwin-amd64-10_15
2020-11-12T13:47:13-9ef65ff/darwin-amd64-race
2020-11-07T16:59:55-5e371e0/darwin-amd64-race
2020-10-22T23:00:42-f1aa0b0/darwin-amd64-race
2020-10-19T15:00:02-2a206c7/darwin-amd64-race
2020-10-15T18:26:33-497ea06/darwin-amd64-race
2020-10-13T17:36:36-ad53103/darwin-amd64-race
2020-10-08T08:53:13-542693e/darwin-amd64-race
2020-09-29T16:12:04-39a426d/darwin-amd64-race
2020-09-27T02:23:55-7bb6fed/darwin-amd64-race
2020-09-19T05:13:19-ccf581f/netbsd-386-9_0
2020-09-15T18:48:09-3ab825d/darwin-amd64-race
2020-08-28T16:40:41-ae7b6a3/darwin-amd64-10_15
2020-08-27T21:13:46-2963443/darwin-amd64-race
2020-08-25T14:47:39-02f4452/darwin-amd64-race
2020-08-24T19:20:59-bb99874/darwin-amd64-race
2020-08-22T12:35:47-8acbe4c/darwin-amd64-race
2020-08-20T15:21:34-822dca4/darwin-amd64-race
2020-08-16T14:23:50-d303630/darwin-amd64-race
2020-06-03T22:07:42-429d2c5/darwin-amd64-race

CL 302052 “fixes” this issue in the sense that the timeouts will probably continue to occur, but should produce more useful debugging output when that happens. If it is successful in that regard, we can file a separate issue for whatever failure mode that uncovers.

Still not useful, but we're narrowing in on it, I think.
Looks like we also need to add useful timeouts for (*testgoData).run:
goroutine 117 [syscall, 5 minutes]:
syscall.syscall6(0x10d7940, 0x3e89, 0xc0006a7ad8, 0x0, 0xc000c881b0, 0x0, 0x0, 0x0, 0x0, 0x0)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/runtime/sys_darwin.go:41 +0x2e
syscall.wait4(0x3e89, 0xc0006a7ad8, 0x0, 0xc000c881b0, 0xc000c881b0, 0xc0006a7af8, 0x1050558)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/syscall/zsyscall_darwin_amd64.go:43 +0xa5
syscall.Wait4(0x3e89, 0xc0006a7b40, 0x0, 0xc000c881b0, 0x105026a, 0xc000666170, 0xc0005ae240)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/syscall/syscall_bsd.go:145 +0x66
os.(*Process).wait(0xc0001900f0, 0xc0007e41e0, 0xc0007e4210, 0xc0007e4160)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/os/exec_unix.go:44 +0x159
os.(*Process).Wait(...)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/os/exec.go:129
os/exec.(*Cmd).Wait(0xc0007e4160, 0x0, 0x0)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/os/exec/exec.go:507 +0x105
os/exec.(*Cmd).Run(0xc0007e4160, 0x81, 0xc0006680c0)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/os/exec/exec.go:341 +0x8a
cmd/go_test.(*testgoData).doRun(0xc00050e0b0, 0xc0006680c0, 0x4, 0x4, 0x40, 0xc0006680c0)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/cmd/go/go_test.go:411 +0x518
cmd/go_test.(*testgoData).run(0xc00050e0b0, 0xc0006680c0, 0x4, 0x4)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/cmd/go/go_test.go:427 +0xa6
cmd/go_test.TestCacheCoverage(0xc0004fe480)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/cmd/go/go_test.go:2318 +0x3c5
testing.tRunner(0xc0004fe480, 0x1b01cd0)
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/testing/testing.go:1236 +0x22e
created by testing.(*T).Run
	/var/folders/kh/5zzynz152r94t18yzstnrwx80000gn/T/workdir-host-darwin-10_15/go/src/testing/testing.go:1281 +0x78c

https://build.golang.org/log/ad208dadaa44cdaade5cf4e5d39ab96f78ab183d

https://build.golang.org/log/ebdf7a853ae4dba70c0d76c53f5885501cd54668 has what seems to be a fairly useful trace; it seems to indicate that os.Interrupt is not succeeding in terminating a go subprocess.

Are we going to do anything else here for 1.17?  Thanks.

I'm planning to investigate this further during the freeze.

Could this halting command issue on mac be related? https://github.com/golang/go/issues/38824

I've been seeing similar with .Run() when using GitHub's Actions CI. I've only been able to replicate once on my local macOS but it's very regular to see it timeout on macOS in the CI environment.

It's been a year since the last of these timeouts. I'm calling this “probably fixed”, either by an intervening runtime change or by an intervening update to the race detector.
greplogs -l -e '(?ms)\Adarwin-(?:amd64|arm64)-race.*panic: test timed out' --since=2021-04-27
2021-05-26T22:43:54-1d5298d/darwin-amd64-race


paml_demo.ipynb not working

Hi there, just a quick note I wasn't able to run the paml_demo.ipynb either via the README.md supplied Google Colab link (https://colab.research.google.com/drive/1WPvQ0REjHMEsginxXMj1ewqfFHZqSyM8?usp=sharing ; copied to my own account as well) or on my own local Jupyter install w/ installation (I think) of all the dependencies as described on the https://github.com/Bioprotocols/paml. Is this a known issue?

Sorry about the demo breaking.  We've been simplifying the dependencies and these didn't get updated because the notebooks fell off the GitHub actions for testing.  They have been reinstated as of merge request #103. This includes the demo notebook in notebooks/paml_demo.ipynb.  I've also pinned a new version of the Google Collab version of the live notebook.
We still have an outstanding task to update the README with instructions.  Do you recall what didn't work for you?   The instructions may be out of sync with the cleanups in the dependencies.

Thank you! I was able to get it to work using the most recent Google Colab version, but the for my own local Jupyter install w/ the pip installed dependencies from the git cloned README, a dependency seems to be missing:
ModuleNotFoundError: No module named 'container_api'
I think git submodule update --init --recursive needs to be in the README to pull down that dependency.


Generalize and reorganize social media links #112

This makes the required consolidation of social links to a single file as suggested in #112.
It required removing the use of the templates on the about page.  Hopefully, others aren't depending on it.

It required removing the use of the templates on the about page. Hopefully, others aren't depending on it.

The about.md here is only for demonstration on GitHub Pages. It's not included in the release. The namesake release-version has already been fixed released with Jekyll 3.5.0.

Tested this locally. No major issues.
Just one personal nit:
viewBox is not a valid css property (couldn't find it on caniuse.com)
Also, it'd be great if the README.md documents these new config keys.
Thanks for opening this PR :+1:

viewBox is not a valid css property

Ok, I wouldn't know the reason for it so I can' defend it, but the SVG icons still work now after it's removed. 👍

Also, it'd be great if the README.md documents these

Ok, I've taken a first pass at documenting them in a new section in the README.

Since the link text is goofed up, I'm going to drop Stackoverflow unless there are any objections...

@ashawley, what do you think about changing the format entirely?

Convert social-links into a horizontal "social-bar"

last section of the footer
full width

Drop the names but instead increase the icon-size a bit
The names can be added as the title attribute for the links/icons.

this is in line with minimalism and also will minimally alter the footer height with addition of multiple icons.

As a way to get around the stackoverflow issue?  I guess that could work.
I may not have the design expertise to make it work.
I've rebased and resolved the latest conflicts.
Do you want to fork this branch and give it a try in yet another PR?

I started a discussion for Minima 3.0 to include breaking changes (such as the idea I proposed above)

Do you want to fork this branch and give it a try in yet another PR?

That could lead to messy git history..
IMO, you may continue refining this PR as you see fit.
I'll start fresh.

That could lead to messy git history..

I'm just trying to get people's contributions across the finish line.  I'm happy to clean up git history if that's what keeping this from getting merged.

I'm just trying to get people's contributions across the finish line

You misunderstood me.
This PR is good enough. But I'm starting fresh because I'm introducing structural changes to the footer which may not be approved immediately. Like i said it's targeted  for a future 3.0 version
Hence starting fresh.

Apart from one other place you need to make an edit, this looks okay to me.
/cc @DirtyF Requesting a review from you.. Thanks.

Are there any other corrections?  It seemed like there was a lot of enthusiasm in the original PR for improving the social links in minima.

Hi,
New Jekyll user here. I know Jekyll is quite popular with academics/grad students. Could you also add a Google Scholar link here? Thanks!

I would think adding more social links wold be possible, but the hope (at least mine is) is that this initiative is on it's way to getting merged and then adding other social sites can be taken up later.  The original work on this PR began almost 6 months ago so hopefully improved social links get incorporated.

So the SVG files used to be an include file, but this PR makes it an asset file.  Is there a risk of name collisions with an asset called icons.svg?  Should it be something like assets/minima/social-icons.svg instead?

Is there a risk of name collisions with an asset called icons.svg?

Good call.
There's definitely a risk of collision if the user already has an assets/icons.svg at their source.
But if this PR is going to released as Minima 3.0, then we're covered to a certain extent. Existing sites are locked to ~> 2.0

Requesting a review from you, @benbalter
Thanks

Existing sites are locked to ~> 2.0

Sure, but what about when they upgrade?

An upgrade to the next major version is a conscious decision.
A major version bump in a project that follows semver usually means breaking change. Its on the user to read the changelog or release notes and make an informed decision whether to upgrade.

As it stands,

An icon for Google Scholar was requested. It should be possible, but was deferred to a follow-up PR
The suggestion to make a parameterized map on the include template was considered friendly, but isn't possible at the moment because

of issues with Jekyll and liquid, but also because
the quoting/escaping rules are different for each of the social sites.

It was agreed to work on optimizing the SVG in a follow-up PR
I've just now renamed the icons.svg to minima/social-icons.svg to avoid the risk of colliding with someone who already has an icons.svg file under assets/

I've just now renamed the icons.svg to minima/social-icons.svg to avoid the risk of colliding..

Why not just rename it to minima-social.icons.svg? I don't see the need for a subdirectory with just one file..

I don't see the need for a subdirectory with just one file..

Sure, thought the subdirectory would be a good thing to having going forward.  Happy to rename, though

@ashawley Could you post a screenshot or point to a demo? Thanks.

thought the subdirectory would be a good thing

it would only force users to maintain an assets/minma/ if they need to make a change to our assets.. lets introduce subdirectories when reeaally required for better organisation.. :wink:

@DirtyF Here's a demo http://jekyll-minima-ashawley.s3-website-us-east-1.amazonaws.com/

lets introduce subdirectories when reeaally required for better organisation..

Ok, agreed.  I've removed the subdirectory

@ashawley thanks for setting this up, a quick check shows that we could do better on small screens:

Maybe use display-inlne:block, flexbox or css-grid with @support here to show icons on columns?

Not sure how to do that.  Happy to accept PRs on my fork from you and I'll merge.  Maybe easier to just improve how it looks in a follow-up PR?

Thanks for the Minima theme and Jekyll generally.
The real thanks go to @domingohui for the actual work of making this PR.  I just tried to get it across the finish line.


May we have an mailx in the official container?

Hello,
I´d like to send a mail after in the POST_COMMAND. Could you include a simple mailx inside the container. Something like https://pkgs.alpinelinux.org/package/edge/community/x86/heirloom-mailx?
Thanks

I prefer the microservice approach of having a separate service for notifications. Personally, I am using an apprise-microservice container like this:
services:
  app:
    image: mazzolino/restic:1.1
    environment:
      # ...
      POST_COMMANDS_FAILURE: |-
        curl -X POST --data "{\"title\": \"Backup failed\", \"body\": \"\"}" http://notify:5000
    networks:
      - notification

  notify:
    image: mazzolino/apprise-microservice:0.1
    environment:
      NOTIFICATION_URLS: mailto://...
    networks:
      - notification

networks:
  notification:

If there is interest in this approach, I can add this example to the README.

Interesting approach, I need to check if this fits my usecase.
Some more documentation would be appreciated,
Thanks