Wire up Metal shader precompilation from offline training runs.

Now that https://bugs.chromium.org/p/skia/issues/detail?id=11392 has landed and been rolled in, preparation of Metal pipelines from harvested SKPs can be implemented. This is a tracking bug to make sure lifecycle and threading implications of the attempt at engine launch are reasoned about before enabling this on all renderer launch attempts.

The precompilation of harvested SKSL's has been wired up. Working on testing and benchmarking this in the host harness.

Is this available in master to try now?

will this fix iOS shader jank issue?

will this fix iOS shader jank issue?

See the guide here on how to utilize it: https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
This should let you significantly reduce it.

@acoutts in that page:

If there’s an urgent need for fixing shader compilation jank on newer iPhones, please leave feedback on Issue 61045

However, #61045 has been locked. You can't leave feedback.

@zaidkazi  and that is why this issue exists.
This PR lets to use the warm-up on metal as well.

@alectogeek  ok cool thanks lol that's what I figured sorry back to the original question is this already available in master ? And are any changes required from the initial tutorial?

will this fix iOS shader jank issue?

See the guide here on how to utilize it: https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
This should let you significantly reduce it.

Seems awesome! Do you know, how to use shaders warmup with fastlane (I'm deploying app to appstore according to https://flutter.dev/docs/deployment/cd)?

will this fix iOS shader jank issue?

See the guide here on how to utilize it: https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
This should let you significantly reduce it.

Seems awesome! Do you know, how to use shaders warmup with fastlane (I'm deploying app to appstore according to https://flutter.dev/docs/deployment/cd)?

You just need to add it to your build command, as per that linked guide.

will this fix iOS shader jank issue?

See the guide here on how to utilize it: https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
This should let you significantly reduce it.

Seems awesome! Do you know, how to use shaders warmup with fastlane (I'm deploying app to appstore according to https://flutter.dev/docs/deployment/cd)?

You just need to add it to your build command, as per that linked guide.

I don't use build command. My CI script:
cd ios
pod install
bundle install
bundle exec fastlane beta

and my Fastfile:
default_platform(:ios)

platform :ios do
  desc "Push a new beta build to TestFlight"
  lane :beta do
    increment_build_number(build_number: "$CI_PIPELINE_IID")
    build_app(workspace: "Runner.xcworkspace", scheme: "Runner")
    upload_to_testflight
  end
end

hmm, looked up the documentation for gym, used by fastlane, seems that I can use xcargs parameter for build_app
xcargs | Pass additional arguments to xcodebuild for the build phase. Be sure  to quote the setting names and values e.g. OTHER_LDFLAGS="-ObjC  -lstdc++"

Is it possible to run the app with the pre-compiled shaders and not building it?

Is it possible to run the app with the pre-compiled shaders and not building it?
To test out if the "fix-yank-step" actually works before doing the build command. Not sure if i make sense or this is a silly question.

You need to build an adhoc-signed IPA and drag/drop it in the Xcode devices window onto the device to install it.

Is it possible to run the app with the pre-compiled shaders and not building it?
To test out if the "fix-yank-step" actually works before doing the build command. Not sure if i make sense or this is a silly question.

You need to build an adhoc-signed IPA and drag/drop it in the Xcode devices window onto the device to install it.

Did you try this out, I tried it out and it didn't seem to fix any jank for me

It would not be possible to add a command like: flutter run --with-sksl flutter_01.sksl.json ?

It actually works!
Wihout shader warm up(first run): https://drive.google.com/file/d/1_cHkMleeI-eRhxehq4ikF0Gv3ZE9CTBE/view?usp=sharing
With shader warm up(first run & deleted app & restarted device before installing again) : https://drive.google.com/file/d/1m6a5heZBO_61qpj6Eu8p7QM8RpNOQ6nL/view?usp=sharing

A huge improvement for iOS. Nice job, Flutter team.

What about portability to other devices?
Is it also (the same) effective if you warm up on one iPhone model and run the app on another?

What about portability to other devices?
Is it also (the same) effective if you warm up on one iPhone model and run the app on another?

I think it's so new that we need to do the testing for the community and figure this out.

I can confirm my app also seem yank-free now after doing the pre-compilation step on iOS and uploaded to TestFlight (ad-hoc had an error). Tested on the latest iPhone SE device.

@erf not just less janky, but even jank-free?

So, I can confirm that it works really really well at first sight!
Flutter team, you, guys, rock!
Is it possible to combine a few skls json files from different devices?

@erf I filled https://github.com/flutter/flutter/issues/80840 , which I think should be fairly easy to add. but if someone wanted to take a look at making the suggest change before I get to it i would happily review it.

In wich stable release this will be available??

will this fix iOS shader jank issue?

See the guide here on how to utilize it: https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup
This should let you significantly reduce it.

Hey @acoutts, thanks for answering.
But what I know is that warmup doesn't work well on iPhones running on metal, I've seen some workaround that people turned off metal and starting use openGL back.
On flutter engage event, I was kind annoying asking the flutter team about the jank on iOS all the time. And they said there was no fix at that time yet. (This event was much later this page was created)
also you can see the explanation here:
https://flutter.dev/docs/perf/rendering/shader#limitations-and-considerations
SkSL warm-up doesn’t help newer iPhones using Metal.
Flutter recently migrated from OpenGL to Metal for all newer iOS devices. (Please reference Metal on iOS FAQ on which iOS devices are considered new enough to use Metal.) However, Skia currently only implemented the SkSL warm-up for OpenGL. So the SkSL warm-up would only speed up older iOS devices by default. If you find shader compilation jank to be an issue for your app on newer iPhones, please let us know by filing a GitHub issue. In the longer term, we have a plan to use test-based shader warm-up to mitigate this. If there’s an urgent need for fixing shader compilation jank on newer iPhones, please leave feedback on Issue 61045, and we can help you turn on OpenGL for your app.

@CavalcanteLeo i think what you are refering to is what this issue fixes.. the doc is just not up-to-date

@CavalcanteLeo i think what you are refering to is what this issue fixes.. the doc is just not up-to-date

yep! dunno what is this issue fixing exactly.. hoping is the shader jank

@chinmaygarde awesome work!!!

@chinmaygarde the hero we need, but don't deserve.

I create IPA with iPhone 12 mini shared and run on Ipad pro, work perfectly!

It will be cool if someone can make a video without and with this changes, for presentation

It will be cool if someone can make a video without and with this changes, for presentation

Scroll up: https://github.com/flutter/flutter/issues/79298#issuecomment-823605168

@marcos930807, @kf6gpe will correct me if I'm wrong, but I believe this change missed the train for the April beta, but will likely be in the May beta, and then the stable that follows that beta. (See the details of our release process here.) This change is not a good candidate for a cherry-pick since it is a new feature, it needs more integration testing, and (I suspect) requires rolling Skia further past the current beta than we'd be comfortable with.

Kudos Team Flutter💙💙👏

Really happy to see this. Nice work @chinmaygarde and Flutter team. :)
I know that earlier jank was being described as a multi-faceted issue. Does this solve the bulk of the problem? Should we now expect similar performance to the OpenGL backend?
Also, I'd love to see a technical blog post someday.

@shyndman Wiring this up gives developers a tool to mitigate jank on Metal/iOS when the source of the jank is shader compilation. However, shader precompilation seeded by offline training runs is not an ideal long-term solution because it requires a lot of manual work from developers. We are continuing to investigate more performant and user friendly solutions. See the collection of issues here, which tracks work in this area.
There are potentially other sources of jank, whose causes I won't go into here, that this change won't help with.

Kinda off: I don't have an Android device, can someone provide me with a flutter_01.sksl.json file for Android?

@edgarfroes The sksl file should be recorded playing your animations in your app.

@edgarfroes The sksl file should be recorded playing your animations in your app.

Oh you're right, 'ppreciate it mate.

🍾🍾🍾🍾

I've notice that in case of "add to app" this approach lead to slow flutterviewcontroller appear time.
I compared two cases:

without BUNDLE_SKSL_PATH in build config
with BUNDLE_SKSL_PATH in build config

In 1st case flutterviewcontroller rendered 1st frame much faster, but had animation janks.
In 2nd case fluttervewcontroller rendered first frame slower, but then worked perfect and without animation janks.

@kozhuhar That is expected. The bundled shaders are precompiled at Flutter Engine startup before the first frame. There's still a little left to do to bring this time down a bit, but it is currently unavoidable in this overall approach. This is one of the reasons we're still investigating other approaches as I mentioned in https://github.com/flutter/flutter/issues/79298#issuecomment-824267501.

@zanderso Yes, agree, but why we can't do this when run() called on engine object? Or maybe it will be better to create separate method for this operation. Currently it looks like user should see blank screen for 2 seconds. If we are talking about standalone app written in flutter - it is ok, but when flutter is only the part of the app - it is not.

@kozhuhar Could you file a new issue about this and cc me there? Thanks!

Can confirm this works beautifully on my iPhone12. It is night and day guys, thank you so much for the effort here..
I can actually use the same flow on iOS as I do for Android. Run my flutter driver test suite to perform various actions multiple times in the application, generate the sksl file and build for ios/android with that file..
Like butter!

It works! I tested from driver tests and integration test in Firebase Test lab too. Shader compilation is faster now and Scroll for first time build is smooth.😀👍

Should we do these training runs for each time building a release, even if not much changed, or can we reuse the precompiled shader files? Not sure how "detailed" these procompiled shaders are?

@erf Yes, to be on the safe side, you would re-do the training runs when you want to build for release. This can be automated to some extent. There's some discussion of that here at the bottom of the section titled "How to use SkSL warmup".
As for how much of the functionality of the app to exercise, there are trade-offs involved with that. If you exercise more of the app during the training run, there is less risk of big shader compile janks, but the size of the app and first frame latency will increase.

Which version of Flutter did you use to check this?

Is this available in the latest dev channel release, 2.3.0-0.1.pre?
I looked through the changes and it doesn't appear to be rolled in, but just wanted to confirm.

Which version of Flutter did you use to check this?

master

Did anybody see any effect on page transitions with this? Standard iOS page transition(CupertinoPageRoute) is still janke on the first run, second run is smooth.

Did anybody see any effect on page transitions with this? Standard iOS page transition(CupertinoPageRoute) is still janke on the first run, second run is smooth.

I don't notice yank using material page route on iOS

@erf but you don't use CupertinoPageRoute?

@erf but you don't use CupertinoPageRoute?

No

Is this the right set of commands?
/Users/huvi/fvm/versions/master/bin/flutter run --profile --cache-sksl --purge-persistent-cache
/Users/huvi/fvm/versions/master/bin/flutter build ios --bundle-sksl-path flutter_01.sksl.json
do I have to change something int the project, like FLUTTER_ROOT?
/bin/sh "$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh" build

This is great news! But I cannot get my app to run in profile mode in the iPhone simulators. Is this expected and what version should I be using?
➜  mobile git:(flutter-2) ✗ flutter run --profile --cache-sksl --purge-persistent-cache
Multiple devices found:
iPhone 8 (mobile)                   • 24EAEA96-EE9D-4BD2-A676-5A24CCBBA6A7 • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
iPhone SE (2nd generation) (mobile) • 463F97EF-CDC4-45EA-AA9A-21C654BB684E • ios • com.apple.CoreSimulator.SimRuntime.iOS-14-4 (simulator)
[1]: iPhone 8 (24EAEA96-EE9D-4BD2-A676-5A24CCBBA6A7)
[2]: iPhone SE (2nd generation) (463F97EF-CDC4-45EA-AA9A-21C654BB684E)
Please choose one (To quit, press "q/Q"): 1
Profile mode is not supported by iPhone 8.

I've tried iPhone 8, iPhone SE and iPhone 12 Pro Max.

@jseminck this is expected. Profile and release (?) modes are disabled on simulators.

Ok, thanks for the explanation. Based on this article https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup and the recommendation to run Integration Tests automatically, I thought it would be possible to run this on simulator as a part of the release pipeline.

Alternatively, you can write some integration tests to automate the first three steps using a single command. For example:

@zanderso Do you have any article or maybe wiki page about how to use more than 1 precompiled shaders? For example, I created app with 3 screens. Generated precompiled shader, built app and published it, then in the next version I will add additional 2-3 more screens. And should I generate precompiled shaders only for new screens or should I generate it for new screens and old screens again? Or maybe I can create it for new screens only and then add to old file?
Also while I testing app in profile mode I can tap multiple times M and in this case there will be generated multiples files with shaders. How to use them simultaneously?

is this available in the dev branch or still only on master?

@m-j-g Yes, this is available on the dev branch.

Is there anyway to run this locally?
like flutter run --skal-path flutter_01.sksl.json ?

Is this available in 2.2 on stable? I can't seem to figure out exactly where this is.

It's currently on the dev channel @lukepighetti

Is it possible to run the app with the pre-compiled shaders and not building it?
To test out if the "fix-yank-step" actually works before doing the build command. Not sure if i make sense or this is a silly question.

Yes please use a command like this:
flutter run --profile --bundle-sksl-path flutter_01.sksl.json

I followed the instructions on https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup but when I press M on the command line nothing happen, no file or folder created. Can someone hep me? Thank you.
[✓] Flutter (Channel dev, 2.3.0-16.0.pre, on macOS 11.4 20F71 darwin-x64, locale en-GB)
• Flutter version 2.3.0-16.0.pre at /Users/felix/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision fa5883b78e (9 days ago), 2021-05-21 13:04:03 -0700
• Engine revision 2f067fc4c5
• Dart version 2.14.0 (build 2.14.0-136.0.dev)
[✓] Xcode - develop for iOS and macOS
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.5, Build version 12E262
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

@FelixYew you have to press Shift + m which results in M

I have tested the SKSL Shader on my latest app version and the results are amazing, however, I noticed also that the boot up time of the app to start after the splash screen is significantly longer.
Would that be because of the dev channel?

@MarcoSoares11 The bundled SkSL shaders are precompiled to machine code on first-run when the application starts. This delay will persist even after the feature makes it to the beta and stable channels. You can reduce the delay by bundling fewer shaders. (We understand this is not a great user experience and we are continuing to pursue improvements in this area.)

Dumb question, but how do I have multiple devices in one file if it creates a new file every time I hit shift + M? I  use theflutter run --profile --cache-sksl command  and then press shift + M after I run all the animations on my device. I'd need to stop running the app to run it on another devices, so i'm not quite sure how I handle iPad vs iPhone vs Android phone etc.

The animations are stored as shader code. The code is compiled on startup for your device specific. So in theory you have to do it only on one device because it is not device specific.

@bennibau It says "For best results, capture SkSL shaders on actual Android and iOS devices separately." in the guide and on top of that animations are usually a bit different based on tablet vs phone etc. Is there not a way to combine all the shaders in one file?

@SM2DevLLC I use my personal iPhone to capture the SkSL shaders and it has an incredible performance when I test on Android. For best practices if you have access to both an Android and an iOS device it would be recommended to do the capturing in separate devices as the device is specified in the SkSL file.

@MarcoSoares11 Thanks. Yeah I have been doing both devices, but that's the issue. Each device makes a different file. So iPhone, iPad, Android, etc. Is there a way to combine the files? The other issue is that the landscape iPad view is different, so my assumption would be the shaders are slightly different, so i'd need to have the iPad and iPhone version in one file.

@SM2DevLLC Bundling multiple SkSLs is not yet implemented. Please give a thumbs-up to https://github.com/flutter/flutter/issues/73098 to indicate your interest in that feature.

@zanderso Oh ok. So I can't really do iPad and iPhone since they would need to be in the same file, so i'd need to pick one for now to build for release?

I have the problem that I publish my app via Xcode and how can I attach the sksl file there? If I go via Xcode -> Product -> Archive then I can't set anything else there.

@b3nni97 you don't have to attach the sksl file manually. It is enough to use flutter build ios --bundle-sksl-path your-file-name.sksl.json to build an app and after that, you can archive and publish via xCode

Tried it on my app, it really reduce jank (Not all, there still jank, I know is jank because it dissapear after third open)... but, now my app takes more than 10 secs on the splash screen, and sometime when I restart the phone, it can take more thank 30 sec. Only happens on first app install, and when I restart the phone. On a iPhone 11 Pro Max

Question, when I do the warm process, Do i only need to trigger the animation with jank only one time? or do I need to run it mutiple times until it runs smooth? does it affect at all the size of the .json and app start time?

I'm having a hard time tracking where this is committed.  Is there a version number that has this implemented?  Trying to stay on top of this so that I'm aware when it makes it to beta/stable

Same here, is there a way to know when we can get out of the dev channel while keeping Metal shader caching?

@m-j-g @matehat This will be on beta channel in version 2.3, which I believe should be out soon.

I followed the instructions on https://flutter.dev/docs/perf/rendering/shader#how-to-use-sksl-warmup but when I press M on the command line nothing happen, no file or folder created. Can someone hep me? Thank you.
[✓] Flutter (Channel dev, 2.3.0-16.0.pre, on macOS 11.4 20F71 darwin-x64, locale en-GB)
• Flutter version 2.3.0-16.0.pre at /Users/felix/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision fa5883b (9 days ago), 2021-05-21 13:04:03 -0700
• Engine revision 2f067fc4c5
• Dart version 2.14.0 (build 2.14.0-136.0.dev)
[✓] Xcode - develop for iOS and macOS
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.5, Build version 12E262
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
🔨 https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)

On a Mac, you need to use Shift + m. Yeah who would have thought M means Shift + m? Probably only me.

@m-j-g @matehat This will be on beta channel in version 2.3, which I believe should be out soon.

Is it on stable yet?


Upgrade to yaml v3

Update to yaml.v3, all tests still pass. Closes #118

Good point, for now it's not a metric we are measuring, but it is definately something to consider. Tested the two osv-scanner builds on linux and it seems to differ by about ~200kb, which I think is alright.


Add a tutorial for serving animatediff

Summary

Related issues

Checks

[ ] make lint: I've run make lint to lint the changes in this PR.
[ ] make test: I've made sure the tests (make test-cpu or make test) are passing.
Additional tests:

[ ] Benchmark tests (when contributing new models)
[ ] GPU/HW tests

Needs a version bump to 0.1.4.


Update Kestrel host configuration guidance to include new HostFiltering middleware

In 2.0 we issued a patch and guidance related to host configuration, especially for Kestrel that doesn't have built in support for host filtering.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x#host-filtering
In 2.1 preview2 we've taken that sample and created a new HostFiltering package & middleware. That's been added to WebHost.CreateDefaultBuilder and can be configured by setting "AllowedHosts" to a semicolon separated list like "locahost;example.com". The middleware is disabled by default.
RE: https://github.com/aspnet/MetaPackages/pull/261
Update the Kestrel docs accordingly.

The docs suggest using host filtering only if you are exposing Kestrel to the internet. Presumably, IIS and NGINX have host filtering built into them already.
@Tratcher According to your comment in https://github.com/aspnet/BasicMiddleware/pull/312 ForwardedHeadersOptions also now has an AllowedHosts property.  Also, if you are using ForwardedHeaders, presumably you don't need the host filtering middleware?

Nginx doesn't validate the host by default, nor does IIS, you have to specifically configure that, see our nginx and IIS docs. The host has to be validated somewhere, it's up to you to decide where.
And yes that scenario requires XForwardedHost.

@Tratcher If I use ForwardedHeadersOptions.AllowedHosts, I don't need to use the HostFiltering middleware right?
For IIS, don't use top-level wildcard bindings (http://*:80/ and http://+:80) Source.
For NGINX you have to set server_name  example.com *.example.com; Source.
For anyone else interested, rfc7230 shows why checking the header is important.

Right, ForwardedHeadersOptions.AllowedHosts and the HostFiltering middleware duplicate functionality for slightly different scenarios.


How to uninstall it?

Hi,
I have simple question - how to simply uninstall it all? Scheduled task etc.
Thank you for your time.

Delete the .exe and everything in the folder with it
Delete the configuration folder from %programdata% (or %appdata% for older versions)
Delete the scheduled task from the Windows Task Scheduler
Delete the registry keys under HKLM/Software (or HKCU/Software for older versions)

Then there's nothing left!

Wouter, an idea. When you answer questions like this one. Why not create a
wiki page and refer to that one? It might be interesting for more people.
fre 27 okt. 2017 kl. 22:42 skrev Wouter Tinus<EMAIL_ADDRESS>

Delete the .exe and everything in the folder with it
Delete the configuration folder from %programdata% (or %appdata% for
older versions)
Delete the scheduled task from the Windows Task Scheduler
Delete the registry keys under HKLM/Software (or HKCU/Software for
older versions)

Then there's nothing left!
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Lone-Coder/letsencrypt-win-simple/issues/615#issuecomment-340080137,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAWsAdvRyL6YBwfjhL9YkMTYddjByPKrks5swkAhgaJpZM4QHX7v
.

It's a obviously a good idea to keep the Wiki up to date and add some kind of FAQ based on previous issues. When I get v1.9.7 out of the door I'll take some time to go through the pages and update them.
Anyone is free to help out though :)
This answer has been added a as page:
https://github.com/Lone-Coder/letsencrypt-win-simple/wiki/Uninstall-instructions

Thank You for your answer! 👍


JOSS Review - Yuhan

I only have time to skim over the code and I have a few suggestions:

[x] There's two main ways the code passes arrays as reference into functions: &ArrayBase<impl Data<Elem = F>, Ix> and &Array<F, Ix>. We should use only one way across all functions. I prefer the first way because it also allows ArrayView, so it's more flexible. The same applies to &mut ArrayBase<impl DataMut<Elem = F>, Ix> and &mut Array<F, Ix>.
[x] There are some places where you have an inherent method called train() on model parameters. If you can put that functionality into a linfa::Fit impl, that would be preferred. Doing so allows for a tighter integration with linfa, and you also use Fit in other places in the code.
[x] The function reduced_likelihood in gp/src/algorithms.rs mostly consists of cfg attributes to pick between BLAS and non-BLAS calls. It's cleaner to have two separate versions of the function for BLAS and non-BLAS. That way you only need two cfg attributes.

Thanks for your relevant suggestions, I will try to address them.

For https://github.com/openjournals/joss-reviews/issues/4737

Regarding the first point I remember I was stopped from using &ArrayBase<impl Data<Elem = F>, Ix> everywhere when I started to use trait objects here . And I think it also explains the second point and why I have a train method beside the use of Fit.
I agree with your points but I do not know how to make them work with trait objects or if there is a way to implement the whole thing without trait objects (a mixture of expert has to handle different GP surrogates with fit/predict methods). If you have more detailed suggestions about a possible Rust implementation, I'll be happy to improve this design. PRs are welcome as well.

It makes sense for trait objects to prevent using ArrayBase<impl _> in trait methods, because generic params aren't object-safe. However you can still make the rest of the API generic and just call .view() on the array when passing it into the trait methods. I'm not sure how trait objects prevent using Fit.
The only alternative for trait objects I can think of is to use an enum, but that precludes external impls of Surrogate, which may be a dealbreaker.

Just to clarify, I meant that I cannot use Fit as a trait object hence needing another trait with a train method; otherwise, in #37, I applied your suggestions.

I've noticed you did not tick the third point, it was fixed previously with #34.

Got it


Pulling TBD (Ruby gem)

This branch remained up and running for a few months simply to illustrate how TBD may be pulled in as a Ruby gem. Closing as it has served its purpose.


Ghidra Keeps Freezing up

Describe the bug

Ghidra freezes up no matter where you click. (Only when you click of course, scrolling and so on works)

To Reproduce
Steps to reproduce the behavior:

Do Copy Bytes on an address somewhere -> Ghidra Freezes -> Doesn't respond
Kill Ghidra
Start again
Ghidra now always freezes when clicking into it or gaining focus

Expected behavior

Don't freeze up

Screenshots

N/A

Environment (please complete the following information):

OS: Fedora 39 (! Wayland !)
Java Version: openjdk 17.0.9 2023-10-17
Ghidra Version: 11.0.2
Ghidra Origin: Github Distro

Attachments
jstck.txt

We have seen in the past that the contents of the copy buffer on Linux can have in impact on the performance of Ghidra.    A simple  thing to try is to copy some simple text from a Linux text editor and then try using Ghidra again.


Use transactions for plugin uninstall, activate and deactivate

1. Why is this change necessary?
No more half uninstalled plugins or broken (de-)activations
2. What does this change do, exactly?
 Describe each step to reproduce the issue or behaviour.
Create a plugin that does something to your database in its uninstall routine, and then intentionally crashes.
Your database is now corrupted.
4. Please link to the relevant issues (if any).
5. Which documentation changes (if any) need to be made because of this PR?
As @shyim mentioned this is potentially breaking some plugins that are using transactions. Therefore this has to be mentioned on the plugin page that now all actions are inside an transaction already.
6. Checklist

[ ] I have written tests and verified that they fail without my change
[x] I have squashed any insignificant commits
[x] This change has comments for package types, values, functions, and non-obvious lines of code
[x] I have read the contribution requirements and fulfil them.

It's an BC. Change target to 5.7.
When plugin already uses transaction in those methods it will get then an error, cause already a transaction is running

Hello,
thank you for creating this pull request.
I have opened an issue on our Issue Tracker for you. See the issue link: https://issues.shopware.com/issues/SW-24955
Please use this issue to track the state of your pull request.

Thanks for your Contribution! :blue_heart:


Grid Docs Feedback

Just tried to use the Grid but had trouble understanding that the grid size changing depending on the viewport size.
What would have helped is if this was explained more prominently on the doc.
Maybe even basic diagram of phone, tablet and desktop with number of single blocks supported.

The doc for grid mentions all of this.
I feel like this is an artifact of our text-based documentation not getting the attention it deserves in general. Maybe we should rethink the way our components page prioritizes/emphasizes the docs?
@sgomes @nicolasgarnier WDYT?

Yup, @gauntface was commenting that we should have some text first, explaining the most important grid concepts. The reference is a bit of a wall of text, sadly.
We might want to consider a rework of the docs pages in the future, with an intro followed by demos and then reference. Or perhaps combining demos and intro into a single, customised section.
We may also want to revise some of the text in the reference, as it's very boilerplate-y, and could probably be simplified (or in some cases removed).


Show the contract that an API belongs to

The page that shows details for an API should show which contract it is included in.  This will tell people which NuGet package they need to reference in .NET Core projects in order to use the API.

This issue was moved to Microsoft/dotnet-apiweb#20


Refactor KIAM check to use a more solid test -- move away from Lambdas

Describe the feature you would like and why you want it
The current KIAM check lists Lambdas as a way to test KIAM metadata intercept services. It could be better to test this differently as Lambas do not really represent KIAM functionality.

Should this be querying and checking the metadata service instead? "http://<IP_ADDRESS>"

That could be a viable way to test KIAM functionality... Perhaps just do an http.Get on that URL and check for a token to exist?
However, if KIAM is completely offline, and not restricting calls, then this will appear to pass because a token was found... We need some distinct way to know that KIAM intercepted the request and it worked.  Perhaps we can ask for some way to identify KIAM interception on the kiam probject?


Big Sur compatibility issues

@kc9wwh
As per https://github.com/kc9wwh/FileVaultEnableAdminAccount/issues/6
It fails to work on Big Sur. The above issue has been closed but no changes and hence no fixes have been made. If there is no intention to fix it a comment explaining this would at least indicate that. Otherwise a fix would be appreciated.

By necessity I have been working on this myself and I believe I have identified the major issues.
Obviously the version checking needs modifying I believe that changing lines 143 and 188 from
if [[ "$OS_MAJOR" -ne 10 || "$OS_MINOR" -lt 9 ]]; then
to
if [[ "$OS_MAJOR" -eq 10 && "$OS_MINOR" -lt 9 ]]; then
and changing line 191 to
else
and replacing line 240 with
if [[ ( "$OS_MAJOR" -gt 10 ) || ( "$OS_MAJOR" -eq 10 && "$OS_MINOR" -ge 13 ) ]]; then
and replacing line 274 with
elif [[ ( "$OS_MAJOR" -eq 10 && "$OS_MINOR" -le 12 ) ]]; then
should cover this.
In my own case I had also modified the standard script to read the LAPS password from Jamf for a defined local admin account. This has the password regularly re-randomised and stored as an extension attribute. It turns out that Apple has changed the behaviour of xpath used to process XML and also the number of lines that have to be skipped changes. I therefore for my slightly customised version had to add an if/then so that for Big Sur xpath was handled differently as below.
For Big Sur
localadminPass=$(curl -s -f -u $apiUser:$apiPass -H "Accept: application/xml" $apiURL/JSSResource/computers/udid/$udid/subset/extension_attributes | xpath -e "//extension_attribute[name=$extAttName]" | awk -F'<value>|</value>' '{print $2}' | tail -n +1 )

For older versions
localadminPass=$(curl -s -f -u $apiUser:$apiPass -H "Accept: application/xml" $apiURL/JSSResource/computers/udid/$udid/subset/extension_attributes | xpath  "//extension_attribute[name=$extAttName]" | awk -F'<value>|</value>' '{print $2}' | tail -n +3 )

@jelockwood has this been working well for you?  We to are facing some issues with Big Sur with this and are hoping your workaround might have worked well for you?

@TheRossRoss
I am no longer at the job where I tried this and currently don't have access to a setup to test this again. I also only had limited time to test it at that job.
However I believe the changes did work for me.
I suggest making a test script which does not do anything - by commenting out or removing all the active commands but lets you have the decision logic as per my post to test the OS detection first and then confirm it branches correctly. It might be easiest to duplicate the existing one, scope it to a test Mac, and in this duplicate comment out lines, you could also exclude this test Mac from the live script. This way you can do tests without affecting other Macs.
Then you could try the versions of the localadminpass= which purely reads the existing value from Jamf and see if that works. (Obviously this will involve having some other parts of the script working but leave the bits which write to Jamf or change values on the computer disabled.)
This should help you spot where your problem is.

@TheRossRoss
One more thing that may be relevant.
It turns out there is a bug in Jamf still not fixed. If the Jamf management account has a secure token - which I did use this script to achieve, then Jamf will fail to randomise the password for the Jamf management account using the built-in Jamf function. This would leave all the Jamf management accounts on all the Macs set the to the known temporary password used to give it a secure token, it would also result in repeated errors each time you asked Jamf to re-randomise the password.
If you see this it would be worth reporting to Jamf as the more people who do so the more seriously they will take this bug.
This does not apply to randomising the LAPS password as that is done via a script and not the built-in Jamf command. Hence I was still able to randomise the localadmin passwords on all my Macs.
I give the Jamf management account a secure token because I am under the impression this is necessary so that Jamf can then regularly randomise the FileVault recovery key on each Mac.


Fixed ZF2-100: Use new naming convention for zend config options

FYI.
current head's adapter has "headers key(ZF1 strtolower --> ZF2 ucrfirst-uchrfirst)" bug
http://framework.zend.com/issues/browse/ZF2-99
Socket Adapter's fix is
https://gist.github.com/1358388
If you run test tests/Zend/Http/Client/Adapter/*, "headers key" bug will block tests .
(I would pull-request for ZF2-99 fix later )

Closing -- intiilapa's comments hit the nail on the head. We're removing underscore prefixes for non-public variables and method names, but encouraging underscore separators for config options.

Well in that case library/Zend/Http/Client.php is broken, as it removes all underscores in config.
public function setConfig($config = array())
{
    if ($config instanceof Config) {
        $config = $config->toArray();

    } elseif (!is_array($config)) {
        throw new Exception\InvalidArgumentException('Config parameter is not valid');
    }

    /** Config Key Normalization */
    foreach ($config as $k => $v) {
        $this->config[str_replace(array('-', '_', ' ', '.'), '', strtolower($k))] = $v; // replace w/ normalized
    }

    // Pass configuration options to the adapter if it exists
    if ($this->adapter instanceof Client\Adapter) {
        $this->adapter->setConfig($config);
    }

    return $this;
}

Well, if you gonna go for the support of both conventions then Proxy class needs to be changed to accomodate that. At the moment it's broken and will not proxy requests properly. Do you reckon it should check for both proxy_host and proxyhost options then?

I think an Adapter abstract should do the normalization in all cases. However, this is broken, so I think temporarily accepting the pull request above would be fine.
I came here after an hour debugging Mink+Goutte, which uses the entire ZF2 in order to function for some unclear reason.


Problems with numbers shown for grades when hovering over %

This math doesn't add up -- this should be a 14.8/15 instead of 14/17, Scorecard is converting the grade to an integer and using the maximum value when its should be using the grade scale (see below for actual grade in Frontline)

This should be a relatively easy fix, when I first made it I couldn't remember which value it was supposed to use for maximum and never looked into it.

Displaying as an integer will be fixed when the extension is updated, but displaying the wrong maximum should already be fixed on the website.


Add :placeholder option for datepicker dropdown

The datepicker dropdown can look a little bare when it's not initialized with a model.

This PR adds an optional :placeholder option (for just the dropdown version) that's displayed when no date is selected.

Thanks for your PR :-)
Merged.
Note: We updated the placeholder color to be consistent with input-text placeholders.


"Error switching active page" in connection settings window (v7.0.3)

Note: this seems related to #8406
System information:

Microsoft Windows 10 Pro (10.0.18363 N/A Build 18363)
DBeaver 7.0.3
No additional extensions

Connection specification:

Sybase 15.7
jConnect 16.0 SP03 PL02 (Build 27403)
Do you use tunnels or proxies (SSH, SOCKS, etc)? No

Describe the problem you're observing:

Steps to reproduce, if exist:

On the Database Navigator: right-click the database connection > Edit Connection
On the left, select away from "Connection settings" to any other section.

Include any warning/errors/backtraces from the logs
No errors on the Error Log view nor in the log files

Thank you for the bug report.
P.S. Steps

Open Sybase connection settings
Click any vertical tab
Click connection settings tab

Closing as I have been unable to reproduce this bug after upgrading to 7.1.0.


Where query if JSON name have dashes

Laravel Version: 5.3.22
PHP Version: 7.0.8
Database Driver & Version: MySQL 5.7

Description:
If the name fields in a JSON field have dash in it, for example
{"cache-size": 5}

then Eloquent can't find it:
dd(PanelField::where('value->cache-size', 5)->get());

Collection {#421 ▼
  #items: []
}

According to the MySql documentation:

Names of keys must be double-quoted strings or valid ECMAScript identifiers (see http://www.ecma-international.org/ecma-262/5.1/#sec-7.6)

But if I try that:
dd(PanelField::where('value->"cache-size"', 5)->get());

Eloquent generates an incorrect query:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cache-size"" = ?' at line 1 (SQL: select * from `panel_fields` where `value`->"$."cache-size"" = 5)

As far as I understand, the reason is:
MySqlGrammar
MySqlGrammar
If I swap around the single and double quotes, it seems to work:
 -       return $field.'->'.'"$.'.implode('.', $path).'"';
 +       return $field.'->'."'$.".implode('.', $path)."'";

Cheers, Sebi

Thank you for reporting this, a PR was opened to fix the issue: https://github.com/laravel/framework/pull/16308


Voting and ToDoList Samples are Invalid:  Templates apiVersion has been changed but didn't reflect the schema differences

While trying to deploy the the templates from the samples located in here and here gives the following error:
Deployment failed. Correlation ID: fdc0de05-48b8-41de-918e-2cda0a0a0723. {
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "BadRequestWithReason",
        "message": "Request is invalid. Reason 'votingapp-linux.votingdata': Endpoint 'votingdata-listener' not referenced in networkRefs..",
        "details": []
      }
    ]
  }
}

Looking to the template file is possible to note that the apiVersion has changed but the template still uses the schema from previous version.
Networks are defined like this:
"resources": [
    {
      "apiVersion": "2018-09-01-preview",
      "name": "votingapp-network-linux",
      "type": "Microsoft.ServiceFabricMesh/networks",
      "location": "[parameters('location')]",
      "dependsOn": [],
      "properties": {
        "description": "Voting app for Linux network",
        "addressPrefix": "<IP_ADDRESS>/22",
        "ingressConfig": {
          "layer4": [
            {
              "name": "votingweb-ingress",
              "publicPort": "80",
              "applicationName": "votingapp-linux",
              "serviceName": "votingweb",
              "endpointName": "votingweb-listener"
            }
          ]
        }
      }
    },

Where the correct should be like this:
"resources": [
    {
      "apiVersion": "2018-09-01-preview",
      "name": "counterNetwork",
      "type": "Microsoft.ServiceFabricMesh/networks",
      "location": "[parameters('location')]",
      "dependsOn": [],
      "properties": {
        "kind": "Local",
        "description": "Azure Service Fabric Mesh Counter Application network.",
        "networkAddressPrefix": "<IP_ADDRESS>/24"
      }
    },

Application defines Network dependencies like this:
"networkRefs": [
{
  "name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'votingapp-network-linux')]"
}

Where the schema should be defined like this:
"networkRefs": [
{
  "name": "[resourceId('Microsoft.ServiceFabricMesh/networks', 'counterNetwork')]",
  "endpointRefs": [
	{
	  "name": "counterServiceListener"
	}
  ]
}

The templates also miss the gateway to provide access to the app.

Thanks for reporting. This is now fixed.


RefID garbled

Thanks so much for this project! I know it's early days but I found something odd:
Chrony says:
holger>chronyc tracking
Reference ID    : C0A864C8 (bifrost.applied-asynchrony.com)

The exporter says:
holger>curl -s http://localhost:9123/metrics | grep refid
chrony_tracking_info{tracking_address="<IP_ADDRESS>",tracking_refid="À¨dÈ"} 1

Running the prebuilt 0.2.0 on x64 against chrony 4.2.

Yea, odd. This seems to be a bug in the upstream library. Something is wrong with the RefidToString() function.

Ok, so it looks like the refid is a simple fix by using fmt.Sprintf("%X", ...). But in order to print the "name", we need to implement Chrony's name formatting:
format_name(char *buf, int size, int trunc_dns, int ref, uint32_t ref_id,
            int source, IPAddr *ip_addr)
{
  if (ref) {
    snprintf(buf, size, "%s", UTI_RefidToString(ref_id));
  } else if (source && source_names) {
    if (!get_source_name(ip_addr, buf, size))
      snprintf(buf, size, "?");
  } else if (no_dns || csv_mode) {
    snprintf(buf, size, "%s", UTI_IPToString(ip_addr));
  } else {
    DNS_IPAddress2Name(ip_addr, buf, size);
    if (trunc_dns > 0 && strlen(buf) > trunc_dns) {
      buf[trunc_dns - 1] = '>';
      buf[trunc_dns] = '\0';
    }
  }
}

Better than before, but I'm not sure about the multiple host names:
holger>curl -s http://localhost:9123/metrics | grep refid
chrony_tracking_info{tracking_address="<IP_ADDRESS>",tracking_name="bifrost.applied-asynchrony.com.,bifrost",tracking_refid="C0A864C8"} 1

It seems to resolve all names..?

Yes, Go net.LookupAddr() returns a list of resolved names. Chrony seems to use the obsolete gethostbyaddr() method.
I guess we could do something like only expose the first match returned by net.LookupAddr().

The host is one of the few well-defined machines I have in /etc/hosts, and as expected it had both FQDN and short name in there (which has always worked as expected).
If you can easily use only the first name when multiple names are returned that would be great. Also not sure why it insists on adding the terminating dot, but whatever. With only the FQDN in hosts it looks right:
holger>curl -s http://localhost:9123/metrics | grep refid
chrony_tracking_info{tracking_address="<IP_ADDRESS>",tracking_name="bifrost.applied-asynchrony.com.",tracking_refid="C0A864C8"} 1

I think the real win here was that the refid is now correct, so good job ;-)

The trailing dot is to specify the result is an FQDN. I guess I need to look at the Go resolver docs more closely.


chore: install newrelic

Task
N/A
More Details
This PR installs New Relic (env configuration coming next). Also removed an unused healthcheck.sh file - we use the endpoint on kubernetes.
Comments
Default config from the docs + changed the logfile folder to the user's home folder (we're running as the node user, as we should, so the lib does not have write access to the app root folder).
@menegat00 we'll need to set the following env vars on the deploys:
NEW_RELIC_APP_NAME=mjml-server (Stage) or NEW_RELIC_APP_NAME=mjml-server (Prod) (according to which env it's running on)
NEW_RELIC_LICENSE_KEY (from the GCP Secret)

I thought removing minify was in another PR, can you double check if you didn't carry a commit from another branch?

I thought removing minify was in another PR, can you double check if you didn't carry a commit from another branch?

It was! GH is doing weird things, might be because of this being a fork? Not quite sure


Remove adapter internal

Type

[x] Refactor

Description
Remove usage of adapter from internal code.
Related

Related Issue https://github.com/Effect-TS/effect/pull/3041

Note that there are still 1861 functions in spec files with function*($).

Thanks! If you could add a patch changeset for this, as it touches implementation code.

If you rebase against the latest main branch we can get this merged :)


HOS Clothing Tweak

About the PR
Tweaked HOS' coat, hat, beret, cloak
Media

[X] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Breaking changes

Changelog
:cl:Alekshhh

tweak: Changed some HOS clothing

newer coat

based on our significance guidelines, i've opted to remove your changelog.

works for me


Composer autoload PSR-4 issue

Getting this message while composer update in laravel
Class PhpSquad\DomainMaker\Console\MigrateCommand located in C:/wamp64/www/laravel-app/vendor/phpsquad/domain-maker/src\Console\DomainMigrateCommand.php does not comply with psr-4 autoloading standard. Skipping.

HI, thanks for the heads up. The problem was that class name was incorrect. I pushed renamed the class and it should be working correctly now. Just run composer update  "phpsquad/domain-maker" and that should do it.


React perf tools

This upgrades React to latest and adds a performance recording button when in development mode to dump out stats.
http://i.imgur.com/TzHPd1G.gif

Coverage decreased (-0.5%) to 37.05% when pulling<PHONE_NUMBER>00d4f4738a52cd8a03dd37c7c0ebdb on jsantell:react-perf into c60042d7d976b027fba0393a433f2ce00cbd09e1 on mozilla:master.

lgtm

Coverage decreased (-0.6%) to 37.04% when pulling 483badc2631987e3c0de8304867b58bd98894d80 on jsantell:react-perf into 6576fb1b6cec6317a33b45ba54853b7d9287974e on mozilla:master.

Coverage decreased (-0.6%) to 37.04% when pulling c3c4cb5e2dbb580c538daa964cf6a136e63507a2 on jsantell:react-perf into 6576fb1b6cec6317a33b45ba54853b7d9287974e on mozilla:master.


Bundles can be loaded from node_modules

Bundles can be installed like so node install-bundle.js Vindexus/ranvier-final-strike

I definitely like this idea but I want to take some time to think about it. The reason is that right now, without this change, a bundle dir can have a package.json which is good, keeps the main package.json clean. But with this change it opens up the idea of having a ranvier bundle depend on another ranvier bundle inside its package.json, AKA meta-bundles. I'm not sure if this code would support that since it seems to only be looking at the first level inside node_modules/.
Also just as a pedantic note the command should probably be called something besides install-bundle given that there is already a bundle-install. Perhaps like npm itself there is just one bundle-install command and if you don't pass it any args it just does what it does now but if you do pass it a bundle to install it'll install it.

I'm not sure if this code would support that since it seems to only be looking at the first level inside node_modules

You're right I don't think it would, you'd need to install every dependency of the bundle you're installing.
Maybe the setup-bundles.js file could be extended to look for dependencies of any bundles you've installed with npm and add those to ranvier.json.
There's definitely some things to consider. I think if maybe we got some requirements written down I could work out a solution.

My "requirements" would be: Easy to install, easy to remove, easy to fork
There are 3 ways one could possibly install a bundle

Just copy the files over. Pros: easy install/removal, easy fork (just copy the folder). Cons: Hard to receive updates to the bundle if there is a bugfix/feature
Git submodule. Pros: Easy to receive updates from upstream. Cons: Hard to edit locally, hard to manage
Node module. Pros: Easy to receive updates from upstream, easy install/removal. Cons: Impossible to edit locally without forking the original repo and making npm know about your version (either by publishing or by also distributing the other repo with your project)

At the moment the cons of node modules outweigh the pros in my opinion. I think for the time being if people want the easy upstream benefit from using a node module they can just use a git submodule in the bundles directory. Thoughts?


Table Editor widget: swapping columns and rows

Follow up of #10293
AgGrid supports swapping column, but this is meant to be just for representation: the way of receiving swapping event and reorder columns in the code should be researched.
There is also something for row dragging.

Refinement:

rowDragLeave - for row dragging
columns: needs some research.


Patch WiFi on the fly when doing a fresh install with macOS Sonoma

For those users who don’t want to mess up their WiFi card patch and do not want to prepare the OCLP app before installing macOS Sonoma, there is a solution for this
Link: https://github.com/AppleOSX/PatchSonomaWiFiOnTheFly
I cannot create the PRs because I don’t know which section to put them (guide) in

Interesting. Thanks for sharing. I will place it somewhere OCLP Wintel Section on the weekend


Facing issue in converting ngx-admin into library

Hi,
I want to convert ngx-admin into library and then use it into my project. I tried to do this with ng-packagr but at the time of build its throwing error in index.js of nebular saying cannot read the file or file not present. Please help me on this. I used this link and followed the steps
https://medium.com/@ngl817/building-an-angular-4-component-library-with-the-angular-cli-and-ng-packagr-53b2ade0701e

Same issues. I want to customise and use it another angular project. Guid me

You could fix this by copying<EMAIL_ADDRESS>and rename it to _index.scss
(bloody workaround)


Include Infinispan configuration docs

I realized that the wrong import is in place

@geoand I also changed the main title that skipped my eyes


fix: adding a selectlist based solution switcher

With AEM branding changes now the switcher needs to be updated as the unified shell this is an
implementation for the same. The new switcher looks like the switcher used in https://experience.adobe.com/experiencemanager

Description

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have read the CONTRIBUTING document.

@Pareesh @icaraps please review


Add support for starred label

This PR adds support for starring messages that match a filter.
Thanks so much for writing this library! I just consolidated so many of my filter rules into a nice tidy config file 😄

Codecov Report

Merging #18 into master will increase coverage by 0.63%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master      #18      +/-   ##
==========================================
+ Coverage   15.41%   16.04%   +0.63%
==========================================
  Files           4        4
  Lines         266      268       +2
==========================================
+ Hits           41       43       +2
  Misses        221      221
  Partials        4        4

Impacted Files
Coverage Δ

filter.go
27.33% <100.00%> (+1.06%)
:arrow_up:

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 acfbce1...8b9e1de. Read the comment docs.


add tol kwarg for sc creation

resolves #296

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

4 of 4 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 80.059%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1634

Relevant Lines:
2041

💛  - Coveralls

@shyuep this is ready for review

Thanks!


Scene sets the pixel scale of its Styles

The Scene 'owns' its Styles, so when setting a pixel scale for the Scene, it should be applied to Styles in the Scene too.
This fixes a previous inconsistency: the correct pixel scale was set on the Scene in Map::Impl::setScene, but the Styles in the Scene would still have their default pixel scale.
This solves the same problem as https://github.com/tangrams/tangram-es/pull/1252, but I think this refactoring could spare us from similar problems in the future.

Cool, this is more robust of a fix. 👍


Can you cache a POST request with files

I have some requests to make to a french API (addresses' recognition) which use the POST method.
I'm surelly missing something but I don't think I'm caching those requests :
import requests_cache
from requests import Request
s = requests_cache.CachedSession(allowable_methods=('GET', 'POST'))
url_api = "https://api-adresse.data.gouv.fr/search/csv/"
files=[
    ("data", "cities_init\n02000 LAON\n59800 LILLE"),
    ("result_columns", (None, "cities_init")),
    ("result_columns", (None, "result_score")),
    ("result_columns", (None, "result_city")),
    ("result_columns", (None, "result_citycode")),
]
s.post(url_api, files=files)
print(s.cache.urls())
print(s.cache.contains(request=Request("POST", url_api, files=files)))

Yes, caching POST requests with files is supported. You can see this is you run the request a second time, using the from_cache attribute:
r = s.post(url_api, files=files)
print(r.from_cache)

However, it looks like the contains() method does not currently work with POSTing files. I believe this is because requests-cache needs to set a custom form boundary; otherwise, requests will randomly generate one, so subsequent request bodies will not match when looking for it in the cache.
This is something that CachedSession.post() does, but CachedSession.cache.contains() does not. Example form boundary set by requests-cache:
Content-Type: multipart/form-data; boundary=##requests-cache-form-boundary##

Example form boundary set by requests:
Content-Type: multipart/form-data; boundary=662cd222f12646585fe665e8dacd180f

I'll get that fixed.

This has been fixed in v1.1.


docs(google-maps/map-directions-renderer): remove readonly property type

Setting directionsResults$ property as readonly didn't allow to make the assignation
43    this.directionsResults$ = mapDirectionsService.route(request).pipe(map(response => response.result));

BREAKING CHANGE: directionsResults$ is not now a readonly property.

A couple of notes:

Docs changes aren't breaking changes.
I don't think that this is actually an issue. TS allows for readonly properties to be assigned in a constructor. See this example.

A couple of notes:

Docs changes aren't breaking changes.
I don't think that this is actually an issue. TS allows for readonly properties to be assigned in a constructor. See this example.

Hi! Thanks for your review! I have a question about your notes:
Is there any place where I can read about commit comments rules? I have included "BREAKING CHANGE" because I saw the required syntax in the failed Pipeline step ci/circleci: lint:

About your second note: thanks again, I love to learn new things on TS. I was doing the assignation outside of constructor, that's why my code failed.

Closing since the example is valid, but changing the code in your case to be outside the constructor required removing the readonly.


make data human readable

for example the uptime. what is that? seconds?

Fairphone 2
Installed from F-Droid

First value is the total number of seconds the system has been up & the second value is how much of that time the machine has spent idle.
Most of this data is directly read from proc file system, I think it does make sense to make it human readable.


Generating configuration scheme during startup is expensive

What happened?
We should try to find a way to generate configuration schemes at compile-time, because scanning and processing settings classes using reflections is pretty expensive and affects our minimal requirements.
Reposilite version
3.x
Relevant log output
No response

Example schemes to generate (JSON scheme):

Authentication

{
  "$schema" : "http://json-schema.org/draft-07/schema#",
  "type" : "object",
  "properties" : {
    "ldap" : {
      "type" : "object",
      "properties" : {
        "enabled" : {
          "type" : "boolean",
          "title" : "Enabled",
          "description" : "LDAP Authenticator is enabled"
        },
        "hostname" : {
          "type" : "string",
          "title" : "Hostname",
          "description" : "LDAP server address"
        },
        "port" : {
          "type" : "integer",
          "format" : "int32",
          "title" : "Port",
          "description" : "LDAP server port"
        },
        "baseDn" : {
          "type" : "string",
          "title" : "Base DN",
          "description" : "Base DN with users"
        },
        "searchUserDn" : {
          "type" : "string",
          "title" : "Search-User DN",
          "description" : "User used to perform searches in LDAP server (requires permissions to read all LDAP entries)"
        },
        "searchUserPassword" : {
          "type" : "string",
          "title" : "Search-User Password",
          "description" : "Search user's password"
        },
        "userAttribute" : {
          "type" : "string",
          "title" : "User Attribute",
          "description" : "Attribute in LDAP that represents unique username used to create access token"
        },
        "userFilter" : {
          "type" : "string",
          "title" : "User Filter",
          "description" : "LDAP user filter"
        },
        "userType" : {
          "type" : "string",
          "enum" : [ "PERSISTENT", "TEMPORARY" ],
          "title" : "User Type",
          "description" : "Should the created through LDAP access token be TEMPORARY or PERSISTENT"
        }
      },
      "title" : "LDAP",
      "description" : "LDAP Authenticator settings",
      "additionalProperties" : false
    }
  },
  "title" : "Authentication",
  "description" : "Authenticator settings",
  "additionalProperties" : false
}

Frontend

{
  "$schema" : "http://json-schema.org/draft-07/schema#",
  "type" : "object",
  "properties" : {
    "id" : {
      "type" : "string",
      "title" : "Id",
      "description" : "Repository id used in Maven repository configuration"
    },
    "title" : {
      "type" : "string",
      "title" : "Title",
      "description" : "The title displayed on the frontend homepage."
    },
    "description" : {
      "type" : "string",
      "title" : "Description",
      "description" : "The description displayed on the frontend homepage."
    },
    "organizationWebsite" : {
      "type" : "string",
      "title" : "Organisation Website",
      "description" : "Link to organization's website."
    },
    "organizationLogo" : {
      "type" : "string",
      "title" : "Organisation Logo",
      "description" : "Link to organization's logo."
    },
    "icpLicense" : {
      "type" : "string",
      "title" : "ICP License",
      "description" : "Web services in China require ICP license, a permit issued by the Chinese government to permit China-based websites to operate in China.\nIn order to fulfill the conditions, you should apply for ICP license from your service provider and fill in this parameter."
    }
  },
  "title" : "Frontend",
  "description" : "Frontend settings",
  "additionalProperties" : false
}

Maven

{
  "$schema" : "http://json-schema.org/draft-07/schema#",
  "type" : "object",
  "properties" : {
    "repositories" : {
      "title" : "Repositories",
      "description" : "List of Maven repositories.",
      "type" : "array",
      "items" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "title" : "Id",
            "description" : "The id of this repository."
          },
          "visibility" : {
            "type" : "string",
            "enum" : [ "PUBLIC", "HIDDEN", "PRIVATE" ],
            "title" : "Visibility",
            "description" : "The visibility of this repository."
          },
          "redeployment" : {
            "type" : "boolean",
            "title" : "Redeployment",
            "description" : "Does this repository accept redeployment of the same artifact version."
          },
          "preserveSnapshots" : {
            "type" : "boolean",
            "title" : "Preserved snapshots",
            "description" : "By default Reposilite deletes all deprecated build files. If you'd like to preserve them, set this property to true."
          },
          "storageProvider" : {
            "oneOf" : [ {
              "type" : "object",
              "properties" : {
                "type" : {
                  "type" : "string",
                  "const" : "fs"
                },
                "quota" : {
                  "type" : "string",
                  "title" : "Quota",
                  "description" : "Control the maximum amount of data stored in this repository. Supported formats: 90%, 500MB, 10GB (optional, by default: unlimited)"
                },
                "mount" : {
                  "type" : "string",
                  "title" : "Mount",
                  "description" : "Use custom directory to locate the repository data (optional, by default it's './repositories/{name}')"
                }
              },
              "title" : "File system Storage Provider",
              "description" : "Local file system (disk) storage provider settings",
              "additionalProperties" : false
            }, {
              "type" : "object",
              "properties" : {
                "type" : {
                  "type" : "string",
                  "const" : "s3"
                },
                "bucketName" : {
                  "type" : "string",
                  "title" : "Bucket",
                  "description" : "The selected AWS bucket"
                },
                "endpoint" : {
                  "type" : "string",
                  "title" : "Endpoint",
                  "description" : "Overwrite the AWS endpoint (optional)"
                },
                "accessKey" : {
                  "type" : "string",
                  "title" : "Access Key",
                  "description" : "Overwrite AWS access-key used to authenticate (optional)"
                },
                "secretKey" : {
                  "type" : "string",
                  "title" : "Secret Key",
                  "description" : "Overwrite AWS secret-key used to authenticate (optional)"
                },
                "region" : {
                  "type" : "string",
                  "title" : "Region",
                  "description" : "Overwrite AWS region (optional)"
                }
              },
              "title" : "S3 Storage Provider",
              "description" : "Amazon S3 storage provider settings",
              "additionalProperties" : false
            } ],
            "title" : "Storage provider",
            "description" : "The storage type of this repository."
          },
          "proxied" : {
            "title" : "Mirrored repositories",
            "description" : "List of mirrored repositories associated with this repository.",
            "type" : "array",
            "items" : {
              "type" : "object",
              "properties" : {
                "reference" : {
                  "type" : "string",
                  "title" : "Link",
                  "description" : "Either the id of other local repository or the URL of a remote repository."
                },
                "store" : {
                  "type" : "boolean",
                  "title" : "Store",
                  "description" : "Reposilite can store proxied artifacts locally to reduce response time and improve stability."
                },
                "allowedGroups" : {
                  "title" : "Allowed Groups",
                  "description" : "Allowed artifact groups. If none are given, all artifacts can be obtained from this proxy.",
                  "type" : "array",
                  "items" : {
                    "type" : "string",
                    "title" : "Allowed Groups",
                    "description" : "Allowed artifact groups. If none are given, all artifacts can be obtained from this proxy."
                  }
                },
                "connectTimeout" : {
                  "type" : "integer",
                  "format" : "int32",
                  "title" : "Connect Timeout",
                  "description" : "How long Reposilite can wait for establishing the connection with a remote host."
                },
                "readTimeout" : {
                  "type" : "integer",
                  "format" : "int32",
                  "title" : "Read Timeout",
                  "description" : "How long Reposilite can read data from remote proxy."
                },
                "authorization" : {
                  "type" : [ "object", "null" ],
                  "properties" : {
                    "login" : {
                      "type" : "string",
                      "title" : "Login",
                      "description" : "Login to use by proxied HTTP client"
                    },
                    "password" : {
                      "type" : "string",
                      "title" : "Password",
                      "description" : "Raw password used by proxied HTTP client to connect to the given repository"
                    }
                  },
                  "title" : "Proxied credentials",
                  "description" : "The authorization credentials used to access proxied repository.",
                  "additionalProperties" : false
                },
                "httpProxy" : {
                  "type" : "string",
                  "title" : "HTTP Proxy",
                  "description" : "Custom proxy configuration for HTTP/SOCKS client used by Reposilite. Examples:
\nHTTP <IP_ADDRESS>:1081
\nSOCKS <IP_ADDRESS>:1080 login password "
                }
              },
              "title" : "Mirrored Maven Repository",
              "description" : "Configuration of proxied host",
              "additionalProperties" : false
            }
          }
        },
        "title" : "Maven Repository",
        "description" : "Settings for a given repository.",
        "additionalProperties" : false
      }
    }
  },
  "title" : "Maven",
  "description" : "Repositories settings",
  "additionalProperties" : false
}

Statistics

{
  "$schema" : "http://json-schema.org/draft-07/schema#",
  "type" : "object",
  "properties" : {
    "resolvedRequestsInterval" : {
      "type" : "string",
      "enum" : [ "DAILY", "WEEKLY", "MONTHLY", "YEARLY" ],
      "title" : "Resolved Requests Interval",
      "description" : "How often Reposilite should divide recorded requests into separated groups.\nWith higher precision you can get more detailed timestamps, but it'll increase database size.\nIt's not that important for small repos with low traffic, but public instances should not use daily interval."
    }
  },
  "title" : "Statistics",
  "description" : "Statistics module configuration.",
  "additionalProperties" : false
}

Web

{
  "$schema" : "http://json-schema.org/draft-07/schema#",
  "type" : "object",
  "properties" : {
    "forwardedIp" : {
      "type" : "string",
      "title" : "Forwarded IP",
      "description" : "Any kind of proxy services change real ip.\nThe origin ip should be available in one of the headers.
\nNginx: X-Forwarded-For
\nCloudflare: CF-Connecting-IP
\nPopular: X-Real-IP"
    }
  },
  "title" : "Web",
  "description" : "General web settings",
  "additionalProperties" : false
}

It should be possible to migrate to annotation processor based schema generator having those features supported by openapi plugin:

https://github.com/javalin/javalin-openapi/issues/70
https://github.com/javalin/javalin-openapi/issues/75
https://github.com/javalin/javalin-openapi/issues/76

#1137


Tree visualization using treemacs

This would be useful as an exploration tool, and a visual aid in building queries for other features.
See https://github.com/Alexander-Miller/treemacs/blob/master/Extensions.org.

help wanted

Sure, what do you need?
I also suggest waiting for https://github.com/Alexander-Miller/treemacs/issues/677 to complete, I'm just about to produce a first working prototype "soon". In fact you are welcome to join the discussion in that ticket, so far all my user input has exclusively come from the lsp gang.

help wanted

Sure, what do you need?

I didn't have time to start exploring this, so the label kind of means "unexplored".

I also suggest waiting for Alexander-Miller/treemacs#677 to complete, I'm just about to produce a first working prototype "soon". In fact you are welcome to join the discussion in that ticket, so far all my user input has exclusively come from the lsp gang.

Cool! I'll check it out.


autocomplete not working

using the old and not anymore maintained autocomplete version, I have no problem
when I tried to switch to the new version I'm getting this error pressing TAB at any time
$ vagrant -bash: readarray: command not found
-bash: readarray: command not found

any suggestions? (I'm using OSX)
thanks

I'm also getting nothing from this URL (using curl command)
https://raw.github.com/brbsix/vagrant-bash-completion/master/vagrant-bash-completion/etc/bash_completion.d/vagrant

Maybe it is better changing for this URL
https://raw.githubusercontent.com/brbsix/vagrant-bash-completion/master/vagrant-bash-completion/etc/bash_completion.d/vagrant

The readarray (also known as mapfile) command is available only in Bash 4, and MacOS ships with Bash 3. Probably the correct solution is to rewrite the code to use a different method of reading the lines into an array.
It would also be good to have a test framework that runs this under Bash 3. I do this with dot-home; have a look at the -3 option to its Test script to see how I handle this. (I download and build the MacOS sed as well because I use that too, but that's not necessary here.)

well done @0cjs !! it was the bash version, thanks !!
now it is working fine the autocomplete
PS.: for OSX users who want to update bash version:

brew install bash
Terminal > Preferences > General > Shells open with

/usr/local/Cellar/bash/4.4.19/bin/bash (take the version from brew output installation)


7/15 PM Publish

Docs Build status updates of commit 83feeb1:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

.openpublishing.redirection.json
:white_check_mark:Succeeded

docfx.json
:white_check_mark:Succeeded

docs-conceptual/azps-8.1.0/index.yml
:white_check_mark:Succeeded
View (azps-8.1.0)

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


Support conditional requests

Spotify API provides headers for client-side caching. Use them. Documentation link.

Now that request senders are defined, for example ionrock/cachecontrol can be used for caching requests should the user want to do so. Reimplementing the caching algorithms is unnecessary additional work and depending on CacheControl is also unnecessary, since subclassing Sender to wrap any caching is easy enough. Some remarks on this should be included in the documentation.


Drop Pandas 1

I expect the answer here to be "whoa, not so fast" but I thought I'd bring it up for discussion.
If we're spending non-trivial time supporting both then I think it's ok for us to do a bit of a clean break, especially if ...

this accelerates development
we don't see evidence that users are uncomfortable upgrading

Nothing for us to do right now, but I think that this is probably a valuable thought to have in the back of our minds.

I think it might make sense increasing the minimum version, even if we don't drop everything 1.x related. The changes in pandas 2.0 caused quite some logic in Dask that isn't very nice.

We have a bit of tech debt to cleanup before we can declare we completely support pandas 2.0. You'll see several functions decorated with @numeric_only_not_implemented in the codebase. Thanks to @phofl , not many, but still a few.
After that, perhaps we could regularly and gradually bump the minimal supported version.


overriding with early returns

Looking to see people's preference for implementing the scenario where a base.Implementation exits early (and thus anything deriving from it should also). Quite a common scenario. Two solutions come to mind with different pros/cons which should be readily visible.
solution 1:
Subclass : BaseClass
{
    protected override bool UpdateState(State state)
    {
        if (!base.UpdateState(state)) return; //required in every override

        //do stuff
    }
}

BaseClass
{
    protected virtual bool UpdateState(State state)
    {
        if (state == this.state)
            return; //early exit
    }
}

solution 2:
Subclass : BaseClass
{
    protected override void OnUpdateState(State state)
    {
        //do stuff
    }
}

BaseClass
{
    protected void UpdateState(State state)
    {
        if (state == this.state)
            return; //early exit

        OnUpdateState(state);
    }
}

2 seems like it would result in less code written in the long run. Would a better solution be to provide an interface to expose that state to the caller of UpdateState? Damned if we do, damned if we don't here.

I prefer 2 as it's less susceptible to programmer error.

See decision in https://github.com/ppy/osu-framework/issues/22.


Task arguments ignored when quotes inside argument

Issue Type: Bug
The arguments of my task command are merely ignored whenever there are quotes inside them.
Steps to reproduce

Create an executable script that shows the number of arguments that are passed to it.
I called it show_args.sh

#!/bin/bash
echo Nb args: $#
echo $@

Define some task in tasks.json

        {
            "label": "VS Code bug repro",
            "type": "shell",
            "command": [
                "/d/show_args.sh hello \"world\""
            ],
            "problemMatcher": []
        }

Run the task

See the output

> Executing task: /d/show_args.sh hello "world" <

Nb args: 0

Even the hello argument is ignored.
Remove the quotes around world and the script will work:
> Executing task: /d/show_args.sh hello world <

Nb args: 2
hello world

This bug makes the task feature unusable when quotes are required
VS Code version: Code - Insiders 1.28.0-insider (fe8d9d2470ddffb9dc2da604b23f5bd8a185cd66, 2018-09-25T05:31:33.193Z)
OS version: Windows_NT x64 10.0.15063

@sguillia which shell (bash) are you using? WSL?

I am able to reproduce this using the following setup:
tasks.json
{
	"version": "2.0.0",
	"tasks": [
    	{
			"label": "VS Code bug repro",
			"type": "shell",
			"options": {
				"shell": {
					"executable": "C:\\Program Files\\Git\\bin\\bash.exe",
					"args": [
						"-c"
					]
				}
			},
			"command": [
				"./show_args.sh hello \"world\""
			],
			"problemMatcher": []
		}
	]
}

./show_args.sh
#!/bin/bash
echo Nb args: $#
echo $@

Using ' around world works as expected.
@Tyriar here is the shell launch config I use to start the terminal:

Any advice you can give to make this work for " as quotes. In general the data looks good to me.

@alexr00 recently made a change in this area and might have an idea what's going on with this case.

Possible candidate, marking with September.


Added Translator Cog (Issue #243)

Added translator to ClemBot
Usage:
!translate <input language> <output language> <text to translate>
!translate <output language> <text to translate>

Im tired gonna just merge this and hope for the best :rofl:

Im tired gonna just merge this and hope for the best :rofl:


feat(ci): revise backend routing

Description
Now this is how you route a backend!
Changelog
Changed

Route backend traffic through frontend caddy as FRONTEND_URL/apithrough frontend/api

How was this tested?

[x] 🧠 Not needed
[ ] 👀 Eyeball
[ ] 🤖 Added tests

What gif/image best describes this PR or how it makes you feel?

Thanks for the PR!
Deployments, as required, will be available below:

Frontend
Backend
Oracle-API

Please create PRs in draft mode.  Mark as ready to enable:

Analysis Workflow

After merge, new images are deployed in:

Merge Workflow

Closing to free up resources.  Will reopen in a bit.


Added support for OAuth authorization using Google provider

https://newm-app-pip-wlara-oaut-0qayfe.herokuapp.com/
Added the environment variables to the pipeline


Fix depreciation warnings, bump Travis version to 1.30.0

Gonna let this sit for a couple of weeks as it just removes a depreciation message, and thus isn't worth bumping rust versions up just yet.

Just FYI in https://github.com/librespot-org/librespot/pull/293/commits/7a03a2ce999fddb6005fb8f7a77c1165936078ef I had to re-implement some functions which are now in the standard library (since 1.26) to support 1.23

@willstott101 you can lose those functions now, we bumped to 1.26.0 a couple of days ago

Rust 1.34.0 released, merging this.


Make BoxFuture and LocalBoxFuture a concrete type with #[must_use]

Currently BoxFuture is type alias for Pin<Box<...>>, so it can not have #[must_wait]. That leads to accidental mistakes, when user does not call await/poll on result of function that returns BoxFuture. We had multiple problems with that
Some notes on PR:

I understand that for some projects this might be breaking change - if someone have hardcoded Pin<Box<...>> as a type of variable returned by .boxed, they would have to change it BoxedFuture once this diff lands, but I believe this is reasonable trade off.

I am not sure what to do with Debug implementation for BoxFuture - ok to just suppress warning for this type?

I don't fully understand what UnsafeFutureObj is, I mostly copied implementation from Pin<Box<...>>, but please take a look at it carefully to make sure I did not miss something.

This seems like a big limitation in the #[must_use] for traits support, that should somehow be inherited through Box, I left a comment on the implementing issue.

Note that this is Pin<Box<..>>, not just Box<...>

So my feeling that https://github.com/rust-lang/rust/pull/62262 could take a while (and might not even happen, some people voice concerns about propagating must_use through structs).
What are your thoughts on merging this diff to solve the problem of unused boxed futures? I think pretty much all other future wrappers (AndThen, etc) already are concrete types, is there reason not to convert BoxFuture?

@Nemo157 what do you think? Would it make sense to merge this?

I'm on the fence with this, it makes sense if we're not going to have must_use working on the alias soon, but it is definitely going to be annoying dealing with a concrete type in some places.
I think one thing that would help is to add
impl<'a, T: Future + 'a> BoxFuture<'a, T> {
    pub fn pin(x: T) -> Self {
        Self::new(Box::pin(x))
    }
}

that way code that is currently
Box::pin(async move { ... })

can transition to
BoxFuture::pin(async { ... })

(using .boxed() along with async { ... } results in some pretty bad formatting).
@cramertj you've probably got a better idea how badly moving this to a concrete type would affect large codebases.

I'm unsure about this. It does seem unfortunate that #[must_use] doesn't propagate correctly, but once we have that fixed (and I'm assuming we will fix it at some point), we would want to shift it back to a type alias. It's easy to imagine breaking existing uses of this type by shifting it back into a type alias-- there are some things we could do to try and make the APIs intercompatible like using BoxFuture::pin rather than BoxFuture::new etc., but I'm feeling pretty uneasy about it.

@cramertj for my education - why type alias is more preferred then concrete type, e.g. why would we want to shift back to alias?
As far as I understand, there is no allocation/performance overhead for having concrete types like this

Primarily that it's a simpler mental model for users-- it's more transparent, and easy to see that it's "just" a boxed trait object rather than something special.

Even if this PR is merged, considering that must_use does not work with Pin<&mut impl Future>, I think that the advantage of merging this PR is small (but thanks for finding this issue @andll).

I agree with @taiki-e. I'm going to go ahead and close this PR-- I don't think this is something we want to do.Thanks for the PR, though-- I appreciate you calling attention to this.


Explore CBT

Due to https://github.com/scala-native/sbt-crossproject/issues/47 there might be a valid reason to explore using CBT (especially since CBT is going to be released as stable soon).
@jvican I just remembered, is this going to be an issue for the sbt-platform if we decide to use CBT instead of SBT?

Yes, it's a problem because the Scala Platform infrastructure only supports sbt, and that includes all the MiMa checks, et cetera.

Personal use case is https://github.com/mdedetrich/scalajson, and I would like to support scala-js 0.6.18 and the new scala-js 1.0.0x (and also in general for scala-native various releases)

Can't you do this by creating different modules that share most of the source code from a project? It's a pretty advanced use case, but I think sbt can support it. Obviously, the sbt cross platform plugin cannot, but that doesn't meant that sbt can't either.

From what I understand it's not really possible to do in SBT because you are loading different versions of the same sbt plugin. (I can be wrong in this regard though). The documentation on Scale.js website implies that this isn't really possible because you have to use environment variables to alter the behaviour of the sbt-plugins outside of any.
Is there a sample project that demonstrates this is possible somewhere?

Also I disagree with this being an advanced use case, similarly to how crossScalaVersions, if a new release of scala-js/scala-native is made they should be able to release their library with that new version without having to bump the version of their own library.
You could argue that you can just replace the previous version, but then you don't have reproducible builds anymore.


Update _getExperiment.mdx

🚀 Deployed on https://66391ee8240d76196de97d18--cozy-fox-0defec.netlify.app


Innovator's Toolkit R1

Value: $9,000.00Closes: Thursday, February 8, 2018Location: Victoria Some in-person work requiredOpportunity DescriptionAs the Government of British Columbia increases delivery of digital services, there is a need to help all stakeholders understand what “digital” means.   At the same time, there is a subset of stakeholders that will need to know what tools, techniques, and methodologies are recommended for their use to design and build digital services.  The website described by the GitHub repositories in the next paragraph is a first iteration, a prototype, of a “Digital Guide” for the Government of British Columbia.
Beginning a journey towards a “BC Digital Guide,” this site is the first step.  Modelled after 18F in the U.S. and UK Government Digital Service, the government reference in this repository, supported by the guides found through this repository  is organized like this (from the FAQ):  “You’ll find three layers to the toolkit: (i) a front page describing basic steps and principles, (ii), a set of high level guides that further define those steps and principles, and (iii) detailed guides providing a deeper level of information and instruction with those responsible for designing and delivering simple, streamlined, modern services.”
This iteration intends to build out content, to fill in the blanks, as it were, to take the collection of guides to a first official release.  Most of this work is focused on updating the detailed guides, adding new guides, and providing links to other good related government references.
Phase 1
Propose a methodology or mechanism to facilitate contribution from anyone across government
Propose a method of measuring, collecting, and analysing visitor behaviour so that the content, navigation, and overall service can be improved.
Implement both of these methods.
Phase 2
Fix navigation so that it works as expected, forward and back.
Provide a Search function on the home page so that content on that page is easier to find.
Correct feedback and email links to proper endpoints (to be provided.)
Include new and updated content (to be provided.)
Include a section for “Corporate Enablers”, and a one-page description of what each is, and how to consume them (content to be provided).
Include an expanded collection of links for DataBC (links to be provided).Acceptance Criteria
Work with our Agile/Scrum team (4000 Seymour Place in Victoria, BC):

The DigitalToolkit team works in 1-week sprints. You will attend in-person planning (2 hours) and review (3 hours) meetings for each sprint.
You will track your work with the team on our DigitalToolkit Trello board

Completion of Phase 1  $4,000
Completion of Phase 2  $5,000
How to ApplyGo to the Opportunity Page, click the Apply button above and submit your proposal by 16:00 PST on Thursday, February 8, 2018.We plan to assign this opportunity by Saturday, February 10, 2018 with work to start on Wednesday, February 14, 2018.Proposal Evaluation Criteria
Your confirmation of being able to commit the time to meet all of the Acceptance Criteria by Wednesday, February 7, 2018.
A short (200 words or less) summary of your experience working with agile projects (40 points).
References to your relevant experience and demonstrated ability to do the work (60 points). For example, a link to your GitHub projects

For questions and clarification, please contact Jim Rabb at<EMAIL_ADDRESS>.

Friendly reminder, that this opportunity closes in a little over three hours.  Please submit your proposals prior to close.  Thanks for your interest.

This opportunity has been assigned

Thank you for your interest, and the time invested in the proposals.  This opportunity is awarded to jonathanbell - we're looking forward to Go!

Thank you all for the opportunity: @RobertGoesByJim @jackieredmond


Run the tests with different install modes

The e2e tests are only run with own namespace mode. Look into running the same tests with single namespace and all namespace modes.

Duplicate of https://github.com/WASdev/websphere-liberty-operator/issues/365. Closing


Can no longer change the admin password with manage.py

I have no name!@b333b832f780:/app$ python3 manage.py changepassword
Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/local/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "/usr/local/lib/python3.5/site-packages/django/core/management/__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/local/lib/python3.5/site-packages/django/core/management/base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/usr/local/lib/python3.5/site-packages/django/core/management/base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "/usr/local/lib/python3.5/site-packages/django/contrib/auth/management/commands/changepassword.py", line 38, in handle
    username = getpass.getuser()
  File "/usr/local/lib/python3.5/getpass.py", line 169, in getuser
    return pwd.getpwuid(os.getuid())[0]
KeyError: 'getpwuid(): uid not found: 1001'

I think this is due to the permission of /app  directory is set to root. If you open this container as root by specifying -u root then it will run. Same problem happening on uploading image normal user cannot make a directory in this folder that's why it gives permission error for creating image folder.

I've been doing this for every PR reviewed. A user parameter has to be specified as so
python3 manage.py changepassword [username]
Maybe this is a new change since Django 2?


Mention the need to install concurrently when following the Getting started page

Following the Getting started page, and when I get to yarn dev I'm faced with concurrently command not found. Is probably worth adding it on the page somewhere that it is a prereq to have before running yarn dev

I'm also finding that I need other pacakges before I can run yarn dev
> yarn dev
yarn run v1.22.18
$ concurrently "yarn start" "yarn start-backend"
$ yarn workspace app start
$ yarn workspace backend start
$ backstage-cli package start
[1] /bin/sh: backstage-cli: command not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
$ backstage-cli package start
error Command failed.
[1] Exit code: 127
[1] Command: /Users/chburns/.nvm/versions/node/v16.15.1/bin/node
[1] Arguments: /Users/chburns/.nvm/versions/node/v16.15.1/lib/node_modules/yarn/lib/cli.js start
[1] Directory: /Users/chburns/projects/create/backstage/create/packages/backend
[1] Output:
[1]
info Visit https://yarnpkg.com/en/docs/cli/workspace for documentation about this command.
[0] /bin/sh: backstage-cli: command not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[1] yarn start-backend exited with code 127
error Command failed.
[0] Exit code: 127
[0] Command: /Users/chburns/.nvm/versions/node/v16.15.1/bin/node
[0] Arguments: /Users/chburns/.nvm/versions/node/v16.15.1/lib/node_modules/yarn/lib/cli.js start
[0] Directory: /Users/chburns/projects/create/backstage/create/packages/app
[0] Output:
[0]
info Visit https://yarnpkg.com/en/docs/cli/workspace for documentation about this command.
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[0] yarn start exited with code 127
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

Ignore me. When I scroll up, it says that I didn't have yarn installed and failed when running yarn install. Forgive me.


Add a build process under Windows

Would it be possible to add support for Windows?
I am not sure how to go about this but am willing to help.

Note: It seems that building the mongo-c-driver should build the libbson dlls too, maybe that would be a simpler path since the goal is really to get Mongo.jl working on Windows.

Hi, yes it would be nice to have support for Windows.  If you have patches to make it work I would be happy to merge them in!

I tried looking at BinDeps but am still not sure exactly what is required to get the compilation to work on Windows, could you point me to some references?

To be honest I haven't explored the Windows side of things at all -- I'm on OS X myself.  I would start by exploring the code in some of the other Julia packages that already work on Windows that are using external libraries, the source is available to all of them!

Hi, I have manually installed C-driver (with libbson dll) on my Windows machine but how can I use it with the package?

Go in the deps.jl file and manually enter the DLL location.

Thanks. I have added deps file with the following content for libBSON and Mongo but Julia can't load the library.
libBSON deps:
# This is an auto-generated file; do not edit
# Pre-hooks
# Macro to load a library
macro checked_lib(libname, path)
    ((VERSION >= v"0.4.0-dev+3844" ? Base.Libdl.dlopen_e : Base.dlopen_e)(path) == C_NULL) && error("Unable to load \n\n$libname ($path)\n\nPlease re-run Pkg.build(package), and restart Julia.")
    quote const $(esc(libname)) = $path end
end
# Load dependencies
@checked_lib libbson "C:\\Julia\\v0.6\\LibBSON\\mongo-c-driver\\bin\\libbson-1.0.dll"
# Load-hooks

Mongo deps:
# This is an auto-generated file; do not edit
# Pre-hooks
# Macro to load a library
macro checked_lib(libname, path)
    ((VERSION >= v"0.4.0-dev+3844" ? Base.Libdl.dlopen_e : Base.dlopen_e)(path) == C_NULL) && error("Unable to load \n\n$libname ($path)\n\nPlease re-run Pkg.build(package), and restart Julia.")
    quote const $(esc(libname)) = $path end
end
# Load dependencies
@checked_lib libmongoc "C:\\Julia\\v0.6\\Mongo\\mongo-c-driver\\bin\\libmongoc-1.0.dll"
# Load-hooks

julia> using Mongo, libBSON
ERROR: LoadError: LoadError: Unable to load
libmongoc (C:\Julia\v0.6\Mongo\mongo-c-driver\bin\libmongoc-1.0.dll)
Please re-run Pkg.build(package), and restart Julia.

@jebej Have you successfully used this package in Windows?

I have. What did you compile the DLLs with? Did the tests pass? You might be missing a Windows runtime DLL.
What I would try would be to copy the test executables in your mongo-c-driver\bin and executing them from there to see if they work. This will tell you if you are missing DLLs. If you are missing DLLs, copy them in that folder.
Once that's done, if it still doesn't work, you can add that bin folder to the Windows PATH.
Make sure you restart the shell your are using after changing the path and try again. This is what I get: (i.e. no errors)
julia> Base.Libdl.dlopen("libmongoc-1.0.dll")
Ptr{Void} @0x000007fef5790000

@jebej thanks a lot for support!
I have recompiled the last version of mongo-c driver following the guide
http://mongoc.org/libmongoc/current/installing.html#building-on-windows
and I have added the bin folder to the Windows PATH and now everything works!