Are there any plans to provide quantized versions of the Multi-class selfie segmentation model?

MediaPipe Solution (you are using)
v0.10.3
Programming language
typescript/python
Are you willing to contribute it
Yes
Describe the feature and the current behaviour/state
Currently, the Multi-class selfie segmentation model runs relatively slowly on an Android phone compared to a similarly-speced iPhone. I am comparing it using the flagships of the last two years. On the iPhones, the model runs fine in real-time.

However, the delay on Android prevents it from providing a nice and smooth real-time feed with the Multi-class selfie segmentation model.

By adding float16 quantized version, the inference speed improvement on Android phones would allow for smooth real-time inference.

Will this change the current API? How?
No

Who will benefit with this feature?
Anyone using the Multi-class selfie segmentation model, on any platform, not just Android
Please specify the use cases for this feature
I want to apply real-time effects using the result of the Multi-class selfie segmentation model.

Any Other info
No response

Hello @lu-wang-g, @schmidt-sebastian,
Could you please look into this feature request. Thank you

I got the same problem, too. Android is running much slower.

Any update on this??
Or is the multiclass selfie segmentation available in any other Tensorflow model format other than tflite?


Saprk Fuzzer Test is blocking

Description
https://github.com/facebookincubator/velox/actions/runs/10569348755/job/29283216551?pr=10799

@assignUser  could you please take a look ?
Error Reproduction
No response
Relevant logs
No response

Duplicate of #10789

It seems to be an intermittent issue that is not/hard to repro locally so there is not much we can do for now, please check the tagged issue.


*: Improve the performance of the region tree

What have you changed? (required)
Our region tree is a B-tree, and we use the iterate to achieve the region-tree update and find. This PR mainly improve the B-tree iterate function, it will use the binary search to find the start item in the tree, reduces the time complexity from O(n) to O(log n) when positioning the start item. Therefore, reduced the consumption of cpu by comparing the region key.

What are the type of the changes (required)?

Improvement (non-breaking change which is an improvement to an existing feature)
)

How has this PR been tested (required)?

unit test
munaul test
Benchmark result if necessary (optional)
before:
go test -bench="BenchmarkRegionTreeUpdate" -count 4 -run=none -benchtime=3s
goos: linux
goarch: amd64
pkg: github.com/pingcap/pd/server/core
BenchmarkRegionTreeUpdate-4 1000000 5361 ns/op
BenchmarkRegionTreeUpdate-4 1000000 5282 ns/op
BenchmarkRegionTreeUpdate-4 1000000 5387 ns/op
BenchmarkRegionTreeUpdate-4 1000000 5448 ns/op

(pprof) top10
Showing nodes accounting for 16190ms, 41.88% of 38660ms total
Dropped 448 nodes (cum <= 193.30ms)
Showing top 10 nodes out of 210
      flat  flat%   sum%        cum   cum%
    4860ms 12.57% 12.57%     4860ms 12.57%  runtime.cmpbody
    2120ms  5.48% 18.05%     2140ms  5.54%  runtime.heapBitsForObject
    1930ms  4.99% 23.05%     1930ms  4.99%  github.com/pingcap/pd/vendor/github.com/pingcap/kvproto/pkg/metapb.(*Region).GetStartKey (inline)
    1500ms  3.88% 26.93%     1500ms  3.88%  runtime.futex
    1300ms  3.36% 30.29%     5250ms 13.58%  runtime.scanobject
    1190ms  3.08% 33.37%     1280ms  3.31%  syscall.Syscall
     980ms  2.53% 35.90%     1100ms  2.85%  runtime.mapaccess2_fast64
     800ms  2.07% 37.97%      800ms  2.07%  runtime.usleep
     780ms  2.02% 39.99%     7610ms 19.68%  github.com/pingcap/pd/server/core.(*regionItem).Less
     730ms  1.89% 41.88%      730ms  1.89%  runtime.heapBits.bits (inline)

after:
go test -bench="BenchmarkRegionTreeUpdate" -count 4 -run=none -benchtime=3s
goos: linux
goarch: amd64
pkg: github.com/pingcap/pd/server/core
BenchmarkRegionTreeUpdate-4 2000000 2060 ns/op
BenchmarkRegionTreeUpdate-4 2000000 1921 ns/op
BenchmarkRegionTreeUpdate-4 2000000 1935 ns/op
BenchmarkRegionTreeUpdate-4 2000000 2002 ns/op

(pprof) top10
Showing nodes accounting for 13560ms, 33.43% of 40560ms total
Dropped 451 nodes (cum <= 202.80ms)
Showing top 10 nodes out of 232
      flat  flat%   sum%        cum   cum%
    2640ms  6.51%  6.51%     2670ms  6.58%  runtime.heapBitsForObject
    1910ms  4.71% 11.22%     6800ms 16.77%  runtime.scanobject
    1530ms  3.77% 14.99%     1700ms  4.19%  syscall.Syscall
    1450ms  3.57% 18.57%     1450ms  3.57%  runtime.futex
    1140ms  2.81% 21.38%     1140ms  2.81%  runtime.memmove
    1100ms  2.71% 24.09%     1100ms  2.71%  runtime.markBits.isMarked (inline)
    1050ms  2.59% 26.68%     1050ms  2.59%  runtime.cmpbody
    1020ms  2.51% 29.19%     1270ms  3.13%  runtime.mapaccess2_fast64
     950ms  2.34% 31.53%     3320ms  8.19%  runtime.mallocgc
     770ms  1.90% 33.43%      770ms  1.90%  runtime.usleep

em, can we move the lock + b-tree to a lock free skiplist, see https://github.com/andy-kimball/arenaskl

This lock-free SkipList base on the fixed-size space, not suitable for us. and now the upper bound on the number of comparisons, not on lock.
I bench it with single thread:
Btree value is int. Skiplist value is int to bytes:
Btree-Insert:
pkg: github.com/google/btree
BenchmarkInsertII-4      5000000               337 ns/op
BenchmarkInsertII-4      5000000               358 ns/op
BenchmarkInsertII-4      5000000               325 ns/op
BenchmarkInsertII-4      5000000               329 ns/op

SkipList-Insert:
pkg: github.com/andy-kimball/arenaskl
BenchmarkInsert-4        3000000               410 ns/op
BenchmarkInsert-4        3000000               491 ns/op
BenchmarkInsert-4        2000000               573 ns/op
BenchmarkInsert-4        2000000               502 ns/op

Btree-Seek(Before improvement)：
pkg: github.com/google/btree
BenchmarkSeek-4          2000000               866 ns/op
BenchmarkSeek-4          2000000               865 ns/op
BenchmarkSeek-4          2000000               882 ns/op
BenchmarkSeek-4          2000000               917 ns/op

BTree-Seek(After improvement)：
pkg: github.com/google/btree
BenchmarkSeek-4          5000000               305 ns/op
BenchmarkSeek-4          5000000               297 ns/op
BenchmarkSeek-4          3000000               335 ns/op
BenchmarkSeek-4          5000000               307 ns/op

SkipList-Seek：
pkg: github.com/andy-kimball/arenaskl
BenchmarkSeek-4          5000000               285 ns/op
BenchmarkSeek-4          5000000               297 ns/op
BenchmarkSeek-4          5000000               314 ns/op
BenchmarkSeek-4          5000000               299 ns/op

I think you can try to merge the optimization into upstream google/btree repo.

LGTM
Do you add more tests for btree now?

@disksing  yeah, I already send a PR. @siddontang the tests already covered, I just add benchmark now.

LGTM
Your btree pr has been merged, please update the vendor.
@nolouch

/run-all-tests

Great work!!! LGTM


Add full taxonomy to prototype

The prototype currently only pulls in taxons that are tagged to the content list we specify. This change adds a CSV list containing the complete education taxonomy, and uses it to complete the list of taxons that are processed in order to produce taxonomy_data.json.
There are several refactor/cleanup changes just prior to this - best reviewed by commit.

What's the reason for including the missing taxons?
The original intent there was to avoid showing users links to topic pages that had no content tagged to them (or any of their children).

@MatMoore to see what the design looks like with the full taxonomy, without needing to go through and tag content to every taxon. Looking to discuss with @alext how we intend to handle empty pages.

@mobaig I'm not sure I have any context on this. I suspect you meant @alextea...

Yep, sorry @alext !


Paket fails during build

When I call FAKE Build from within VS Code it fails with
Paket failed with:
	Fetching the git cache at C:\Users\user\.paket\git\db\ionide-vscode-helpers failed.
Message: Could not run "git clone git@github.com:ionide/ionide-vscode-helpers.git".
Error:
Cloning into 'ionide-vscode-helpers'...
Permission denied (publickey).

You need to an ssh-agent running and your public key tied to your github account to clone using<EMAIL_ADDRESS>https://help.github.com/articles/generating-an-ssh-key/
https://help.github.com/articles/error-permission-denied-publickey/

Thanks. Makes sense


NPM False Postivies - mistaking NPMs for other binaries

The following NPMs are reported but are false positives as DP thinks they are other binaries;

cmd-shim/package.json - reports as the UEFI bootloader Shim cpe:2.3:a:shim:shim:-:::::::*
node_modules/normalize-git-url/package.json - reports as is_git_directory function in setup.c in Git cpe:2.3:a:git:git::::::::
sshpk/node_modules/getpass/package.json - reports as visionmedia cpe:2.3:o:fedoraproject:fedora:19:::::::*

Scanning with nodeJsAnalyzerEnabled = true

The Node analyzer will likely be removed in the near future. In my personal testing it's got a near 100% false positive and negative rate. To scan Node packages, use the nspanalyzer instead.

@ismisepaul Refer to #870 for further details.

The node analyzer has been retired in 3.0.0. As such, this ticket will be closed.


Add support for custom header configs in RESTCatalog

Feature Request / Improvement
I noticed that PyIceberg's RESTCatalog doesn't set custom header configs. This feature is in Java's implementation of the RESTCatalog, and was beneficial when building out my own testing catalog. For instance, my catalog may have a custom content-type header for POST requests. Therefore, my config endpoint can return a config containing this property:
{
  "defaults": {
    "header.content-type": "application/json-custom"
  },
  "overrides": {}
}

Which in the Java implementation will merge this in to the properties and add it as a header for all subsequent requests.
This logic can be followed in the RESTSessionCatalog init method: https://github.com/apache/iceberg/blob/4090a8860061f58748e3faa6804094f90d3575f3/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java#L165
Is this something, we want to support in PyIceberg? I can add this if so.
@HonahX @Fokko

Hey @geruh that's a great catch. I wasn't aware of that piece being missing. It would be great if you want to raise PR to add this 👍


Credits?

Hello, i shared the exact same props few days ago on https://t.me/PixelProps
If you are using these please provide a referring link to the server.

The prop values are taken from  coral tree in the android dumps which are updated every month at gitlab :
https://git.rip/dumps/google/coral/-/tree/coral-user-10-QQ3A.200705.002-6506677-release-keys/


[improve]WeCom app supports sending to specific users, departments, tags

What's changed?
[improve]WeCom app supports sending to specific users, departments, tags

Rename WeChatApp to WeComApp in alert notice components and i18n files.
Update receiver types and notice types to reflect the name change.
Add new fields for WeComApp in NoticeReceiver class and update handler implementations.
Modify tests to comply with the updated WeComApp functionality.

Checklist

[ ]  I have read the Contributing Guide
[ ]  I have written the necessary doc or comment.
[ ]  I have added the necessary unit tests and all cases have passed.

Add or update API

[ ] I have added the necessary e2e tests and all cases have passed.

Codecov Report
Attention: Patch coverage is 0% with 19 lines in your changes missing coverage. Please review.

Project coverage is 19.30%. Comparing base (2fd0090) to head (d13c486).
Report is 2 commits behind head on master.

Files
Patch %
Lines

...t/alerter/impl/WeComAppAlertNotifyHandlerImpl.java
0.00%
17 Missing :warning:

...ertzbeat/common/entity/manager/NoticeReceiver.java
0.00%
2 Missing :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #2220      +/-   ##
============================================
- Coverage     19.34%   19.30%   -0.04%
  Complexity     1043     1043
============================================
  Files           399      399
  Lines         16968    16983      +15
  Branches       2250     2257       +7
============================================
- Hits           3282     3279       -3
- Misses        13329    13347      +18
  Partials        357      357

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


[redmine] add ingress

add ingress for redmine
simplify (?) options in readme
upgrade postgres dependency to latest version

@k8s-bot ok to test


[BUG] Docker COPY failed: stat app/refine/.next/standalone: file does not exist

Describe the bug
When using out of the box example, it doesn't work with the provided Dockerfile. It seems that the docker configuration is expecting next.js to product a production build in "standalone" mode.
We need to manually add output: 'standalone' to the next.config.mjs
/** @type {import('next').NextConfig} */
const nextConfig = {
  transpilePackages: ['@refinedev/antd'],
  output: 'standalone'
}

export default nextConfig

This is maybe a documentation issue or maybe an issue with the example code generated.
Steps To Reproduce
✔ Choose a project template · refine-nextjs
✔ What would you like to name your project?: · refine-test
✔ Choose your backend service to connect: · data-provider-custom-json-rest
✔ Do you want to use a UI Framework?: · antd
✔ Do you want to add example pages?: · antd-example
✔ Do you need any Authentication logic?: · auth-provider-custom
✔ Choose a package manager: · yarn
cd refine-test
docker build -t refine-test -f ./Dockerfile .
...
Step 14/20 : COPY --from=builder --chown=refine:nodejs /app/refine/.next/standalone ./
COPY failed: stat app/refine/.next/standalone: file does not exist
Expected behavior
Add   output: 'standalone' to the next.config.mjs and rerun
docker build -t refine-test -f ./Dockerfile .
...
Step 14/20 : COPY --from=builder --chown=refine:nodejs /app/refine/.next/standalone ./
---> f959fa4b1b49
Step 15/20 : COPY --from=builder --chown=refine:nodejs /app/refine/.next/static ./.next/static
---> 4130fc3ced4d
Step 16/20 : USER refine
---> Running in 90c2a7cceb19
Removing intermediate container 90c2a7cceb19
....
Successfully built c7ca2526790c
Successfully tagged refine-test:latest
Packages
"@ant-design/icons": "^5.0.1",
"@ant-design/nextjs-registry": "^1.0.0",
"@refinedev/antd": "^5.37.4",
"@refinedev/cli": "^2.16.21",
"@refinedev/core": "^4.47.1",
"@refinedev/devtools": "^1.1.32",
"@refinedev/kbar": "^1.3.6",
"@refinedev/nextjs-router": "^6.0.0",
"@refinedev/simple-rest": "^5.0.1",
"antd": "^5.0.5",
"js-cookie": "^3.0.5",
"next": "^14.1.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
Additional Context
I would also suggest to include a .dockerignore file that exclude the .git and node_modules directories this would reduce the docker context transfer size and time.
Also the Dockerfile contains a public folder but the example don't generate one, so we probably need to remove it as well
COPY --from=builder /app/refine/public ./public

Hey @syl20lego thanks for the issue. The template is fixed here.
We want to keep public because probably it will be used for real applications.


Development

Reference to microflow settings added to microflow properties section, because i spent a long time finding the info.

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


Custom Message

Hi
I want to know the purpose of custom message. Like how and where we are using that. Cant able to figure out the usage of that custom message.

Hi, sorry for delay, the original idea with "custom message" was some kind of "custom status" to appear in main chat window. (like was in msn some time ago), at this moment this feature is not working, anyhow I have plans to add this functionality ASAP.

Could great if you can add this feature ASAP. Because any functionality that is present but not working yet looks somewhat like a bug. Looking forward for this feature.

Good jod,buddy


Don't assume lookaheads are always fields

Fixes https://github.com/graphql-rust/juniper/issues/398.

Codecov Report

Merging #404 into master will increase coverage by <.01%.
The diff coverage is 93.75%.

@@            Coverage Diff             @@
##           master     #404      +/-   ##
==========================================
+ Coverage   85.71%   85.71%   +<.01%
==========================================
  Files         109      110       +1
  Lines       15809    15825      +16
==========================================
+ Hits        13550    13565      +15
- Misses       2259     2260       +1

Impacted Files
Coverage Δ

juniper/src/executor/mod.rs
92.72% <ø> (ø)
:arrow_up:

integration_tests/juniper_tests/src/lib.rs
100% <ø> (ø)
:arrow_up:

integration_tests/juniper_tests/src/issue_398.rs
93.75% <93.75%> (ø)

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 55a9a0a...a80ca6f. Read the comment docs.

Thanks for fixing this! Any chance you would publish a patch release? The bug is currently preventing me from updating my work project to 0.13.


hadoop 2.9.1 ... maybe this time it will work out okay

@robert3005 I'll also make a 3.1.1 version, but here's this in the meantime
Fixes https://jira.apache.org/jira/browse/SPARK-24493 for us because this Hadoop version includes a backport of https://jira.apache.org/jira/browse/HDFS-12670.

Build failure seems unrelated to the PR as far as I can tell -- getting java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: GC overhead limit exceeded, which sounds like we need bigger containers or less parallelism?

@sjrand retrigger

@robert3005 can I have write perms for this repo? Circle claims that I need that to re-run builds

You do have write access - you pushed to a branch on this repo. circle sometimes gets confused, log out and log in again

Gah, yeah, that was silly. Thanks for retriggering


Drop an executable bit of simde/x86/avx2.h.

I found a header file that has a executable bit.
$ find simde/ -type f -executable | xargs ls -l
-rwxrwxr-x 1 jaruga jaruga 59236 Mar 28 15:44 simde/x86/avx2.h

I dropped it. :)
$ chmod -x simde/x86/avx2.h

$ ls -l simde/x86/avx2.h
-rw-rw-r-- 1 jaruga jaruga 59236 Mar 28 15:44 simde/x86/avx2.h

Merged, thanks!


Docker build

Summary
Added koa-static for serving client code, added basic Dockerfile, added dockerignore.
Mostly behind the scene for now, so no updates to README.
Testing

docker build . -t terarium-dev
docker run -p 3000:3000 terarium-dev

Application will be available at http://localhost:3000/, API endpoints available at http://localhost:3000/api

I got this error:
$ docker built -t . terarium-dev
unknown shorthand flag: 't' in -t

Could it have something to do with the docker version? What do you think?

docker built -t . terarium-dev

should be docker build -t . terarium-dev

docker built -t . terarium-dev

should be docker build -t . terarium-dev

Looks like there have been several layers of typos 😆 including in the original PR description.
The final command that worked for me was:
docker build . -t terarium-dev
Note the . is before the -t
But it did work! Thanks.

Oops, sorry about the bad command instructions.
@YohannParis you can use the detached -d flag to put the docker process into the background. As for using "ctrl+c" that is a little tricky as the SIGTERM may not be forwarded to the app at all. There are several solutions we can try.


Not rendering expanded input when match fails

When the match fails, we're not rendering any input:

We used to render it in grey, like this:

(This is an image from the version https://github.com/cdglabs/ohm/commit/decc045ae59c4a5a5b32c4e3d9c19bbefd389470)

@lilyx, if you have a chance, could you look at this too?

It might be due to the recent incremental changes.

Solved by the latest commit: https://github.com/cdglabs/ohm-editor/commit/13f20b89303c3abb2286befe1e51d12362dc1a20

Great, thanks! Let's close the issue then.


kio: patch for Qt 5.9.3

kio cannot create folders under Qt 5.9.3 unless we apply these upstream
patches.
Testing

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Do you think we should revert to Qt 5.9.1 until 5.9.3 is actually usable (due to PRs like this, or the next KDE versions)?

Reverted to Qt 5.9.1 in #32100. I think we should just wait for the next release of KDE frameworks rather than backport fixes for Qt 5.9.3 into the current release.

Why? These patches were specifically recommended by KDE upstream, and now we are two bugfix releases behind on Qt.

These patches were specifically recommended by KDE upstream

What do you mean? Where are they recommended?

now we are two bugfix releases behind on Qt.

Looking at the list of bugs fixed in Qt 5.9.3, a lot of them were introduced in Qt 5.9.2, so we are more like one bugmake and one bugfix release behind :) But if you think that we should upgrade before KDE prepares a release that supports the new Qt, we can begin by merging this PR.

What do you mean? Where are they recommended?

On the kde-distro-packagers mailing list, the canonical source for such information:
https://mail.kde.org/pipermail/kde-distro-packagers/2017-November/000297.html

But if you think that we should upgrade before KDE prepares a release that supports the new Qt, we can begin by merging this PR.

No, the amount of my time consumed by this PR already exceeds its value.

Thank you, if I were subscribed to that mailing list I would have known that Qt 5.9.3 should not have been merged just yet, so I have subscribed now.


Release 2.3.0

Below is the draft for the release notes:
Lightning v2.3: Tensor Parallelism and 2D Parallelism
Lightning AI is excited to announce the release of Lightning 2.3 :zap:
Did you know? The Lightning philosophy extends beyond a boilerplate-free deep learning framework: We've been hard at work bringing you Lightning Studio. Code together, prototype, train, deploy, host AI web apps. All from your browser, with zero setup.
This release introduces experimental support for Tensor Parallelism and 2D Parallelism, PyTorch 2.3 support, and several bugfixes and stability improvements.

Highlights

Tensor Parallelism (beta)
2D Parallelism (beta)
Training Mode in Model Summary
Special Forward Methods in Fabric

Notable Changes
Full Changelog

PyTorch Lightning
Lightning Fabric

Contributors

Highlights

Tensor Parallelism (beta)
Tensor parallelism (TP) is a technique that splits up the computation of selected layers across GPUs to save memory and speed up distributed models. To enable TP as well as other forms of parallelism, we introduce a ModelParallelStrategy for both Lightning Trainer and Fabric. Under the hood, TP is enabled through new experimental PyTorch APIs like DTensor and torch.distributed.tensor.parallel.
PyTorch Lightning
Enabling TP in a model with PyTorch Lightning requires you to implement the LightningModule.configure_model() method where you convert selected layers of a model to paralellized layers. This is an advanced feature, because it requires a deep understanding of the model architecture. Open the tutorial Studio to learn the basics of Tensor Parallelism.

import lightning as L
from lightning.pytorch.strategies import ModelParallelStrategy
from torch.distributed.tensor.parallel import ColwiseParallel, RowwiseParallel
from torch.distributed.tensor.parallel import parallelize_module

# 1. Implement the `configure_model()` method in LightningModule
class LitModel(L.LightningModule):
    def __init__(self):
        super().__init__()
        self.model = FeedForward(8192, 8192)

    def configure_model(self):
        # Lightning will set up a `self.device_mesh` for you
        tp_mesh = self.device_mesh["tensor_parallel"]
        # Use PyTorch's distributed tensor APIs to parallelize the model
        plan = {
            "w1": ColwiseParallel(),
            "w2": RowwiseParallel(),
            "w3": ColwiseParallel(),
        }
        parallelize_module(self.model, tp_mesh, plan)

    def training_step(self, batch):
        ...

# 2. Create the strategy
strategy = ModelParallelStrategy()

# 3. Configure devices and set the strategy in Trainer
trainer = L.Trainer(accelerator="cuda", devices=2, strategy=strategy)
trainer.fit(...)

Full training example (requires at least 2 GPUs).
import torch
import torch.nn as nn
import torch.nn.functional as F

from torch.distributed.tensor.parallel import ColwiseParallel, RowwiseParallel
from torch.distributed.tensor.parallel import parallelize_module

import lightning as L
from lightning.pytorch.demos.boring_classes import RandomDataset
from lightning.pytorch.strategies import ModelParallelStrategy

class FeedForward(nn.Module):
    def __init__(self, dim, hidden_dim):
        super().__init__()
        self.w1 = nn.Linear(dim, hidden_dim, bias=False)
        self.w2 = nn.Linear(hidden_dim, dim, bias=False)
        self.w3 = nn.Linear(dim, hidden_dim, bias=False)

    def forward(self, x):
        return self.w2(F.silu(self.w1(x)) * self.w3(x))

class LitModel(L.LightningModule):
    def __init__(self):
        super().__init__()
        self.model = FeedForward(8192, 8192)

    def configure_model(self):
        if self.device_mesh is None:
            return

        # Lightning will set up a `self.device_mesh` for you
        tp_mesh = self.device_mesh["tensor_parallel"]
        # Use PyTorch's distributed tensor APIs to parallelize the model
        plan = {
            "w1": ColwiseParallel(),
            "w2": RowwiseParallel(),
            "w3": ColwiseParallel(),
        }
        parallelize_module(self.model, tp_mesh, plan)

    def training_step(self, batch):
        output = self.model(batch)
        loss = output.sum()
        return loss

    def configure_optimizers(self):
        return torch.optim.AdamW(self.model.parameters(), lr=3e-3)

    def train_dataloader(self):
        # Trainer configures the sampler automatically for you such that
        # all batches in a tensor-parallel group are identical
        dataset = RandomDataset(8192, 64)
        return torch.utils.data.DataLoader(dataset, batch_size=8, num_workers=2)

strategy = ModelParallelStrategy()
trainer = L.Trainer(
    accelerator="cuda",
    devices=2,
    strategy=strategy,
    max_epochs=1,
)

model = LitModel()
trainer.fit(model)

trainer.print(f"Peak memory usage: {torch.cuda.max_memory_allocated() / 1e9:.02f} GB")

Lightning Fabric
Applying TP in a model with Fabric requires you to implement a special function where you convert selected layers of a model to paralellized layers. This is an advanced feature, because it requires a deep understanding of the model architecture. Open the tutorial Studio to learn the basics of Tensor Parallelism.

import lightning as L
from lightning.fabric.strategies import ModelParallelStrategy
from torch.distributed.tensor.parallel import ColwiseParallel, RowwiseParallel
from torch.distributed.tensor.parallel import parallelize_module

# 1. Implement the parallelization function for your model
def parallelize_feedforward(model, device_mesh):
    # Lightning will set up a device mesh for you
    tp_mesh = device_mesh["tensor_parallel"]
    # Use PyTorch's distributed tensor APIs to parallelize the model
    plan = {
        "w1": ColwiseParallel(),
        "w2": RowwiseParallel(),
        "w3": ColwiseParallel(),
    }
    parallelize_module(model, tp_mesh, plan)
    return model

# 2. Pass the parallelization function to the strategy
strategy = ModelParallelStrategy(parallelize_fn=parallelize_feedforward)

# 3. Configure devices and set the strategy in Fabric
fabric = L.Fabric(accelerator="cuda", devices=2, strategy=strategy)
fabric.launch()

Full training example (requires at least 2 GPUs).
import torch
import torch.nn as nn
import torch.nn.functional as F

from torch.distributed.tensor.parallel import ColwiseParallel, RowwiseParallel
from torch.distributed.tensor.parallel import parallelize_module

import lightning as L
from lightning.pytorch.demos.boring_classes import RandomDataset
from lightning.fabric.strategies import ModelParallelStrategy

class FeedForward(nn.Module):
    def __init__(self, dim, hidden_dim):
        super().__init__()
        self.w1 = nn.Linear(dim, hidden_dim, bias=False)
        self.w2 = nn.Linear(hidden_dim, dim, bias=False)
        self.w3 = nn.Linear(dim, hidden_dim, bias=False)

    def forward(self, x):
        return self.w2(F.silu(self.w1(x)) * self.w3(x))

def parallelize_feedforward(model, device_mesh):
    # Lightning will set up a device mesh for you
    tp_mesh = device_mesh["tensor_parallel"]
    # Use PyTorch's distributed tensor APIs to parallelize the model
    plan = {
        "w1": ColwiseParallel(),
        "w2": RowwiseParallel(),
        "w3": ColwiseParallel(),
    }
    parallelize_module(model, tp_mesh, plan)
    return model

strategy = ModelParallelStrategy(parallelize_fn=parallelize_feedforward)
fabric = L.Fabric(accelerator="cuda", devices=2, strategy=strategy)
fabric.launch()

# Initialize the model
model = FeedForward(8192, 8192)
model = fabric.setup(model)

# Define the optimizer
optimizer = torch.optim.AdamW(model.parameters(), lr=3e-3)
optimizer = fabric.setup_optimizers(optimizer)

# Define dataset/dataloader
dataset = RandomDataset(8192, 64)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=8)
dataloader = fabric.setup_dataloaders(dataloader)

# Simplified training loop
for i, batch in enumerate(dataloader):
    output = model(batch)
    loss = output.sum()
    fabric.backward(loss)
    optimizer.step()
    optimizer.zero_grad()
    fabric.print(f"Iteration {i} complete")

fabric.print(f"Peak memory usage: {torch.cuda.max_memory_allocated() / 1e9:.02f} GB")

2D Parallelism (beta)
Tensor Parallelism by itself can be very effective for efficient inference of very large models. For training, TP is typically combined with other forms of parallelism, such as FSDP, to increase throughput and scalability on large clusters with 100s of GPUs. The new ModelParallelStrategy in this release supports the combination of TP + FSDP, which is referred to as 2D parallelism.
For an introduction to this feature, please also refer to the tutorial Studios (PyTorch Lightning, Lightning Fabric). At the moment, the PyTorch team is reimplementing FSDP under the name FSDP2 with the aim to make it compose well with other parallelisms such as TP. Therefore, for the experimental 2D parallelism support, you'll need to switch to using FSDP2 with the new ModelParallelStrategy. Please refer to our docs (PyTorch Lightning, Lightning Fabric) and stay tuned for future releases as these APIs mature.

Training Mode in Model Summary
The model summary table that gets displayed when you run Trainer.fit() now contains a new column "Mode" that shows the training mode each layer is in (#19468).
  | Name                 | Type            | Params | Mode
-----------------------------------------------------------------
0 | model                | Sam             | 93.7 M | train
1 | model.image_encoder  | ImageEncoderViT | 89.7 M | eval
2 | model.prompt_encoder | PromptEncoder   | 6.2 K  | train
3 | model.mask_decoder   | MaskDecoder     | 4.1 M  | train
-----------------------------------------------------------------
93.7 M    Trainable params
0         Non-trainable params
93.7 M    Total params
374.942   Total estimated model params size (MB)

A module in PyTorch is always either in train (default) or eval mode.
This improvement should give users more visibility into the state of their model and help debug issues, for example when you need to make sure certain layers of the model are frozen.

Special Forward Methods in Fabric
Until now, Lightning Fabric warned the user in case the forward pass of the model or a subset of its modules was conducted through methods other than the dedicated forward method of the PyTorch module. The reason for this is that PyTorch needs to run special hooks in case of DDP/FSDP and other strategies to function properly, and not running through the real forward method would skip these hooks and lead to correctness issues.
In Lightning Fabric 2.3, we added a feature to explicitly mark alternative forward methods so that Fabric can add the necessary rerouting behind the scenes:
import lightning as L

fabric = L.Fabric(devices=2, strategy="ddp")
fabric.launch()

model = MyModel()
model = fabric.setup(model)

# OK: Calling the model directly
output = model(input)

# ERROR: Calling another method that calls forward indirectly
prediction = model.generate(input)

# New: Mark special forward methods explicitly before using them
model.mark_forward_method(model.generate)

# OK: Now can use `model.generate()` in DDP/FSDP without issues
prediction = model.generate(input)

Find the full example and more details in our docs.

Notable Changes
The 2.0 series of Lightning releases guarantees core API stability: No name changes, argument renaming, hook removals etc. on core interfaces (Trainer, LightningModule, etc.) unless a feature is specifically marked experimental. Here we list a few behavioral changes made in places where the change was justified if it significantly improves the user experience, improves performance, or fixes the correctness of a feature. These changes will likely not impact most users.
Skipping the training step in DDP
It is no longer allowed to skip training_step() by returning None in distributed training (#19918). The following usage was previously possible but would result in unpredictable hangs and timeouts in distributed training:
def training_step(self, batch):
    loss = ...
    if loss.isnan():
        # No longer allowed in multi-GPU!
        # Raises error in Lightning >= 2.3
        return None
    return loss

We decided to raise an error if the user attempts to return None when running in a multi-GPU setting.
Miscellaneous Changes

Dropped support for PyTorch 1.13 (#19300). With every new Lightning release, we add official support for the latest PyTorch stable version and drop the oldest version in our support window.
The prepare_data() hook in LightningModule and LightningDataModule is now subject to a barrier without timeout to avoid long-running tasks to be interrupted (#19448).

CHANGELOG

PyTorch Lightning
Added

Changed

Deprecated

Removed

Fixed

Lightning Fabric
Added

Changed

Removed

Fixed

Full commit list: 2.2.0 -> 2.3.0

Contributors
We thank all our contributors who submitted pull requests for features, bug fixes and documentation updates.
New Contributors
TODO
cc @borda @carmocca @justusschock @awaelchli

Thanks for the suggestion. I'll look for a good spot to mention it.


Incomplete text from configure-cgroup-driver.md

This is a Bug Report

Problem:
The following sentence is not complete:
As this guide explains using the cgroupfs driver with kubeadm is not recommended.
What would you like to be added:
More information needs to be added after "explains", or rephrase it from scratch.
Page to Update:
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/

/language en

/language en
/sig cluster-lifecycle

More information needs to be added after "explains", or rephrase it from scratch.

do you mean that the sentence:

As this guide explains using the cgroupfs driver with kubeadm is not recommended.

should link to one of the earlier paragraphs on the same page (same guide)?

The Container runtimes page explains that the systemd driver is recommended for kubeadm based setups instead of the cgroupfs driver, because kubeadm manages the kubelet as a systemd service.

technically, as per the overall page context, the sentence:

As this guide explains using the cgroupfs driver with kubeadm is not recommended.

can be deleted entirely...
the section Using the cgroupfs driver is providing an alternative after the main point has been made - i.e. "cgroupfs driver = not recommended".


problem with ImageFont.py

When I tried to ru sg.draw_model(mymodel) I got the following error:
---------------------------------------------------------------------------
IOError                                   Traceback (most recent call last)
<ipython-input-16-c8ed5de8abd8> in <module>()
      1 from swmmio.graphics import swmm_graphics as sg
----> 2 sg.draw_model(mymodel)

C:\Users\Test\AppData\Local\Continuum\anaconda2\lib\site-packages\swmmio\graphics\swmm_graphics.pyc in draw_model(model, nodes, conduits, parcels, title, annotation, file_path, bbox, px_width)
    111         if title: annotate_title(title, draw)
    112         if annotation: annotate_details(annotation, draw)
--> 113         annotate_timestamp(draw)
    114
    115         #SAVE IMAGE TO DISK

C:\Users\Test\AppData\Local\Continuum\anaconda2\lib\site-packages\swmmio\graphics\drawing.pyc in annotate_timestamp(draw)
    206         size = (draw.im.getbbox()[2], draw.im.getbbox()[3])
    207         scale = 1 * size[0] / 2048
--> 208         fnt = ImageFont.truetype(config.font_file, int(20 *scale))
    209
    210         timestamp = strftime("%b-%d-%Y %H:%M:%S")

C:\Users\Test\AppData\Local\Continuum\anaconda2\lib\site-packages\PIL\ImageFont.pyc in truetype(font, size, index, encoding)
    242
    243     try:
--> 244         return FreeTypeFont(font, size, index, encoding)
    245     except IOError:
    246         ttf_filename = os.path.basename(font)

C:\Users\Test\AppData\Local\Continuum\anaconda2\lib\site-packages\PIL\ImageFont.pyc in __init__(self, font, size, index, encoding)
    131
    132         if isPath(font):
--> 133             self.font = core.getfont(font, size, index, encoding)
    134         else:
    135             self.font_bytes = font.read()

IOError: cannot open resource

I should say that I have no admin rights on this machine and I won't have them

@marcoalicera, it looks like the default font is set in definitions.py on line 26 here. At first glance this looks like a hard coded bug. Drawing methods should have a fallback font or use a default font that is OS agnostic. Want to take a stab at fixing this?
More broadly, I don't like how configuration is handled. I like adopt a best practice for providing users access to certain config setting. Does anyone have any ideas or examples of best practices to that end?

@aerispaha, I would like to help to fix it, but I have no idea how to start. I already had had a problem with the definitions.py, which was not part of my installation and I don not think I solved properly.

@marcoalicera, understood. I don't want to get too ahead of ourselves, but I feel like this issue stems from broader project-level set up that I'd like to address. For now, I can try to find time to debug this directly. Can you share a requirements.txt file so I can see exactly how your environment it set up?
You can run conda list -e > requirements.txt from a command line and attach the resulting file here.

requirements.txt


PG_RO_HOST is not disabled when value is NONE

Summary
Hi! I might be wrong, but according to the documentation, the newly introduced pg_ro_* parameters should be disabled when pg_ro_host=NONE:

Same as pg_host, but for the read-only connection. Value of NONE disables read-only connection. Note: Refer to the documentation section above for detailed usage.

Nevertheless, if I uncomment this parameter in kong.conf file (or equivalently, providing with the KONG_PG_RO_HOST env var) and give it the value NONE,  kong does not seem to be working properly.
Steps To Reproduce
Basically, follow your Docker install guide (although this might not be directly related to docker)

Create the network and the DB

$ docker network create kong-net

$ docker run -d --name kong-database \
               --network=kong-net \
               -p 5432:5432 \
               -e "POSTGRES_USER=kong" \
               -e "POSTGRES_DB=kong" \
               -e "POSTGRES_PASSWORD=kong" \
               postgres:9.6

$ docker run --rm \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     kong:latest kong migrations bootstrap

Start Kong, but provide the additional env var KONG_PG_RO_HOST=NONE

docker run -d --name kong \
     --network=kong-net \
     -e "KONG_DATABASE=postgres" \
     -e "KONG_PG_HOST=kong-database" \
     -e "KONG_PG_USER=kong" \
     -e "KONG_PG_PASSWORD=kong" \
     -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
     -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
     -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
     -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
     -e "KONG_ADMIN_LISTEN=<IP_ADDRESS>:8001, <IP_ADDRESS>:8444 ssl" \
     -e "KONG_PG_RO_HOST=NONE" \
     -p 8000:8000 \
     -p 8443:8443 \
     -p <IP_ADDRESS>:8001:8001 \
     -p <IP_ADDRESS>:8444:8444 \
     kong:latest

The logs reflect that there has been a DNS error when trying to reach the Postgres DB:

docker logs kong
2020/08/10 17:16:52 [warn] 1#0: load balancing method redefined in /usr/local/kong/nginx-kong.conf:56
nginx: [warn] load balancing method redefined in /usr/local/kong/nginx-kong.conf:56
2020/08/10 17:16:53 [notice] 1#0: using the "epoll" event method
2020/08/10 17:16:53 [notice] 1#0: openresty/<IP_ADDRESS>
2020/08/10 17:16:53 [notice] 1#0: built by gcc 9.3.0 (Alpine 9.3.0)
2020/08/10 17:16:53 [notice] 1#0: OS: Linux 4.4.0-148-generic
2020/08/10 17:16:53 [notice] 1#0: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2020/08/10 17:16:53 [notice] 1#0: start worker processes
2020/08/10 17:16:53 [notice] 1#0: start worker process 23
2020/08/10 17:16:53 [notice] 1#0: start worker process 24
2020/08/10 17:16:53 [notice] 1#0: start worker process 25
2020/08/10 17:16:53 [notice] 1#0: start worker process 26
2020/08/10 17:16:53 [notice] 1#0: start worker process 27
2020/08/10 17:16:53 [notice] 1#0: start worker process 28
2020/08/10 17:16:53 [notice] 1#0: start worker process 29
2020/08/10 17:16:53 [notice] 1#0: start worker process 30
2020/08/10 17:16:53 [notice] 1#0: start worker process 31
2020/08/10 17:16:53 [notice] 1#0: start worker process 32
2020/08/10 17:16:53 [notice] 1#0: start worker process 33
2020/08/10 17:16:53 [notice] 1#0: start worker process 34
2020/08/10 17:16:53 [notice] 1#0: start worker process 35
2020/08/10 17:16:53 [notice] 1#0: start worker process 36
2020/08/10 17:16:53 [notice] 1#0: start worker process 37
2020/08/10 17:16:53 [notice] 1#0: start worker process 38
2020/08/10 17:16:53 [warn] 26#0: *8 [lua] globalpatches.lua:55: sleep(): executing a blocking 'sleep' (0.001 seconds), context: init_worker_by_lua*
2020/08/10 17:16:53 [notice] 23#0: *1 [lua] cache_warmup.lua:50: cache_warmup_single_entity(): Preloading 'services' into the core_cache..., context: init_worker_by_lua*
2020/08/10 17:16:53 [error] 23#0: *1 [lua] init.lua:598: init_worker(): failed to warm up the DB cache: [postgres] host or service not provided, or not known, context: init_worker_by_lua*
2020/08/10 17:16:53 [crit] 31#0: *17 [lua] balancer.lua:628: could not obtain list of upstreams: [postgres] [cosocket] DNS resolution failed: dns server error: 3 name error. Tried: ["(short)none:(na) - cache-miss","none:33 - cache-miss/scheduled/querying/dns server error: 3 name error","none.server:33 - cache-miss/scheduled/querying/dns server error: 3 name error","none:1 - cache-miss/scheduled/querying/dns server error: 3 name error","none.server:1 - cache-miss/scheduled/querying/dns server error: 3 name error","none:5 - cache-miss/scheduled/querying/dns server error: 3 name error","none.server:5 - cache-miss/scheduled/querying/dns server error: 3 name error"], context: ngx.timer

Note that it is trying to resolve postgres as none, the value of KONG_PG_RO_HOST.
Additional Details & Logs

Kong version ($ kong version)

$ docker exec kong kong version
2.1.1

As soon as I comment out this property (or do not provide the env var) Kong seems to be working fine.

@joancafom The documentation is incorrect there. NONE is an internal value meant to refer that the value was not given, there is no need to pass it explicitly (and indeed it will be interpreted as a domain name). We will fix our docs, thank you for the heads up!


fn_install_serverfiles: line 38 : ./steamcmd.sh no such file or directory

Trying to install gmodserver on a fresh Debian 8 over Virtualbox, to work onto my server with MySQL then upload it to the true server...
Here is what i got at install
http://image.noelshack.com/fichiers/2015/23/1433284705-fn-install-serverfiles-error.png
:(
Any idea ?

Well i tried using my main server on which your script used to work flawlessly.
http://image.noelshack.com/fichiers/2015/23/1433289787-debian-ssh-gmodserver-install.png
It's totally broken :(

Interesting. I'm not sure what the issue is. I will have to test.

I've sort of had this on and off, retrying once or twice seems to sometimes fix it, but othertimes it will never work, tried on both Ubuntu 15.04 and 14.10, 15.04 hasn't worked once yet (admittedly haven't tried that many times) and 14.10 took a retry or two and then steamcmd would be found

http://www.garrysmod.com/2015/06/01/15-06-01/
If it's gmod related...
"Added measures against fake servers."
Are you using any kind of hack for installation ?
Because if i try a manual installation with steamcmd (at least on windows) it tells me that i need to be logged in and to own the game.  Otherwise a little update of your script containing some crappy lines :p
smt923: Which game are you installing ?

on 15.04 I was trying csgo, on 14.10 it's garry's mod
by fake servers that means specifically ones that were using modules or whatever else to fake player  numbers and have more than one copy of themselves, I don't think the lgsm scripts really modify steamcmd in anyway, just download it and access it, I don't think that'd be related to the gmod thing

You know "hack" can sometimes mean just "use something a different way that it was intended to"...  But if it doesn't work for CS GO neither with the same error, then it's for sure not related to GMod but more to an update of SteamCMD or of LGSM script.

./steamcmd.sh is not found. the script is now in the wrong dir when trying to install for some reason. This should be an easy fix when I'm home :-)

https://github.com/dgibbs64/linuxgsm/commit/02f29925588e092af62cb92ef738be20b3a4dafa

validating a server gives the same error in another function, I assume it's all part of the same issue just with functions that haven't been updated so hopefully reopening this issue is okay

[  OK  ] Validate gmod-server: Checking server filesloading fn_check_steamcmd...OK
loading fn_check_steamuser...OK
/home/steam/1gmod/functions/fn_validate: line 32: ./steamcmd.sh: No such file or directory

Good call thanks for spotting this. I will double check

I think I fixed this can it be confirmed so I can close

from what I can see it looks good, only tested the things I was having issues with before but I haven't ran into this error once,since then so it seems good

Awesome. Closing

Amazing !!! GG !


runtime: redirect in powershell creates utf-16 files

In #64210, @zephyrtronium wrote:

          > I'm also curious how you're collecting benchmark results such that they're in UTF-16LE.

If I run go test -short -bench . -count 6 >new.bench or go test -short -bench . -count 6 | Tee-Object tee.bench in PowerShell on Windows, the resulting file is encoded as UTF-16LE CRLF. Given "the runtime transparently reencodes UTF-8 as UTF-16," it sounds like that's working as intended.
If I pass those UTF-16 files directly into benchstat, it gives no output, since it expects UTF-8. If I re-encode them to UTF-8 with LF line endings, then:

benchstat new.bench tee.bench works as expected and prints correctly. I can copy manually from my terminal and the non-ASCII characters are preserved. Manually copying gets harder when there are more than a few benchmarks and several categories of metrics.
benchstat new.bench tee.bench >benchstat.bench again encodes as UTF-16LE, and it mangles non-ASCII characters pretty severely. E.g., │ becomes Γöé (93 03 f6 00 e9 00 per hexdump) and ± becomes ┬▒ (2c 25 92 25).
benchstat new.bench tee.bench | clip.exe puts a result in my clipboard which has a U+003F ? per byte of non-ASCII UTF-8. I lean toward calling that a clip.exe problem rather than a benchstat one, but it's still inconvenient.
benchstat new.bench tee.bench | clip.exe in a WSL2 terminal (and using benchstat built for Linux) copies text that reproduces the mangled characters from the Windows >benchstat.bench case.
benchstat new.bench tee.bench >benchstat.bench in WSL writes a file with the correct data, since it's end-to-end UTF-8.

(Hopefully this isn't getting too far off-topic. Let me know if I should open another issue.)
Originally posted by @zephyrtronium in https://github.com/golang/go/issues/64210#issuecomment-1873067826

It appears this is standard powershell and not Go:

cc @golang/runtime

FWIW, there is a new feature of PowerShell that greatly reduces the mangling that PowerShell does of pipes and redirects for native commands (such as Go binaries):
https://github.com/PowerShell/PowerShell/pull/17857
https://learn.microsoft.com/en-us/powershell/scripting/learn/experimental-features?view=powershell-7.4#psnativecommandpreservebytepipe
The interop between PowerShell and native binaries is all a bit cursed, but I suspect (hope?) that feature might address this issue. It was initially an experimental feature, but now is considered a "mainstream" feature as of PowerShell 7.4, I think.
I tried it just now in PowerShell 7.4.1 (released end of 2023), and it seemed to address at least the go test -short -bench . -count 6 >new.bench  portion of what @zephyrtronium reported, including I could see the Byte Order Mark and what looked to be UTF-16 encoding in hexdump -C after go test -bench . > old-ps.bench in an older version of PowerShell, vs. the output file looked correct using PowerShell 7.4.1...
...but it was just a quick test and would be nice for someone else to confirm.

I was recently made aware that powershell changed it's behavior:
https://github.com/PowerShell/PowerShell/issues/1908

In compiler/runtime triage, we're not sure if there's anything actionable here. Is there something we should be doing to workaround this? Or is this issue open just as a notice? Thanks.

Hi @zephyrtronium, are you able to confirm if the original problem you reported is resolved in  PowerShell 7.4?

Sorry, I've been meaning to get to this, but I haven't had access to my Windows PC for a while.

I finally found time to test with PowerShell 7.4.1.

PowerShell 7.4 seems to make output work identically between PowerShell and bash. I'd call that correct.
Given that Windows still ships with PowerShell 5.1, it's a bit inconvenient to have to install a new version to make this work when I don't otherwise need the upgrade. However, I can't say it matters very often to me, so the overall inconvenience is negligible.


Fix personal space cache config

The wrongly named config field prevented the cache for remembering which personal spaces were already created to be used, resulting in superfluous CreateStorageSpace calls during each request to the gateway.

@micbar we should back port this to stable5

yes, please!
@aduffeck do you mind.


fixed typos from #1606

Fixed #1606
@benmcmahon100 Is that the right way to link the issue? ^^

@Greenheart Yup take a look at the issue now!

@benmcmahon100 Ah, cool! :smiley:


Support generalization and related OCL-operations, such as OclAsType

Is your feature request related to a problem? Please describe.
It is an extension
Describe the solution you'd like
See our previous work on supporting generalizations and related OCL operations
Describe alternatives you've considered
Additional context

 Support generalization and related OCL-operations, such as OclAsType

Hi @manuelclavel ,
You can checkout the new branch dev-generalization.
In this branch, I attached a sample data-sciprt for mysql called: genDB.sql in the folder src/main/resources/sql-script.
Also, I attached the new conext model CarPerson_context.json in the folder src/main/resources/context-model.
Currently, it can support oclIsKindOf(type), oclIsTypeOf(type) and oclAsType(type). Here are some examples that I have tested:
Car::allInstances()
Automobile::allInstances()
Vehicle::allInstances()
Automobile::allInstances()->collect(au|au)
Automobile::allInstances()->collect(au|au.Vehicle:category)
Automobile::allInstances()->collect(au|au.Car:color)
Automobile::allInstances()->collect(au|au.oclIsTypeOf(Automobile))
Automobile::allInstances()->collect(au|au.oclIsTypeOf(Car))
Automobile::allInstances()->collect(au|au.oclIsTypeOf(Person))
Automobile::allInstances()->collect(au|au.oclIsTypeOf(Vehicle))
Automobile::allInstances()->collect(au|au.oclIsKindOf(Automobile))
Automobile::allInstances()->collect(au|au.oclIsKindOf(Car))
Automobile::allInstances()->collect(au|au.oclIsKindOf(Person))
Automobile::allInstances()->collect(au|au.oclIsKindOf(Vehicle))
Automobile::allInstances()->collect(au|au.oclAsType(Automobile))
Automobile::allInstances()->collect(au|au.oclAsType(Car))
Automobile::allInstances()->collect(au|au.oclAsType(Bus))
Automobile::allInstances()->collect(au|au.oclAsType(Person))
Automobile::allInstances()->collect(au|au.oclAsType(Vehicle))
Automobile::allInstances()->collect(au|au.oclAsType(Car).Car:color)
Automobile::allInstances()->collect(au|au.oclAsType(Car).Car:owners)


gen: sort dependencies

Dependencies in package.json will be sorted when a user use npm with --save.
So, package.json will be like after npm install --save mocha is run:
diff --git a/package.json b/package.json
index ddf6009..8127d63 100644
--- a/package.json
+++ b/package.json
@@ -6,12 +6,13 @@
     "start": "node ./bin/www"
   },
   "dependencies": {
-    "express": "~4.10.6",
     "body-parser": "~1.10.1",
     "cookie-parser": "~1.3.3",
-    "morgan": "~1.5.1",
-    "serve-favicon": "~2.2.0",
     "debug": "~2.1.1",
-    "jade": "~1.8.2"
+    "express": "~4.10.6",
+    "jade": "~1.8.2",
+    "mocha": "^2.1.0",
+    "morgan": "~1.5.1",
+    "serve-favicon": "~2.2.0"
   }

If generator generator the package.json with sorted dependencies.
it will be like after npm install --save mocha is run:
diff --git a/package.json b/package.json
index b2c6c18..8d6e23c 100644
--- a/package.json
+++ b/package.json
@@ -11,7 +11,8 @@
     "debug": "~2.1.1",
     "express": "~4.10.6",
     "jade": "~1.8.2",
+    "mocha": "^2.1.0",
     "morgan": "~1.5.1",
     "serve-favicon": "~2.2.0"
   }

There is no absolute guarantee that JSON.stringify will serialize object keys in the same order of insertion. If we what this to be a feature, we either need to write our JSON by hand (the approach mime-db takes) or use some module on npm that does it so we're not responsible for bugs from it.

How about sorted-object? Actually npm use it and I borrow my code from it.

I'm :+1: on just depending on sorted-object, especially if that's what npm is going to use to sort dependencies, which was the reason you wanted it :) Then they should always agree on the correct sort :)

@dougwilson Thank you for your feedback. I didn't know you like adding dependency or not. :) I will update PR

It's no problem, and definitely understandable :) In this case, I think a dep actually works out the best of all since npm is using it. It basically makes the PR technically become "sort dependencies the same as npm(1) does" :D

I added sorted-object. let me know if there are some problem or breaking convention.

Great, it looks good to me :) This will be part of the 4.11 generator release :)

Thanks. I altered your commit to add a test, so it can be considered a feature and doesn't break :)

Good!!


Add more OAuth providers

[ ] Google
[ ] LinkedIn
[ ] Microsoft
[ ] Facebook

Additionally, one should be able specify the required scopes for these providers.


Its space free not space used.

Who knew? Warning should be bigger than critical. Also tweak thresholds

@timmow


Can we have linkbased routing / deep linking and routeguard as a feature in the upcoming version?

I am working on an app for my college where I want to pass url parameters in Notification Details route let's say the messageID, and i did try a few other options like auto route but they didn't have much flexibility in having different scaffolds for different pages with persistent bottom navigation bar which made me switch to this package.
In my case I wish to send user to that particular notification with all the details on the on_click event which i guess would be possible with url parameters where i can pass the individual message id in the payload like notifications/notificationDetails:messageId, please correct me if I am wrong.
Also, it would be really grateful if you can point me to the right resource as I am still new to flutter and have a lot more to explore
As I already mentioned, I have tried go router and auto route but find them a bit complex when i wanted to have a different scaffold and persistent bottom navbar.
Also, route guard feature would be a great addition too.

Thanks for filing the issue. This feature is out of the scope of this package and there are no plans at this time to work on this issue. However, I will leave this issue open for further discussion.


FHIR Router

Coverage: 93.603% (-0.08%) from 93.681% when pulling 0a40cf7453c1f8942a977ae55fc7d08c4e7aeeef on cody-fhir-router into cc5fb482b8eea9c4f1a14291f7c35c2196355df6 on main.


Can't use multiple tabs on business central

Hi,
I'm having troubles opening a new tab in business central. When I click with the scroll wheel, a new tab is created but just keeps loading indefinitely. This happens on chrome, firefox and edge.
When i just click it opens fine, and the "open in a new window" feature works well.
Is this normal ? What could be causing this issue ?
Thanks

This is not related to extensibility of application. Please report this as a bug if required.


Updating to v4

Any change you might update this plugin for v4 of tweakpane?

not going to be around for actual development in the near future, but I will review PRs...


Fix bash completion

What does this PR change?
Fix bash completion
Test coverage

No tests

[x] DONE

Links
Issue(s): #

[x] DONE

Changelogs
Make sure the changelogs entries you are adding are compliant with https://github.com/uyuni-project/uyuni/wiki/Contributing#changelogs and https://github.com/uyuni-project/uyuni/wiki/Contributing#uyuni-projectuyuni-repository
If you don't need a changelog check, please mark this checkbox:

[ ] No changelog needed

If you uncheck the checkbox after the PR is created, you will need to re-run changelog_test (see below)
Before you merge
Check How to branch and merge properly!

closing it, changes cherry-picked here https://github.com/uyuni-project/uyuni-tools/pull/417


Backup stops when a VM is removed in the meantime

If you run the backup script for all VMs, the backup fails, if during the period of backing up, a VM is removed.
For me its ok, if that VM is not backed up, but currently the script executions ends with a 'NoneType' exception.
Case:
I have 22 VMs, and started a backup for all of them ( -a ), this takes on my system currently approx. 22 Hours. In the meantime someone else removed a test VM.
Log:
Jan 05 19:03:45: Start backup for: Gluu2-test
Jan 05 19:03:45: !!! Got unexpected exception: 'NoneType' object has no attribute 'snapshots'

That patch just test result of vms.get() whether it is None, which should prevent the issue described above.
On other hand I think there are more places where script can fail because of removed vm.
I didn't consider them in this patch ... please feel free to review it and put comments on the places which you find problematic ... and I can put it under consideration as well .


Add scheduling capability to Twilio

We want to add the ability to schedule message sends for a specific day and time

Added a simple scheduling ability to bulk sms and created #170 to support multiple variants programmatically


Parks obscuring addresses in coverage map

Pull park land use out of the reference overlay and put it in the base layer; it's wiping out whole counties in Vermont :smiley_cat:

Good catch. Have fixed the style; tiles are regenerating now.


New Folder Error Message Persists [#OSF-6778]

Purpose
Fix bug where new folder error persists if user clicks on OSF Storage immediately. Also fixed weird behavior where clicking inside the tb-tbody element but not on an actual file would deselect the currently selected file without dismissing the toolbar.

Changes
made sure that whenever a new folder is selected the error text clears.

Side effects
None

Ticket

https://openscience.atlassian.net/browse/OSF-6778

Looks good. 🎉 🐧 🎉


Kubelet server start failed - v1.10.0

In this PR, the --require-kubeconfig flag has been removed.
When I use these scripts to setup cluster with kubelet version 1.10.0, it will failed due to the unknown flag --require-kubeconfig.
After I removed this flag in the kubelet config file, it worked.

I created a PR at here https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster/pull/8

@pengisgood I think this a compatibility problem.

The kubelet can start now after removing this flag.


Release Google.Identity.AccessContextManager.V1 version 2.5.0

Changes in this release:
New features

Add IServiceCollection extension methods for client registration where an IServiceProvider is required. (commit 022fab2)

Created release for Google.Identity.AccessContextManager.V1-2.5.0


gerrit do not seem to work with Ubuntu 14.04

After installing gerrit on Ubuntu 14.04
It seems like gerrit does not work, it simply return (or terminate) when invoke from the command line with no information
For example:

gerrit config

(It doesn't prompt me for the configuration information)

Could you please include your version of Git and of Node?

The problem was caused by a very old version of node and npm. Updating node/npm fixed the problem.


Clarification on multiple protocol ports

Hi,
regarding this rule:
*.azure-devices.net	5671, 8883, 443	IoT Hub access
Is it enough to choose one port only in the Firewall as Edge will automatically try all of them?

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

ID: cf2368f4-6deb-ffb0-5e5a-eb73b5c7098e
Version Independent ID: c4d71d39-ebd9-da2b-251d-ca288bc733dc
Content: Prepare devices and deployments for production - Azure IoT Edge
Content Source: articles/iot-edge/production-checklist.md
Service: iot-edge
GitHub Login: @kgremban
Microsoft Alias: kgremban

@smoms Thanks for the feedback! We are currently investigating and will update you shortly.

Hi @smoms , the default protocol used by IoTEdge is AMQP, but you may want to change that depending on your network setup. Therefore on your proxy you will only need to open the port that your IoTEdge device is using as the upstream protocol.
Fyi: https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-protocols

MQTT - 8883
AMQP - 5671
HTTPS - 443

Thanks!

I read it more carefully and IoT Edge daemon makes intermittent HTTPS calls to IoT Hub. Therefore for *.azure-devices.net you will need to open port 443 and\or (8883 or 5671). If you use AMQP\MQTT over websockets then only port 443 needs to be open.

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Add TSDoc generation

Codecov Report

Merging #28 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #28   +/-   ##
=======================================
  Coverage   56.95%   56.95%
=======================================
  Files          37       37
  Lines         906      906
  Branches       89       89
=======================================
  Hits          516      516
  Misses        310      310
  Partials       80       80

Flag
Coverage Δ

#unittests
56.95% <ø> (ø)
: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 5e3a021...dbf894e. Read the comment docs.


Line endings can contain \r too

In unix / linux machines, you'r code would work perfectly, because they use \n only to indicate the end of a line in a text file
However, in Windows, you'll have \r\n (AKA. CR+LF or CRLF). This is the reason you neet the trim a few lines later I guess.
I advise you that in the split command you use a refex, that can handle both formats, like: .split(/\r?\n/).
This will break the string in all \n (LF), but will also remove \r (CR) characters too, making your job a bit easier down the line

I never really considered how tiny difference from each OS can become a major complication for when they run my program.
I'll remember this for the future


Replace some ReactDOMRe with equivalent ReactDOM apis

The ppx currently uses some APIs that are considered obsolete and have a proper equivalent in  ReactDOM / React:
In the source code:

ReactDOMRe.domRef -> ReactDOM.domRef (see this code)

In the docs:

ReactDOMRe.renderToElementWithId(
  <Dynamic color="#EB5757" background="#516CF0">
    {React.string("Hello!")}
  </Dynamic>,
  "app",
);

is equivalent to the modern version:
switch(ReactDOM.querySelector("#app")){
  | Some(root) => ReactDOM.render(<Dynamic color="#EB5757" background="#516CF0">
    {React.string("Hello!")}
  </Dynamic>, root)
  | None => () // do nothing
}

These changes should actually not break any code that is based on the latest reason-react version. It will also make it possible to migrate over to @rescript/react later on

Hey @ryyppy, Thanks for letting me know.
I wasn't aware of those deprecations, will release a fix with that.

This fix landed in master https://github.com/davesnx/styled-ppx/issues/164, are available on the 1.3.x nightly release and soon as a stable version.
Thanks for reporting it @ryyppy


Clone methods

I think you're right - it needs to be cloned on input so that modifications don't have any further effect.
This LGTM.
When you get the add/remove stuff in can you also add a test that demonstrates clones not being impacted when adding/removing to a progenitor?

When you get the add/remove stuff in can you also add a test that demonstrates clones not being impacted when adding/removing to a progenitor?

Sure can


Add wiki references to the docs

This Pull Request has been merged by GitConsensus.
Vote Totals

Yes
No
Abstain
Voters

3
0
0
3

Vote Breakdown

User
Yes
No
Abstain

tedivm
✔

ViezeVingertjes
✔

TheRealMaxion
✔

Vote Results

Criteria
Result

Has Quorum
True

Has Votes
True


InlineImage component should have cursor: pointer style when CMS is enabled

Summary
InlineImage component should have cursor: pointer style when CMS is enabled.
(Currently is only ever has the normal default cursor.)
The pointer cursor indicates to the user that clicking it will trigger some action.
In this case that action is opening a Media Manager dialog.
Motivation
I did my first introduction/training of a TinaCMS application to a person, and got to observe them exploring the editing interface. I noticed more than once when he was just trying to move the focus from an InlineText back to the inline block, he clicked an InlineImage, unintentionally opening the Media Manager dialog.
I noticed that even I make this mistake (opening the opening the Media Manager dialog by accident) because the image is fit within the image element, and the actual area of the block which can be clicked to select the block is narrow.
Besides that, with the pointer cursor it actually cues the user who's exploring the interface that they found some kind of action or control.
A good first issue I think.
I may make a PR myself if I get around to it.

We all been there, I would prefer an overlay on the image with some default actions to avoid default upload.

We all been there, I would prefer an overlay on the image with some default actions to avoid default upload.


N+1 query problem

Original issue by ghost on Tue Apr 01 2014 at 09:11.
Closed by an unknown user on Thu Apr 10 2014 at 09:01.

and don't query if you don't need to
Original comment by @bmesuere on Tue Apr 01 2014 at 09:24.

This should be fixed in numerous commits (there's not really one which closes this).
Original comment by ghost on Thu Apr 10 2014 at 09:01.


Add Custom Field in Role

I have added customer field in role
public class UserIdentityRole : IdentityRole 	{ 		public bool isPredefined { get; set; } 	}
in GetRoleAsync() Function I did not get isPredefined column and value
How to get the isPredefined column in GetRoleAsync() Function

Hi @elavanya
Did you create the db migration?
Do you want to use this new field in form as well - or is it something internal flag?
Thanks

yes i done migration, want to get column name in GetRoleAsync()

Do you use project installed from template or full fork?

full

i have admin. adminApi, adminEntitiyFrameworkShared, STSIdentity

OK, if you have full clone of this project, you can easily add this column into:
UserIdentityRole and RoleDto.
Then you can add this new field into form - Role.cshtml.
You need update method UpdateRoleAsync in IdentityRepository - because there is manual mapping of properties. This is by the way place where I need add automatical mapping via Automapper, but for your use case is fine.

Please, check this commit - https://github.com/skoruba/IdentityServer4.Admin/commit/e8185817a4a4a1c05cb7e2280841ff1807063745 - I added automatical mapping via automapper.
In this place is currently manual mapping like this:
https://github.com/skoruba/IdentityServer4.Admin/blob/master/src/Skoruba.IdentityServer4.Admin.EntityFramework.Identity/Repositories/IdentityRepository.cs#L151

Sorry I installed from template
I cant edit UserIdentityRole and RoleDto

OK, for template I have to write some guide and merge issue mapping above. :)

ok

Fixed in master, thanks


minor fixes to documentation and openshift-sdn-kube-subnet-setup.sh

PR #75 Reborn
Just fixed the conflicts. Credit @thom311.

@mrunalp Review and merge please.

LGTM


CanScrollPrev and CanScrollNext not returning proper value with dragFree and slidesToScroll

Bug is related to

[x] embla-carousel (core package)

Embla Carousel version

v8.0.0-rc14

Describe the bug
@davidjerleke First of all thanks for creating such an awesome library and the documentation.
When I have dragFree and slideToScroll option set to { align: 'start', dragFree: true, slidesToScroll: 'auto' }, canScrollPrev and canScrollNext not returning the expected value. In below given sandbox, more than half of the first slide is not visible but canScrollPrev returns false.
CodeSandbox
The link to a CodeSandbox that demonstrates the behavior clearly
Steps to reproduce

Create a carousel with { align: 'start', dragFree: true, slidesToScroll: 'auto' }
Drag little bit till half of first slide moves to left(basically hidden), you will notice the previous button not being enabled

Expected behavior
canScrollPrev and canScrollNext should return true till first and last slide completely visible
Additional context

Hi @suriyaprakash-s,
Thank you for your bug report. This might initially come as a surprise but it's actually expected behaviour. Embla doesn't treat slides as masters. Instead snap points are masters over slides. And when using any other value than the default for slidesToScroll, slides will be grouped so each snap can include one or more slides. In your specific case, the following groups will act as artificial slides:

Artificial slide 1: Includes slides 1 and 2.
Artificial slide 2: Includes slides 3 and 4.
Artificial slide 3: Includes slide 5.

Please check this modified sandbox to understand it better.
⚠ Note that I didn't have time to make the sandbox demonstration dynamic so if you change slide sizes and stuff the demonstration will break. But keep in mind it's just a demonstration. However, if you want to check which slides belong to which group, you can just log:
console.log(emblaApi.internalEngine().slideRegistry);

Best,
David

@davidjerleke Thanks for the detailed input, is there any way I can handle this case?

@suriyaprakash-s what do you mean by:

is there any way I can handle this case?

What do you want to achieve?
Best,
David

@davidjerleke I want to disable the buttons only when the first/last slide completely visible. I understand the library build based on snap points when slidesToScroll   set to non default values, if there is a way to achieve it by adding some event callback or something I would really appreciate it.

@davidjerleke I want to disable the buttons only when the first/last slide completely visible. I understand the library build based on snap points when slidesToScroll  set to non default values, if there is a way to achieve it by adding some event callback or something I would really appreciate it.

@suriyaprakash-s do you mean like this?

@davidjerleke Thanks for the demo, it does the job. Since it is achieved by the pointerUp event, there is a catch here. If the user scrolls past 2-3 cards without releasing the pointer, then the button still stays disabled. It might be an edge case, so if there is no better solution, we can stick to the above one. The ideal expectation is that the button should be disabled only when the first/last card completely visible, whatever state the carousel is in (settled or scrolling).

@suriyaprakash-s I made it "lazy" on purpose. If you want the buttons to react immediately as the user scrolls, you can just listen to the scroll event instead. But bear in mind that this will be more intense for the browser to handle because the scroll event fires very often.

@davidjerleke Ya that's the problem with scroll, what you think about using sildesInView with inViewThreshold: 0.98 ?

@suriyaprakash-s sure. That's one way to solve it.


prsasm.c:138:PrsAsmPunct "unexpected character"

Windows Ubuntu WSL: prsasm.c:138:PrsAsmPunct        line 10: Unexpected character, caused by the loggerpanic() macro. Any fix?

Hmm. I've re-compiled the compiler on the main branch which in turn compiles ~4,000 lines of holyc with assembly and run the tests of which indicate no compiler errors linked with this message. Please correct me if wrong.
The error messages are, sadly for the moment, quite unfriendly and not terribly readable as it does not report the file name in which the error occurred. In this instance I believe the error is that you have a syntax error on line 10 inside and asm block, looking at the PrsAsmPunct() function shows that the offending character should have been printed along with this error message. If you are able to share your code I'm happy to have a look.

I'm going to mark this as closed. If the issue persists please create another ticket and we can dive into it!


fix: Return the Nodes found by Keywords when No relationship is found…

… by embeddings in Hybrid retriever_mode
Description
I was using the KnowledgeGraphIndex in recent days. With hybrid retriever_mode in index.as_query_engine() when "No Relationship is found" by embeddings search, the nodes found by the keyword search are not returned.
This was commented but the code was not in such way.
So just added an else case and returned the nodes found by Keyword search when no nodes are found in Embedding search.
Fixes # (issue)
Type of Change
Please delete options that are not relevant.

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration
-Tested the code with the custom Knowledge Graph that I have created.
Steps to reproduce the issue

Have a custom Knowledge Graph and create an index either with SimpleGraphStore or NebulaGraphStore
Configure the retriever_mode as hybrid
Now ask a query which fetched the relevant triplet with keyword search and not with embedding search
"No Relationship found" will be the response but the Nodes identified from the "Keyword" search is not returned.
It is already commented to return the Nodes found by Keywords but not returned
So I have just added an else case and returned accordingly

Hope this saved your time :-)
Suggested Checklist:

I have performed a self-review of my own code
I have commented my code, particularly in hard-to-understand areas
I have made corresponding changes to the documentation
My changes generate no new warnings
I have added tests that prove my fix is effective or that my feature works

Thankyou for your reply @nerdai !
I have updated the code to fix lint issues, basically else case is not necessary where if returns an response then also made my comment line as multiple line as the number of characters where >79.
Made an entry to the Bugfix in CHANGELOG.md file.

Updated the changes requested and also removed the Tailing whitespace lint error in the modified piece of code.

Hi @nerdai , Sorry for the confusion. The lint error was with the indentation of return statement. Now that I have updated it w.r.t to the format in main branch.

Hi @nerdai , Extremely sorry for the confusion!
Now that I have understood linter in a better way and also made a fix.
Tested the same locally and every linter check in formatting is passed.

Looking forward to contribute more!

I have rebased the branch to avoid merge conflicts :-)


Update to Squirrel.Windows 0.8.0 (squirrel/squirrel.windows@9a06fb7)

Does what it says on the tin. This PR also adds the grunt option to add an icon to the generated Setup.exe.
Release Notes - the biggest changes relevant to Atom is that we fix the memory usage during install, and we also fix silent mode

Thanks :shipit:

Published in 0.18


03/05 small bugs

"Target HRH utilization" autoformat not reliable, change to use (%) for simplification.
Display: vertical height. The bottom buttons are blocked by banner. Need to fix window size when deployed.
Show results -> "Print PDF of Summary Plots" -> hide green button when processing.
Show results -> "Print PDF of Summary Plots" -> seasonality plots are not printed, need to remove "plotly"

Change to %
add margin-bottom to make sure the button div has room for footer
use shinyjs::hide when user click download
seasonality is printed in pdf now


Update capitalization for non-Windows systems

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


Start animation when marker is detected?

Hello,
I have loaded a GLTF animation and it works perfectly, the problem is that the animation starts automatically (hidden) when the page is loaded. Is it possible to start the animation only when the marker is detected?.
Is there any way to control it using the animation-mixer component for example?
Thanks!
url:https://tocapixels.com/lab/ar/
Works with "Hiro" marker: https://jeromeetienne.github.io/AR.js/data/images/HIRO.jpg
Code:
<html>
	 <script src="https://aframe.io/releases/0.7.0/aframe.js"></script>
         <script src="https://rawgit.com/donmccurdy/aframe-extras/master/dist/aframe-extras.loaders.min.js"></script>
<body style='margin : 0px; overflow: hidden;'>
  <a-scene embedded arjs='sourceType: webcam; debugUIEnabled: false;' >
    <a-marker preset="hiro">
			 <a-entity
      id="drone"
      position="0 0 -1"
      scale="1 1 1"
      gltf-model-next="src: url(https://tocapixels.com/lab/ar/models/busterDrone.gltf);"
animation-mixer="clip: BusterDrone; loop:once"
>
</a-entity>
    </a-marker>
	</a-scene>
</body>
</html>

Hi — I assume the <a-marker/> emits some sort of event when it is scanned? If not, I would check in with ARJS because it would be helpful for that to happen. Assuming there is an event, you can make a custom component to start animation on queue:
AFRAME.registerComponent('play-on-scan', {
  init: function () {
    var el = this.el;
    el.addEventListener('markerscanned-or-something', function () {
      el.setAttribute('animation-mixer', {clip: '*', loop: 'once'});
    });
  }
});

Hi
Thank you very much for your prompt response. I'm afraid I'm not an expert in javascript, could you please tell me how I applied this in the html code?
Thanks again

I opened an issue for you (https://github.com/jeromeetienne/AR.js/issues/217) asking whether there is in fact an event to use.
I would read the introduction to JavaScript+A-Frame first, but basically you need to put that JS code inside of a <script>...</script> tag somewhere after the A-Frame script and before the <a-scene> element.

Thanks again, that's what the code looks like now.
 <html>
	<script src="https://aframe.io/releases/0.7.0/aframe.js"></script>
    <script src="https://rawgit.com/donmccurdy/aframe-extras/master/dist/aframe-extras.loaders.min.js"></script>
	<script src="js/aframe-ar.js"></script>

    <script src="https://cdn.rawgit.com/mrdoob/three.js/r85/examples/js/loaders/GLTF2Loader.js"></script>
        <script>
		AFRAME.registerComponent('play-on-scan', {
  init: function () {
    var el = this.el;
    el.addEventListener('markerscanned-or-something', function () {
      el.setAttribute('animation-mixer', {clip: '*', loop: 'once'});
    });
  }
});

</script>

	<body style='margin : 0px; overflow: hidden;'>
  <a-scene embedded arjs='sourceType: webcam; debugUIEnabled: false;' >
    <a-marker preset="hiro">
			 <a-entity
      id="drone"

      scale="1 1 1"
      gltf-model-next="src: url(https://tocapixels.com/lab/ar/models/busterDrone.gltf);"
play-on-scan="clip: BusterDrone"
>
</a-entity>
    </a-marker>
    <a-entity camera>
			<a-entity
					position="0 0 -1">
			</a-entity>
    </a-entity>
  	</a-scene>
	</body>
</html>

Now the animation is frozen.

That looks right except for two things:

No need to include the GLTF2Loader.js script.
markerscanned-or-something is not the actual event that indicates when a marker is scanned. In the issue I linked to above I've asked what that should be, and it will not be possible to do this until that is answered.

OK, i understand. Thank you again for your support and help.

Hi Again,
In this app:
https://webxr.io/webar-playground/app/
There is a spinner scanning that hides when the marker is find.
I have seen in code that main.js in lines 150 to 155 control this.
//////////////////////////////////////////////////////////////////////////////
//		honor scanningSpinner visibility
//////////////////////////////////////////////////////////////////////////////

onRenderFcts.push(function(){
	var domElement = document.querySelector('.spinnerScanning')
	var markerFound = arAnchor.object3d.visible
	domElement.style.display = (markerFound === true ? 'none' : '')
})

would it be possible to apply it in some way to start the animation?
Regards

Hi @tocapixels I had the same issue, having a look at aframe-ar.js itself, you can search
for if( _this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix' ){ 			_this.el.object3D.visible = this._arAnchor.object3d.visible;
and there put you own hook, I did
if(_this.el.object3D.visible) { 	this.el.emit('markerFound'); }
and then use the code provided by @donmccurdy
AFRAME.registerComponent('play-on-scan', { 	  init: function () { 	    var el = this.el; 	    el.sceneEl.addEventListener('markerFound', function () { 	      // el.setAttribute('animation-mixer', {clip: '*', loop: 'once'}); 	      el.emit('ar-ready'); 	    }); 	  } 	});

^That looks like a good solution. I would recommend opening a PR on AR.js to add that markerFound event to the official project.

Could you please confirm does it works? I want to attach a sound when the marker is detected
***** in aframe-ar.js added the Noko-Noko code suggested *****
           if( _this._arAnchor.parameters.changeMatrixMode === 'modelViewMatrix' ){
		_this.el.object3D.visible = this._arAnchor.object3d.visible

++			if(_this.el.object3D.visible) { this.el.emit('markerFound'); }
}else if( _this._arAnchor.parameters.changeMatrixMode === 'cameraTransformMatrix' ){
_this.el.sceneEl.object3D.visible = this._arAnchor.object3d.visible
}else console.assert(false)
****  ******

**** ******

If the change to aframe-ar.js is accepted, or you make a patched version, then that will work yes. You need to add the AFRAME.registerComponent... script after the A-Frame script but before the scene itself.


Creating a private playlist doesn't work, it is always public

Thanks for your work making this package. It's super useful.
I'm creating a playlist with this endpoint:
createPlaylist(
    for userURI: SpotifyURIConvertible,
    _ playlistDetails: PlaylistDetails
)

and setting isPublic to false in PlaylistDetails. The scopes I have authorized are:
[
    .playlistModifyPrivate,
    .playlistModifyPublic,
]

The playlist creation succeeds, but it is a public playlist. Any help would be appreciated if you've ran into this before or are able to repro.

Provide a minimum reproducible example.

Looks like this is an issue on Spotify's end. Post about it here.


Does not handle multi-turn QnA Maker correctly

When connected to a multi-turn QnA Maker KB, the prompts that follow a question are not rendered correctly in the interface, most likely because multi-turn did not exist at the time this was built.

Implemented this as it is a GREAT solution, however dashed that it doesn't worth with multi-turn questions... Makes us have to choose one or the other as a solution. Any chance this can get remedied?


Failed to update and upgrade APT

Hey, unfortunately I got this error running the Chrome and UndetectedChrome driver, I used the same code in the previous days without any issues, so I don't know if something changed from yesterday.

Hello, thanks for using my project! It looks like the example notebook in the README.md works correctly. Would you mind sending me a notebook recreating the issue that you're encountering?


⚠ SceneTime has degraded performance

In 1030f83, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 18641 ms

Resolved: SceneTime performance has improved in 58bb5ce after 10 minutes.


Electron use without @electron/remote?

I'm wondering if there's a way to use this package without the @electron/remote module. I like that you've removed it as a dependency, however, how would you use custom-titlebar without @electron/remote?
Looking at custom-electron-titlebar (@treverix's fork is my favorite), it seems like remote is used primarily for 3 things:

remote.Menu.getApplicationMenu() - to get the current state of the menu
remote.getCurrentWindow() - to be able to call methods (such as currentWindow.close())
menuItem.click() - to execute the actual click of a menu item

I wonder if all of this could be converted to IPC calls.
Unfortunately, there's not an easy way to send the result of Menu.getApplicationMenu() (nor a Menu template) over IPC because these objects contain methods and functions which won't clone under the structuredClone() that Electron's IPC uses. But it might be possible to strip these out and swap, for instance, something like:
{
  label: 'Close Window',
  click: () => { win.close() }
}

would be converted to a clone-able IPC send:
{
  label: 'Close Window',
  clickable: true
}

and then the renderer would treat it like this:
{
  label: 'Close Window',
  ipcClick: (menuItemIdentifier) => { ipcRenderer.send('menu-item-click, menuItemIdentifier)
}

It appears that the result of Menu.getApplicationMenu() assigns a (unique?) commandId property (a number) to each MenuItem. Maybe this could be used as the menu item identifier for sending click events over IPC?
Sorry, I'm just thinking out loud here. I realize all of this is beyond the scope of this project. However, maybe there's another project called something like custom-titlebar-handler which uses your rendering code, but handles the IPC communication between the main process and rendering windows.
I'm sure there are issues I haven't considered here. But I just wanted to put this thought out there for anyone interested.

Thanks. However, doesn't this example still use @electron/remote?
https://github.com/6c65726f79/custom-titlebar/wiki/Advanced-examples#use-without-electronremote
I've been working on an updated version. It successfully sends the Menu system to the renderer. It successfully finds the MenuItem via the item's commandId value. However, on the Mac at least, menuItem.click() doesn't work on most menu items.
Here's the new version... with the broken .click()s
https://gist.github.com/ed709c87864dd46ef111cd13ed87f265

No, it's only the second example that uses @electron/remote, but it could be adapted to work without.
Ok so the problem isn't totally solved... That weird because custom-electron-titlebar calls the click method only with the three parameters I mentioned before, and I think it works on Mac. Unfortunately I don't have an Apple device to test it. Can you try with the code I wrote in the Wiki and tell me if works?
Otherwise, the best solution would be to use the default menu bar of the system on Mac. The hideMenuOnDarwin option of my package is set to true by default because it would redundant to have the menu in the title bar and in the system menu bar.
Another problem I encountered is getting the default accelerators for the roles because the getDefaultRoleAccelerator method is stripped. As a workaround I've included the default accelerators in the package, but it's not a perfect solution if these accelerators change in a future update of Electron. I'll work on a better solution as soon a I can.

@jjeff @6c65726f79 any update on this? Were you able to make it work?

@jjeff @6c65726f79 any update on this? Were you able to make it work?

I gave up and went back to native menus. 😕

That being said, I did find a way to pass Electron's application menu between processes in a relatively clean way… Here's the code I'm using in my electron-playwright-helpers library. However, IIRC the accelerator value doesn't show up in the final result. Another way of passing the menu system from main to renderer would be JSON.parse(JSON.stringify(Menu.getApplicationMenu())) but that may have problems of its own.


use varints for error codes

Fixes #1946.

Codecov Report

Merging #1953 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1953      +/-   ##
==========================================
- Coverage   85.89%   85.89%   -<.01%
==========================================
  Files          98       98
  Lines        6869     6868       -1
==========================================
- Hits         5900     5899       -1
  Misses        705      705
  Partials      264      264

Impacted Files
Coverage Δ

internal/qerr/error_codes.go
100% <ø> (ø)
:arrow_up:

internal/protocol/protocol.go
100% <ø> (ø)
:arrow_up:

internal/wire/reset_stream_frame.go
100% <100%> (ø)
:arrow_up:

internal/wire/connection_close_frame.go
94.87% <100%> (ø)
: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 2225bfd...1f4e63a. Read the comment docs.

Codecov Report

Merging #1953 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1953      +/-   ##
==========================================
- Coverage   85.89%   85.89%   -<.01%
==========================================
  Files          98       98
  Lines        6869     6868       -1
==========================================
- Hits         5900     5899       -1
  Misses        705      705
  Partials      264      264

Impacted Files
Coverage Δ

internal/qerr/error_codes.go
100% <ø> (ø)
:arrow_up:

internal/protocol/protocol.go
100% <ø> (ø)
:arrow_up:

internal/wire/reset_stream_frame.go
100% <100%> (ø)
:arrow_up:

internal/wire/connection_close_frame.go
94.87% <100%> (ø)
: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 2225bfd...1f4e63a. Read the comment docs.


How often does the Consul client go to the registry to get a list of available services?

I want to know how long the Consul client in the application gets the service list. Can this interval be adjusted?
I see the spring.cloud.consul.discovery.healthCheckInterval parameter, is it?

The interval is determined by ribbon. Ask again later if you haven't found the right property

I want to know the interval between the consular client requesting the consular agent service.

Closing due to age of the question. If you would like us to look at this issue, please comment and we will look at re-opening the issue.


how can i get the stream as a  blob after i have stopped sharing my screen.

Hey @siddhant-reactgeeks as its design, it won't give you the actual blob object, just the url. Not that it's difficult, but why the need for blob?

Hi @0x006F I had the same problem and I need to upload the recorded file to the server. Please help me out

hello @0x006F  and @gvnramu you guys just need to do this:
  const blob = await fetch(mediaBlobUrl).then((r) => r.blob());
this will give you the blob for the video which you can upload easily

Hey @siddhant-reactgeeks as its design, it won't give you the actual blob object, just the url. Not that it's difficult, but why the need for blob?

hello there just wanted to upload that video that's why


Introduce JERRY_UNUSED() instead of attr_unused_

JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély<EMAIL_ADDRESS>

I like this patch and I think it is close to ready

LGTM

LGTM


[Issue  #113] Check if key surface is present in assigns

Let me know if I misundestood this issue. But it seems that if assigns change there might not be _surface_ around the second time.

@edgarmiadzieles thanks! ❤


A simplification rule to deal with products of pi and a fraction

Hi,
I wanted to use \simplfy[collectNumbers,fractionNumbers] to get nice answers like pi/3
when I came across this. Numbas sometimes think that e and pi are rational numbers
that should be simplified as part of the fraction and sometimes not.
If you define a variable a = 1/3, then pi_a gives a fraction while pi_1/3 does not. See:
https://numbas.mathcentre.ac.uk/question/13476/simplify-collectnumbers-and-fractionnumbers/

The collectNumbers rule only collects together addition, subtraction and multiplication of numbers - not division.
When you write pi*{1/3}, the {1/3} is evaluated to the decimal 0.3333333333..., which collectNumbers will multiply by pi. Once it's done that, the code to pick out factors of pi only looks for integer multiples, so it just gives the rational approximation 355/339 instead.
However, pi*1/3 is only simplified to pi/3 - it doesn't do the division. That's why, in your example e*2/3, the e*2 is collected together, and then the code doesn't look for multiples of e so you get (5442/1001)/3.
I'm not sure what to do about this. I'm wary of expanding the "pick out factors of pi" code to look for fractions, because it'll make false positives much more likely. Maybe I could add a new rule called something like fractionPi which spots numbers of the form {pi*a/b}, where b is small, and rewrites them as {pi*a}/b.

OK, thanks. I see now that is was my expectations that were faulty.
A workaround is then to protect pi with division. With b=6 and c=2
I can get pi/3 by using: {pi/{b/c}}

I don't think this is worth doing - it'd be too unpredictable.


Setting TreeView.badge to undefined no longer removes the badge

Type: Bug
I think this is a regression caused by #205589.
I will provide a repro and a PR.
VS Code version: Code 1.88.1 (e170252f762678dec6ca2cc69aba1570769a5d39, 2024-04-10T17:41:02.734Z)
OS version: Windows_NT x64 10.0.22631
Modes:
Remote OS version: Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2
Remote OS version: Linux x64 <IP_ADDRESS>-microsoft-standard-WSL2

Repro:

Clone https://github.com/gjsjohnmurray/vscode-extension-samples.git and checkout the show-210640 branch
Open the tree-view-sample folder in VS Code, then build and run the extension as per README.md
From Extension Host's Command Palette run Test View: Change Title which the extension contributes.
When prompted, enter a title, e.g. Hello
Observe that a badge gets added to the Explorer icon in Activity Bar, and the TEST VIEW header in that view container gets a new title.
Rerun the command, and this time leave the field empty.
Observe that the view title resets to TEST VIEW ✅ but the badge is not cleared :bug:

I don't see a badge being added to the Explorer view on Test View: Change Title

@aeschli are you certain you're on the show-210640 branch?

Oh, sorry, you are right.
Now all works.