Debian Packaging

Obviously, you do not want to merge this as-is because of the changes to travis.yml. This PR is just so we can discuss the changes for now.
Most everything lives in the debian/ folder, so no problems there. The question is how to fit it in with your release.

Will you be hosting the package on your own bintray account?
Do you want the debian package to be built as part of the travis build?
If this is merged, then I would expect the package maintainer to change to resin.io and that the debian changelog is updated by an etcher maintainer as part of the release.

Or, if you would like me to take more responsibility, I can continue to maintain the debian packaging the way I have it setup now.
Related: #632

This looks really good, amazing work! The way it works at the moment is that you're just hosting the .deb packages in bintray, which should be manually downloaded and installed with dpkg, right? I guess the ideal approach would be to host a PPA at Launchpad, or would that lock us to just Ubuntu?
I propose the following, but let me know your thoughts:
Lets find a way to merge this to the main Etcher repository and build and publish to a Resin.io/Etcher Launchpad account on Travis, but still have you listed as the official maintainer of the package.
Also, do you think this package would be acceptable for submission to official Debian/Ubuntu repositories? If not, what would be needed from Etcher/Electron side?

The way it works at the moment is that you're just hosting the .deb packages in bintray, which should be manually downloaded and installed with dpkg, right?

No, bintray generates debian archive metadata, so you can use it as a PPA. See https://github.com/dlech/etcher/wiki

guess the ideal approach would be to host a PPA at Launchpad, or would that lock us to just Ubuntu?

Since the package is build for one distro, it would be the same as I have it now - users would just install the precise version no matter what distro they actually use. However, in order to use Launchpad, you have to upload a source package only. They do not allow the upload of binary packages. The source package is then built by Launchpad build servers. These build servers do now allow an Internet connection during build! So in order to make this work with Launchpad, the "source" package would have to include the electron package already completely built.
So really, I don't see any difference between hosting on bintray or launchpad.

Lets find a way to merge this to the main Etcher repository (so it gets official support and resources) and build and publish to a Resin.io/Etcher Launchpad account on Travis, but still have you listed as the official maintainer of the package.

OK

Also, do you think this package would be acceptable for submission to official Debian/Ubuntu repositories?

I highly doubt it. Debian has a strict policy of building everything from source. No binaries are allowed in source packages. There is also a policy of not statically linking executables. Maybe there is some chance of it being included in the nonfree section of debian. I'm not sure what exceptions to the policy are tolerated there.

If not, what would be needed from Etcher/Electron side?

Here is the debian bug to get the atom text editor in debian. Basically, every node package dependency of the whole build stack needs to be packaged. Only a small percentage of these are already packaged and some may not be the right version. Then every bower dependency will need to be packaged as well. Then you can finally start thinking about an official debian package.

I have a few of the issues worked out. Some questions:

Package names: Since you plan on having both a graphical and command line version, what should the package names be? I am using etcher for graphical version since that is probably what most people will install. So etcher-cli can be the command line version.
Executable names: along the same lines, we can't have the same executable name for both the graphical and command line versions. I think using etcher for the command line version makes the most sense since it will by typed the most. I am using etcher-ui for the graphical version. However, these are at odds with the package names.
Launchpad or Bintray: If you want to do Launchpad, I will have to figure out a way to create a "source" package to upload. If you go with bintray, then you can actually use anything you like for the distribution name. For example, you could call the distribution "etcher". I think this might reduce confusion so that people don't think the package only works on precise. Also, I don't think you can change the component on Launchpad. So if you want a beta channel, it would require two ppas, whereas on bintray, you can have a "main" component and a "beta" component.
Icon name: one thing you may have not noticed is that I changed the name of an icon file in the assets/ folder. This probably breaks the appimage build. If we can change the name without breaking stuff, great. If not I will have to find another way to make it work.

Package names: Since you plan on having both a graphical and command line version, what should the package names be? I am using etcher for graphical version since that is probably what most people will install. So etcher-cli can be the command line version.
Executable names: along the same lines, we can't have the same executable name for both the graphical and command line versions. I think using etcher for the command line version makes the most sense since it will by typed the most. I am using etcher-ui for the graphical version. However, these are at odds with the package names.

Hm, are you aware of any Linux application which faces the same issue (they have both GUI and CLI executables)? How do they solve it?

Launchpad or Bintray: If you want to do Launchpad, I will have to figure out a way to create a "source" package to upload. If you go with bintray, then you can actually use anything you like for the distribution name. For example, you could call the distribution "etcher". I think this might reduce confusion so that people don't think the package only works on precise. Also, I don't think you can change the component on Launchpad. So if you want a beta channel, it would require two ppas, whereas on bintray, you can have a "main" component and a "beta" component.

Got it, lets go with Bintray in that case.

Icon name: one thing you may have not noticed is that I changed the name of an icon file in the assets/ folder. This probably breaks the appimage build. If we can change the name without breaking stuff, great. If not I will have to find another way to make it work.

Happy to make such change! Can you send a separate PR for this, and rebase this once its merged afterwards?

I noticed there are some files that are duplicated inside debian/, like the LICENSE. Could we copy LICENSE during the building phase instead of committing a copy? I guess debian/ could be an skeleton, but the complete directory is put together by a script on a temporary location.
Also, I see some debian packaging specific commands in .travis.yml, like quilt, debuild, etc. Can we move everything specific to debian package generator as a new debian command in ./scripts/build/linux.sh? I guess you can also check if the command equals debian and conditionally omit the upx portions to avoid having to maintain patches. What do you think?
I don't like the create-bintray-json.sh script very much, and the fact that is not very clear how to publish to Bintray outside of Travis CI (lets say for whatever reason I need to do it myself).
Can we create a new script in (maybe at scripts/publish-bintray.sh, and rename the current scripts/publish.sh to scripts/publish-aws.sh, or even better, extend the existing script to accept bintray or aws commands) and put all the logic to reliably publish to Bintray there, and make Travis CI just call that script? Would this eradicate the need for a bintray.json?

Hm, are you aware of any Linux application which faces the same issue (they have both GUI and CLI executables)? How do they solve it?

All of the ones I can think of off hand are a little different since they involve a daemon so there is usually something like foo-applet for a tray icon and fooctl for a command line application. The other ones I can think of have a completely different name and are described as "graphical front end for foo".
I guess I will have to do some more digging to see if I can come up with anything.

I noticed there are some files that are duplicated inside debian/, like the LICENSE. Could we copy LICENSE during the building phase instead of committing a copy? I guess debian/ could be an skeleton, but the complete directory is put together by a script on a temporary location.

It is rather unconventional, but I suppose we could do something like this. Most of the time the debian packaging exists separate from upstream, so I am used to this duplication.
The license is copied because the debian/copyright file is in a special machine-readable format, so it is not an exact copy. The .desktop file is copied as well, but again, it is not an exact copy - it is configured exactly for the debian package.

Can we move everything specific to debian package generator as a new debian command in ./scripts/build/linux.sh?

Sure.

@alexandrosm Any thoughts here?
The etcher-ui name is not that bad, but UI stands for "user interface", and of course both the CLI and the GUI have user interfaces. etcher-gui might be better. Alternatively, we can follow what other Linux applications do by noting the GUI technology as part of the executable name (think kdesudo for sudo), and do something like etcher-electron, which also opens the possibility of creating a non-electron GUI in the future without having to be concerned about naming again.

I guess you can also check if the command equals debian and conditionally omit the upx portions to avoid having to maintain patches. What do you think?

The current patches are the same as #737, so if you merge that, they will be dropped from debian/patches.

I don't like the create-bintray-json.sh script very much, and the fact that is not very clear how to publish to Bintray outside of Travis CI (lets say for whatever reason I need to do it myself).

Why not? :smiley:
It is easy to construct a curl command to upload, so you don't need to rely on the travis magic. See https://bintray.com/docs/api/#_debian_upload.
You can also manually upload files to bintray using the website, so no problems there.

Can we create a new script in (maybe at scripts/publish-bintray.sh, and rename the current scripts/publish.sh to scripts/publish-aws.sh, or even better, extend the existing script to accept bintray or aws commands) and put all the logic to reliably publish to Bintray there, and make Travis CI just call that script? Would this eradicate the need for a bintray.json?

Yes, we can do this. And yes, we can do it without bintray.json.

@dlech I see. I vote to create a publishing script and calling it from Travis CI instead of relying on Travis CI releasing magic, since we'll be extended the Travis CI builds to actually produce and publish AppImages and DMGs, so having a single script entry point will ease that transition when the time comes.

I also found debian-electron-installer. I don't particularly like it as a matter of personal preference, but if you want to automatically generate the info in the debian/ folder, this seems like the way to go.

@dlech Can we do something like this in the build script?
mkdir -p etcher-release
cp -rf debian etcher-release/debian
cp LICENSE etcher-release/debian/LICENSE
# Build .deb based on etcher-release/debian

You could, but there are easier ways to get the same result.

I'm happy with both. Is not a big deal in any case, just trying to avoid duplication if its easy to do so.

Closing in favor of #747


fp16 fixes

In AMP fp16 mode, overflow issues were observed in several places in the network.  To address this, those regions are now converted back to fp32. This change does not introduce significant performance cost which offsets the benefits of mixed precision training. We also disallow the use of memory efficient kernel (use_memory_efficient_kernel=false) in AMP fp16 mode explicitly.
It worth mentioning the debugging tool developed at huggingface for detecting overflow issue: https://huggingface.co/docs/transformers/v4.14.1/en/debugging

Thanks!


Relation to FIt-SNE?

How is this related or how does it compare to FIt-SNE on which you have also done work?

Hi, sorry for the late reply - I somehow missed this in my inbox. This is a re-implementation of Fit-SNE in python/cython. While working on this I simplified the Fit-SNE code substantially - this also resulted in a speed-up. These changes have already been merged into the C++ implementation (see PR).
The goal of this implementation is to have a pure python implementation, which wouldn't need any specific libraries which are difficult to compile on Windows (this is not true yet, because I need to replace fftw with numpy's FFT which are supposedly faster when using intel's mkl optimizations). I am currently integrating this into Orange, where we currently use scikit-learn, which is terribly slow. Because we'll be using it in Orange, there's more functionality for interactive optimization than in most libraries. We can stop and continue optimization with callbacks, get visualizations before the optimization is complete. This is nice to have in an interactive widget environment. Having the library written in Python is also better for experimenting and possible extensions, and having written the slow parts in Cython, the difference in speed to the C++ implementation is negligible.
There are also a couple other minor differences:

we report the kl divergence (although I think George has incorporated this into Fit-SNE a couple weeks ago)
we allow new data to be added into the existing embedding by direct optimization. To my knowledge, no other library does this. It's sometimes difficult to get nice embeddings like this, but it may have potential.
I've added bits of useful code from various research papers on tSNE that don't really appear anywhere e.g. late exaggeration (I believe George came up with this as well and it's probably in FitSNE). I haven't really found it that useful, but maybe someday. Also, pBIC is a measure to evaluate the quality of the tSNE embedding that works across different perplexities. Again, I haven't played around with this too much, but one paper mentioned it, and if it turns out to be good, we could use it for automatic perplexity selection.
The code is written so it's extensible. tSNE only needs an affinity matrix to run, so in this sense, we are not limited to tabular data and their distances. We could probably embed graphs with adjacency matrices or powers of the adjacency matrix to embed large graphs. Or any other data on which we can compute similarities. I haven't tried this yet, but it should be possible.

TLDR: I found the FitSNE paper and implementation and couldn't really make sense of it, so I worked through the theory and wrote my own implementation, where the code is far more readable IMO. I added various bits and bobs that I found while reading up on tSNE. The slow parts are written in cython so it's multithreaded and about as fast as C++. The other parts are written in python so it's really easy to play around with and experiment with tSNE.


Win10: vkcube with invalid arguments produces no output (graphics nor console)

When run from a console prompt, vkcube -c 250  does not open a graphics window, and no error text output; it just exits silently (The correct command is vkcube --c 250, which does run properly)
Similarly, vkcube foo also exits silently with no graphics.
Other than the lack of help text for invalid argments, the reason this is an issue is the GNU argument syntax specifies "--" for long arguments, and '-' for single-character arguments.   Thus the --c argument should be -c, and it is very easy to overlook the difference depending on the font.
Perhaps add -c as a synonym for --c.  It would be nice for help usage text when invalid arguments, but stdout on Windows adds complexity.

@mikew-lunarg Duplicate of #177 ?

No, I don't think it is a duplicate. This issue seems to say that if you give bad args to vkcube, it exits silently. #177 is a problem that when vkcube --c 250 runs, it runs so fast that nothing is seen.

David is correct.  Also, this one is Windows, #177 is Linux.  Different problem, different platform.

For comparison, on Linux a bad argument produces this text output on the terminal:
mikew@spork:build !15 1 $ ./vkcube -c 250
Usage:
  vkcube	[--use_staging] [--validate] [--validate-checks-disabled] [--break]
	[--c <framecount>] [--suppress_popups] [--incremental_present] [--display_timing]
	[--present_mode <present mode enum>]
	 <present_mode_enum>	VK_PRESENT_MODE_IMMEDIATE_KHR = 0
				VK_PRESENT_MODE_MAILBOX_KHR = 1
				VK_PRESENT_MODE_FIFO_KHR = 2
				VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3

Fixed with #198


Interact with MyoSkeleton

I saw that the last release to date (Myosuite 2.7.0) included the Myoskeleton model that I am pretty excited to with. However I could not find it in the available environments and missed the instructions about how to use it.
Am i missing something ?
Thanks,
Antoine

@decomiteA this is just an initial integration to visualize and interact with the MyoSkeleton. Actuation and tasks will come soon


Use safelist for PostCSS 3

This simply replaces all occurrences of whitelistPatterns with the new, correct safelist keyword. Took me a while to notice that PostCSS 3 replaced the keyword and the readme was outdated 😄

Looks like I forgot to update the docs, thanks!


[POSIX] Propagate complete env when lauching subprocess

rdar://problem/29462783

Unless an env is specified, propagate complete env by default.
This is also the default behavior in NSTask API and python's
subprocess

@swift-ci please test

LGTM

Test failures for both platforms are the same and look completely unrelated to SwiftPM.

@swift-ci please test

@swift-ci please test


[Bug] [deploy] Still trying to start logger server when start with install.sh

Search before asking

[X] I had searched in the issues and found no similar issues.

What happened
https://github.com/apache/dolphinscheduler/blob/67cc260d52c1f2e5aa7db76aa8621cdd0f8c4ee0/script/scp-hosts.sh#L49-L53
We still trying to start logger sever by install.sh which we already remove it dev branch(@zhongjiajie should add related PR for this)
What you expected to happen
ATT
How to reproduce
ATT
Anything else
ATT
Version
dev
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

ref: https://github.com/apache/dolphinscheduler/pull/7837

remove stale

This seem already done, close


Multiple

Its possible to run multiple command in one action ?

Yes, you can do it like this :
command: |
cd foo/
chmod 777 ./file.sh

using break line ?

yes

Thank you 💙


Problem with Sign-In after log out

Hi,
I followed the steps on your YouTube channel until the timestamp 03:23:27. After sign-up a user and log-out. When I tried to sign in using the same registered email, which had been signed. The page does not change to the main page i.e., the page remains at the sign-in page. When I looked at the VS Code terminal the status was 200 Sign-in. Could you please advise on which part I need to amend the code?
Thank you.

Same issue here!

It wasn't setting the session cookie which I think will be covered later in the video.
if (response) {             cookies().set("appwrite-session", response.secret, {                 path: "/",                 httpOnly: true,                 sameSite: "strict",                 secure: true,             });         }
We just have to add this to the sign-in function


Replace bsb.enabled with diagnostics.tools

Companion PR of https://github.com/freebroccolo/ocaml-language-server/pull/42.
There was some feedback on Discord about users wanting more control over which tool would be used for diagnostic. This PR changes bsb.enabled (boolean) with diagnostics.tools(array) so users can decide if they want merlin, bsb or both, or none :)
@freebroccolo @chenglou What do you think? cc @superherointj

Yeah, this sounds like a good idea. As far as the default setting goes, I favor just including everything we know about and letting the user disable whatever they don't want. I figure that the people that have all those tools installed will probably want to use them. If they aren't found in the path, we can just ignore them.

Sounds good! I'll enable both, and I'm going to add some checks to make sure we handle enoent errors properly when bsb is not available. I was always supposing the happy path.
I'll ping you when it's ready 👍

I'll enable both, and I'm going to add some checks to make sure we handle enoent errors properly when bsb is not available. I was always supposing the happy path.

Thanks. I suppose at some point we should probably also deal with the case where ocamlmerlin isn't found more gracefully too. Right now the server just quits I think.

@freebroccolo @chenglou This is ready.


Guide page Responsiveness

For Guide & APIs pages, we will now have a max width of 720px specifically for the written information.
Leave diagrams to be the same width they already are. (Bc some diagrams are best viewed past 720px width.)
Breakpoint of 768px, can still fit 720px information.
Marketing Site itself will always have left and right padding of 12px.
Once 768px breakpoint is reached, the side menu will truncate into a dropdown menu under the top nav.
If API page titles get too long on mobile, please use ellipses. (...)

Guide
https://www.figma.com/file/ChyT88EmP2Rmzx35I9erCL/Marketing-Site?node-id=55%3A0

I'll work on this


[ADD] Feature flag

Is your feature request related to a problem? Please describe.
Add a feature flag so we could rollout features , and turn it on when we are ready , off when there is issues

implemented in #1263


Traceback ERROR

Traceback (most recent call last):
File "/usr/local/bin/catt", line 7, in
from catt.cli import main
File "/usr/local/lib/python2.7/dist-packages/catt/cli.py", line 7, in
from pathlib import Path
ImportError: No module named pathlib
What can I do to fix this?

Are you the same person who just opened a nearly identical ticket? Really?
Like I said: You need Python 3 in order to use catt.
There's also a readme.

Maybe we should add an if check to not run on 2, although it shouldn't be able to be set up anyway.

although it shouldn't be able to be set up anyway

Yeah, thats odd.

I'm guessing they just cloned the repo and tried to run.


Update README, installation with Ultisnips

Readme didn't have much information about using vim-react-snippets with Ultisnips.
Added this in installation section

Thanks! Don't know much about Ultisnips so happy to have someone add stuff about it :)


Doing Business with Us title fix

Scott brought up that the breadcrumb didn't match the navigation. I think the thinking was that all words under four letters were lowercase, but I know there can be multiple interpretations on how "Doing Business with Us" should be capitalized.
This pull request standardizes it with the navigation menu and page title. Tagging in Team Content to approve this.
Screenshot

Review

@sarahsimpson09
Tanya

:+1:

A note on casing...everything should be in sentence case except for the navigation (main navigation, side navigation, and breadcrumbs). Navigation is in AP Style Title Case. In this case "Doing Business with Us" would be correct.

Sounds good to me. AP Style Title Case it is!


Entity not available : location device tracker

The battery range (secondary engine) still doesn't work. I've installed the latest version (77e36ba).

My entities list shown no sensor about secondary engine range.

Maybe following helps to troubleshoot:

The above was 'solved' by a HA Reboot (obviously a HA restart, which I did few times before, did not work.
However... After the HA full reboot, the location device tracker became unavailable. I've downloaded log file and removed all non-audi connect related log lines.
home-assistant_audiconnect_2024-03-08T10-46-48.632Z.log

You get HTTP code 429, that means too many requests. You have to until tomorrow (UTC) to be able to make new requests.
So in best case deactivate the integration and try again tomorrow :)

thank you @Ingrimmsch93 for your guidance. I did not realise I had done so many requests.. I have restarted / rebooted only couple of times today; but maybe that is already too much. I have disabled the integrations and will enable tomorrow.

this morning I enabled the audi connect app... still device tracker entity unavailable. later this morning it became visible.


Windows 11. Python 3.10.1 Impossible to install pyodbc

Python 64x. The fresh version of PIP, Installed VC for 2015, 2017, 2019, and 2022 for 64 and x86(I tried this step too).
But.....................................
pip install pyodbc
Collecting pyodbc
Using cached pyodbc-4.0.32.tar.gz (280 kB)
Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for pyodbc, since package 'wheel' is not installed.
Installing collected packages: pyodbc
Running setup.py install for pyodbc ... error
ERROR: Command errored out with exit status 1:
command: 'C:\Users\admin\AppData\Local\Programs\Python\Python310\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\Users\admin\AppData\Local\Temp\pip-install-_j4jyamk\pyodbc_a2017b7ad25e4c76810be58b636f4e0b\setup.py'"'"'; file='"'"'C:\Users\admin\AppData\Local\Temp\pip-install-_j4jyamk\pyodbc_a2017b7ad25e4c76810be58b636f4e0b\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(file) if os.path.exists(file) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, file, '"'"'exec'"'"'))' install --record 'C:\Users\admin\AppData\Local\Temp\pip-record-mz0r0ege\install-record.txt' --single-version-externally-managed --compile --install-headers 'C:\Users\admin\AppData\Local\Programs\Python\Python310\Include\pyodbc'
cwd: C:\Users\admin\AppData\Local\Temp\pip-install-_j4jyamk\pyodbc_a2017b7ad25e4c76810be58b636f4e0b
Complete output (5 lines):
running install
running build
running build_ext
building 'pyodbc' extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
PyODBC doesn't see VC. :(

Duplicate of #981

I found the solution! It's problem with Microsoft products.
Very easy to solve - and I think MS should add this info to all their products.
If you can't install these plugins as well,
need to download it from other repositories like this one:
https://www.lfd.uci.edu/~gohlke/pythonlibs/ depends on the version of python and the system.
for example: for my windows 11(x64) and python 3.10 I took this file: pyodbc‑4.0.32‑cp310‑cp310‑win_amd64.whl
it's very easy to install: pip install pyodbc‑4.0.32‑cp310‑cp310‑win_amd64.whl
after it system works well and didn't ask you about VC.
This solution I found in problem with the MySql plugin for Django. I don't understand why - but they also use VC for the installation process. People also are in shock with the recommendation to install Studio with 16 GB with unusable information!
Microsoft team!!! Please stop doing it!!! Why for all your product we should be finding a solution for installation? It's a quest?

Related: #981

thank you very much. I will add info to this topic too!

Thanks, @gordthompson !!

Python 3.11.0 on Win 11 here. Same issue when the parent package (dbt-sqlserver) is trying to uninstall and then re-install pyodbc, ending up with the same error message.
So, pyodbc installs fine on its own but fails (with a wrong "Microsoft Visual C++ 14.0 or greater is required" error message) when installed by another package.

@xpil - dbt-sqlserver is trying to install pyodbc 4.0.32:
Collecting pyodbc==4.0.32
  Using cached pyodbc-4.0.32.tar.gz (280 kB)
  Preparing metadata (setup.py) ... done

pyodbc didn't have wheels for Python 3.11 until version 4.0.35.

Thanks for clarification. I am relatively new to Python and I do not really understand what it means. Should I downgrade to Python 3.10.x to work around this issue? Can I (somehow?) make the dbt-sqlserver package use a newer version of pyodbc? What are my options (if any)?

Pyodbc 4.0.35 and python 3.11.0 work fine together.


unset geiser-mode-start-repl-p

Initially I believed it would be a good idea to start the repl upon
entry into a scheme file, but this has so far preempted tools that rely
on direnv to create ad-hoc environments leading to not all dependencies
being availabe for scheme files. I had not realized how annoying this
could be because at the time all of my scheme libraries were installed
in my user environment.
Another reason for this change is it brings the scheme module back into line with
the repl based modules for other lisps like clojure.

Makes sense to me. Thanks!


CH: See list of all referrals

See a referral queue with status next to it

This is done with the CBO Referral App dashboard.


build wheels for macOS M1 too

Coverage remained the same at 100.0% when pulling 05a6b0a23e3238719fe84872644ae684c12452f0 on PhilipVinc:patch-2 into ff02ba2bcbd42d2141ac39c31f743dacc36cd042 on wesselb:master.

Very sweet. Thank you @PhilipVinc, as so many times before!


Idoc in customer namespace not allowed

An error occurs when creating idocs in customer namespace.
This is ok in SAP.
I have had a look at #850 and note 104010.
Should Idocs be allowed ìn customer namespace by abaplint?

@DennisLybecker-INVIXO thanks, try again, 2.48.2 published

@DennisLybecker-INVIXO thanks, try again, 2.48.2 published

Perfect, thanks.

I'm assuming it worked? closing

Yes, it works.


ros2_control_demo_hardware_gazebo package missing

per README, there is a second package called ros2_control_demo_hardware_gazebo and wondering where is that missing package.

It doesn't exist. It was an idea at the beginning to have this package, but we don't need it. We have to change the README.

removed


[python] simplify handling of fixed length char arrays [behavior change]

Get or set fixed length char arrays as a single string vs getting each character individually.

Python now supported for RC3.

@mjpt777 I'm confused by this.  Looks like python is NOT supported for RC3 at all.  Am I missing something?  -- Bud

If someone is willing to submit a python port then we will be happy to accept it. @tmontgomery and I only have the time to do C++ and Java.

@mjpt777 OK.  Your comment above said that Python was NOW supported.  Hence my confusion.
If I get some time, I'll try to re implement the python code generation back into the real-logic decoder.
In the meantime, if anyone needs a python based decoder, we have open sourced our python-based SBE decoder:
https://github.com/tfgm/sbedecoder
For performance reasons, most people would be better off with your C++ or Java decoder but it is an option.
-- Bud

Typo :-)


Make option parsing more robust to avoid type errors

Description
Using Train options from an URL will result in crashes if the option expects numeric values. In this case, for execution_timeout and similar.
As Train has no type definition in its options syntax this has to be solved on a per-plugin level.

As this PR needs to be released and linting issues aren't breaking anything right now: LGTM.


require(...) inside grammar breaks evaluating the generated code

Any require('myFile.js') inside a defined grammar seems to break nearley-make on line 37 with
TypeError: require is not a function at eval.
grammar = (new Function(...argKeys, genned))(...argValues)

ok i had the same issue
here how to solve
var make = require('nearley-make');
var parser = make('my fancy language', { require: require });
parser.feed(text);
console.log(parser.results);

@lightblub clever work with the new Function hack, consider adding in the usage example argumetns the require

Nice workaround, would've saved me some effort. I worked around this by not including the require calls, and adding them after I parsed my grammar


test(termination): test basic termination with no vesting schedule

Closing in favor of https://github.com/galactic3/ft-lockup-contract/pull/9


Amazing tool, great job :D

You don't have discussions open, and I don't have twitter, so excuse me for the issue misuse.
I just wanted to let you know, that your tool is absolutely brilliant, and makes it 10x more fun overlaying log information onto videos.
Thank you very much for your time, effort and sharing this whole thing.
Not sure if it is worth a separate "feature request"/support tickets, so I'll drop it here.

It would be really cool, if there were a way to export the data series settings to somewhere in some format, does not even have to be human-friendly. Otherwise, it's 1 unlucky refresh of the page, and you have to redo all the labels from the beginning.
On the "Voltage" series it would be nice to be able to divide by the number of cells. The idea being, that while a general battery sag/voltage drop is interesting, it's easier to comprehend (at least for me) if it's cell-based. I tried simply preediting the values in the csv, but this does not work (propably the value is too small, not sure).
Is there a magical way to boost performance? Can I perhaps give my browser  higher priority in task manager? Rendering the log video takes longer than rendering the video itself, and I don't want to drop  frames.  As far as I understand, running locally does not give me any performance advantage whatsoever? Sorry if this sounds stupid, I just don't have any web app design experience whatsoever.

Thanks @aka13-404
I'd not even heard of GitHub discussions😅. Given this is quite a small project I'm happy with issues for this kind of thing.
I wanted to get the tool to a usable state, and I think it's there, but there's definitely a lot of things on the todo list for this. I'll wait and see how it goes (as in do people actually use it), but I wouldn't mind fixing up a few things at some stage.
Your points are all good.

I was thinking about encoding all this in the URL, so you could just save the link somewhere and it'd include all the different things you've set up.
I'd have to give the user some way to enter the number of cells in series, but was planning on having some additional options for how each of the visualizations displays data. Not sure why editing the CSV file didn't work, there really is nothing special about the file format, it is just a csv.
There's two issues here. Drawing frames is slow mainly as they are all drawn to the screen, and this slows things down. I did have a look at rendering the frames offscreen which could get around this, but it was taking a little longer than I'd like so left it out for now. The other performance issue is due to it basically a javascript version of ffmpeg to encode the video. There's no hardware acceleration here, so it's always going to be a little slow. Still, there's definitely some scope to improve performance.

Thanks for the reply!

Sounds really good, it has all the advantages with no disadvantages.
Yeah, that makes sense
I guessed as much, one has to pay for the advantages of the tool being a web-app. Another stupid idea would be dumping all the generated images in a zip, and let the user process them on himself, that would only leave the image generation. I mean I already have to edit the mask manually and to apply it, so I might as well render the thing myself.

I have created a test video recently, sadly with 3fps only and split into 4 5-minute-parts, since itherwise I just could not get it processed reasonably. It would stop in the middle somewhere, butin general it's just amazing as stated before. Does exactly what I wished for. Feel free to use the video and to close the issue, if needed :).
https://youtu.be/rVj6xzlMK20


nimble/ll: Fix assert on slave connection with ext advertising

When extended advertising is enabled and advertising instance is
configured to own_address_type=random, it is using per instance
random address and not global random address. We need to store
address set in instance and pass it to connection object so that
it can be returned as ID address.

@kolodgrz  FYI


Corrected ansible 2.2 goss test

Ansible 2.2 does not seem happy with our relative file lookup.
Updated to work with all versions of ansible.
TASK [Copy tests to remote]
****************************************************
failed: [foo] (item=hosts.yml) => {"failed": true, "item": "hosts.yml",
"msg": "Unable to find '../../../files/goss/hosts.yml' in expected
paths."}

  py27-ansible19-functional: commands succeeded
  py27-ansible20-functional: commands succeeded
  py27-ansible21-functional: commands succeeded
  py27-ansible22-functional: commands succeeded
  congratulations :)


How to handle multi entry apps

Hello, love the work you've done with this package.
Does this plugin support multi page apps as documented here in Vite's docs?
If I have 3 entries, could I structure my files similar to the following
/root
   /app1
      /pages
   /app2
      /pages
   /app3
      /pages

Nope, in that case I think is better to separate the apps then use proxy to combine it.
Or try this one https://github.com/hannoeru/vite-pages

Hey there, I had the same problem, and I solved it by adding this to the plugin's config:
{
  pagesDir: fs.readdirSync("root").map(name => ({
    dir: `root/${name}/pages`,
    baseRoute: name
  }))
}

You need to make sure to import the fs module.


Clean up - Decommissioning PTTP logging infrastructure

After running the removal in CI additional tasks as specified below.
Archive:

[ ] Archive https://github.com/ministryofjustice/staff-device-logging-infrastructure
[ ] Archive https://github.com/ministryofjustice/staff-device-logging-syslog-to-cloudwatch

CI

[ ] Remove the CI Pipeline from https://github.com/ministryofjustice/staff-device-shared-services-infrastructure and associated AWS resources (S3 bucket for state etc)
Logging
[ ] Review any Dangling CloudWatch Log group from logging infrastructure.(keyword syslog,pttp logging etc)

This tickets follows on from
https://app.zenhub.com/workspaces/nvvs-devops-622a0b371800e400133bb924/issues/gh/ministryofjustice/nvvs-devops/643
and
https://app.zenhub.com/workspaces/nvvs-devops-622a0b371800e400133bb924/issues/gh/ministryofjustice/nvvs-devops/646


Crashes on 22w18a when player comes into view

Either hitting F5 or opening the survival inventory immediately crash the game with the following error:
The game crashed whilst rendering entity in world
Error: java.lang.NoSuchMethodError: 'net.minecraft.class_630$class_628 net.minecraft.class_630.method_22700(java.util.Random)'
Exit Code: -1
https://pastebin.com/92swAzta

Looks like Mojang's changed the signature from net.minecraft.client.model.ModelPart$Cuboid getRandomCuboid(java.util.Random) to net.minecraft.client.model.ModelPart$Cuboid getRandomCuboid(net.minecraft.util.math.AbstractRandom)

So they switched from Java's rng to their own function? Hah, I've done stuff like that before~

They've been switching to their own Random for a bit, mainly because Java's stock random is...not the best lmao

Looking at the code, it looks like NotRandom will have to subclass AbstractRandom on new versions instead of just Random.

Ooooohh, the find-diamonds-by-clay thing! I remember seeing people talk about that before.

nooooooooooooooooo

I'll note the "diamonds and clay correlate" isn't caused by java.util.Random's algorithmic weakness, it's caused by Mojang seeding different generators with the same seed.

I can't help but sing this out loud, with "noooo" rising in pitch for each rising superscript! XD

I released a 1.19 port the other day.

Wooooo thanks! ^^


Get Phones in German Language

Hello,
thanks for this module. I want to get phonemes for word, e.g.:
import pronouncing
pronouncing.phones_for_word("hello")

However, i suppose these are only valid for English words, but i want to use it for German words (e.g. "hallo") as well. What is the best way to extend this library to this functionality?
Regards,
Josef

This uses the CMU Pronouncing Dictionary which unfortunately is only in English.
Do you know of a German equivalent?

Maybe we could use this one instead?
https://sourceforge.net/projects/cmusphinx/files/Acoustic and Language Models/
File: German / cmusphinx-voxforge-de.dic

Yes, that looks possible. The formats are a bit different.
 The 1 space v. 2 space separator may be a little more tricky.
Anyway, would you like to test out this quick hack? (Note this isn't compatible with the original English file, it's just for testing.)

Replace pronouncing/cmudict-0.7b with cmusphinx-voxforge-de.dic
Add line = line.replace(" ", "  ", 1)  # replace first occurence
before word, phones = line.split("  ")
in pronouncing/__init__.py: https://github.com/aparrish/pronouncingpy/compare/master...hugovk:german-phones

>>> import pronouncing
>>> print(pronouncing.phones_for_word('dreierriegel'))
['D RR AY EX RR IIH G AX L']

The functions that the package provides beyond parsing the data (e.g., finding rhymes, stresses, etc.) are all fairly specific to English and the CMU Pronouncing Dictionary, so I'm not sure what the utility of the package would be for other languages (or other data sources). An internationalized, cross-linguistic version of the library would certainly need to have a much more sophisticated structure (allowing for language-specific implementations of various functions and data sources in different formats with different capabilities). For the sake of clarity and simplicity, I'm inclined to keep this library English- and cmudict-specific for the time being, though I would be interested in collaborating on to make something like the cross-linguistic version outlined above.
And of course you're welcome to re-use any of the code in this library for parsing and working with the other data files that CMU Sphinx provides (like the German one you found).

@hugovk thanks for your support, it works in this way.
@aparrish thanks for clarification

For sake of completeness: I just found https://github.com/jmorrow0/deuPD which provides an easy way to produce a German pronunciation dictionary.

@jhoelzl it seams that the repo isn't there any more https://github.com/jmorrow0/deuPD, where can I find it ?

@jmorrow0 Hello, is your https://github.com/jmorrow0/deuPD still available somewhere? Thank you!


add support to hyprlandctl

Description
This pull request adds the wm flag to the nwg-drawer command to launch a program with the swaymsg exec or hyprctl dispatch exec command.
:warning: BREAKING CHANGE: '-swaymsg' removed, use '-wm sway' instead
Reference
This pull request refers to this comment (#101)
Instructions
To use this new feature, simply add the -wm <current wm name> argument to the nwg-drawer command, or set the XDG_CURRENT_DESKTOP environment variable to "sway", "hypr" or "hyprland".
Example
Before
rubymine # without -term, -swaymsg and without XDG_CURRENT_DESKTOP=sway

After
swaymsg exec firefox # with `-wm sway` or with XDG_CURRENT_DESKTOP=sway

or
hyprctl dispact exec firefox # with `-wm hyprland` or with XDG_CURRENT_DESKTOP=hyprland

or
hyprctl dispact exec firefox # with `-wm hypr` or with XDG_CURRENT_DESKTOP=hypr

Note
I don't use Hypr or Hyprland (yet). So this PR must be tested.

I reworked command building.
Typical shell-supported command sets:

cmd
cmd --arg
cmd --arg=value
ENV_VAR="value" cmd
ENV_VAR="value" cmd --arg
ENV_VAR="value" cmd --arg=value

The listed commands above are now better managed.
Initially, the command types cmd --arg=value or ENV_VAR="value" cmd --arg=value were not correctly parsed. After finding a solution to this problem, I conducted further tests and discovered cases that were not currently handled. These cases are as follows:

cmd "arg with space"
ENV_VAR="value with space" cmd

Running apps with go is insanely complicated and always makes me miss the good, old python.

The approach with the Go language is a bit too low-level.
I think that most cases are covered and that the remaining 2 cases represent only a minority of situations.
Personally, I've never had a case like this; I had to invent them myself to check whether they worked or not.

All right. Let's find it ready.


test: use swc instead ts-jest

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

v7.18.3
GitHub release

Your semantic-release bot :package::rocket:


Support comparing two linked keypaths in a query

See https://groups.google.com/d/msg/realm-cocoa/WRI5oq1Y6zU/sk9-qVIYdjcJ.

Blocked on https://github.com/realm/realm-core/pull/621.

That implements something different (comparing non-linked string properties).

ok, I removed the blocked tag and unassigned myself.

Well, it is blocked on core support.

@bdash could you look into whether or not this has been done recently?

Fixed in #2895.


Fix wrong subprocess call

As you know, subprocess.call has some specific requirements on shell and the type of args.

https://docs.python.org/2/library/subprocess.html#frequently-used-arguments

On my windows machine with MINGW32:
>>> import subprocess
>>> subprocess.call(['ls', '-l'], shell=False)
total 0
-rw-r--r--  1 grampush  Administ  0  6 24 01:15 a.out
-rw-r--r--  1 grampush  Administ  0  6 24 01:14 sample.wav
-rw-r--r--  1 grampush  Administ  0  6 24 01:15 zigbee.bin
0
>>> subprocess.call(['ls', '-l'], shell=True)
-rw-r--r--  1 grampush  Administ  0  6 24 01:15 a.out
-rw-r--r--  1 grampush  Administ  0  6 24 01:14 sample.wav
-rw-r--r--  1 grampush  Administ  0  6 24 01:15 zigbee.bin
0
>>>

However, on OS X:
>>> import subprocess
>>> subprocess.call(['ls', '-l'], shell=False)
total 0
-rw-r--r--  1 grampush  staff  0  6 24 01:15 a.out
-rw-r--r--  1 grampush  staff  0  6 24 01:14 sample.wav
-rw-r--r--  1 grampush  staff  0  6 24 01:15 zigbee.bin
0
>>> subprocess.call(['ls', '-l'], shell=True)
a.out		sample.wav	zigbee.bin
0
>>>

Only the first item of args is applied to the actual execution, in this case.
I think we should do: call(a_list, shell=False) or call(a_str, shell=True)

Went with the fix in #18. Going to run some tests to make sure this still works on Windows, but that should take care of the non-Windows cases. Does that fix work for you too?

#18 works for win7 and OS X both, in my case. also I learnt about subprocess.mswindows :+1:


Support pagination of Git repositories in /services/git/repositories

From @gastaldi on March 6, 2018 18:8
It would be nice to paginate the existing repositories instead of returning a huge list of repositories which is inefficient and may become a bottleneck in the future
Copied from original issue: fabric8-launcher/launcher-planning#128

Duplicate of https://github.com/fabric8-launcher/launcher-backend/issues/94


Markdown webpart doesn't process HTML

Target SharePoint environment
SharePoint Online
What SharePoint development model, framework, SDK or API is this about?
💥 SharePoint Framework
Developer environment
Windows
What browser(s) / client(s) have you tested

[ ] 💥 Internet Explorer
[X] 💥 Microsoft Edge
[X] 💥 Google Chrome
[X] 💥 FireFox
[ ] 💥 Safari
[ ] mobile (iOS/iPadOS)
[ ] mobile (Android)
[ ] not applicable
[ ] other (enter in the "Additional environment details" area below)

Additional environment details

browser version: Google Chrome Version 100.0.4896.127 (Official Build) (64-bit)

Describe the bug / error
In Sharepoint online, when creating the following table using the webpart 'Markdown', the HTML noted here as 'myHTML' is not parsed, although
 and <il> adquire in the Webpart text a different color and thus it seems it understands them.
As a result, confirmed by Microsoft Help Center, there is currently no way to create simple HTML in Sharepoint online, feature that was possible through '</> Embed' webpart in all previous Sharepoints.

Tables
Are
Cool

col 3 is
right-aligned
$1600

col 2 is
centered
$12

zebra stripes
are neat
$1

MyHTML:

item1

item2

See the list
from the first column

Steps to reproduce

Open Sharepoint online (www.xyz.sharepoint.com/sites/mySite)
Add webpart 'Markdown'
Add the following Markdown information:

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |
|

item1

item2

| See the list | from the first column|

The 4rth row, first column should show 2 items in a list, however it shows instead a text. As a result, we can't make tables with two list items in the same cell.

Expected behavior
Expected behavior as in Stackoverflow:
https://stackoverflow.com/questions/19950648/how-to-write-lists-inside-a-markdown-table

@Cobest - unfortunately we're not supporting HTML in Markdown web part.
And there are no plans for any changes in this area.


md-error with *ngIf doesn't work

Bug, feature request, or proposal:
Bug
What is the expected behavior?
boolean is passed to *ngIf and supposed to switch on when it is true
What is the current behavior?
md-error with *ngIf doesn't work at all. It only responds on predefined directives like required.
What are the steps to reproduce?
<md-input-container> <input mdInput [(ngModel)]="sample" name="sample" (keyup)="validateInput()"> <md-error *ngIf="isError">{{errMsg}}</md-error> </md-input-container>
Validate input on every keyup and set isError to true if the input is invalid.
What is the use-case or motivation for changing an existing behavior?
Which versions of Angular, Material, OS, browsers are affected?
angular 4.0.0, material 2.0.0-beta.3, macOS10.12.4, chrome
Is there anything else we should know?

We use the error with ngIf in our demo and it works fine. This is most likely an issue with your setup.

Closing since we cannot reproduce; feel free to open a new issue if you have a reproduction.

I am seeing this behaviour as well using the latest version of Material (2.0.0-beta.3).
Just to re-iterate, I can only get the md-error to show up using the predefined directives (e.g required, minlength, maxlength).
Could it have something to do with the fact that @thisisgit and I are using template-driven forms and the demo referenced by @crisbeto uses model-driven/reactive?

I'm also seeing this. Even hardcoding the *ngIf result to be true the error message still doesn't appear.
<md-input-container>
    <input mdInput [(ngModel)]="fromInput">
    <md-error *ngIf="true">Error message</md-error>
</md-input-container>

Also using template-driven form here.

Can you put together a Plunkr that shows the issue @zlepper? You can use this as a template.

@crisbeto http://plnkr.co/edit/q4ERXhznMsvbqSiyddfA
Apparently i can't get neither normal validation or just hardcoding the error to true working now.

Both of the cases in the Plunkr don't work, because you don't have a ControlValueAccessor (e.g. an ngModel or formControl). The errors are supposed to show up when there is a ControlValueAccessor that is invalid and touched.

And how do we make the ControlValueAccessor invalid when it's not one of the build in validations jamieathans mentioned above?
I have edited the plunkr so the input field for the email now becomes red because something is wrong, but the md-error is still nowhere to be found: http://plnkr.co/edit/DYNUmQTxiJxnO28E1Uqz?p=preview

There a couple of issues with your examples:

The first one that is ngIf="true" (you can remove this btw), doesn't have any validation set up. If you add a required attribute it'll work.
The #emailInput refers to the DOM element, not the instance of ngModel. You can get it working by changing it to #emailInput="ngModel".

Here's a forked Plunkr with the above-mentioned changes. Note that to enable Angular's built-in email validation, you have to add the email attribute.

Alright, however that still doesn't allow for custom validation error messages in the template-driven model, which is what I wanted to demonstrate with the first example by hardcoding the error message to always be there. The value should come from a custom validation like in the OP.
Said custom validation might go to an external server and fetch a result which indicates if the value is valid (Checking if a username is available on signup for example).

Yes it does, the default validators go through the exact same pipeline as the custom ones. Can you post the custom validator that you're trying to use?

Alright, thanks to your help i managed to figure it out, and can also say that it is working as intended. In short what i have done:
Create a custom validator
import {AbstractControl, NG_VALIDATORS, Validator} from "@angular/forms";
import {Directive, forwardRef} from "@angular/core";

const END_WITH_API_REGEX = /.*\/api\/?$/;

@Directive({
  selector: '[noApi][ngModel],[noApi][formControl]',
  providers: [
    { provide: NG_VALIDATORS, useExisting: forwardRef(() => NoApiValidator), multi: true }
  ]
})
export class NoApiValidator implements Validator {
  validate(c: AbstractControl): { [key: string]: any; } {
    return END_WITH_API_REGEX.test(c.value) ? {validateApi: false} : null
  }
}

Added it to my declarations:

@NgModule({
  declarations: [
    AppComponent,
      [...],
    NoApiValidator
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
      [...]
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

And used it for something:
<md-input-container>
    <input mdInput placeholder="url" [(ngModel)]="url" type="url" required noApi #urlInput="ngModel">
    <md-error *ngIf="urlInput.errors">Something was wrong</md-error>
</md-input-container>

I thank you for your time, especially since it was a user error.

+1 to see this working with relying simply on *ngIf, at least as an option, since the purpose of the md-error is quite trivial.
That would be useful for the post-submission validation issues detection.

I have problems making Reactive form with FormGroup display md-error. md-hint works with the same code.
Here's a code and a working plunker: http://plnkr.co/edit/CR06nY?p=preview.
All validations work except the custom one. My workaround for now is to just use 'md-hint` with red font.
Take a look at last two inputs. Password validation error doesn't appear.
    <form fxFlex="80"
          fxLayout="column"
          id="updateProfileForm"
          name="updateProfileForm"
          [formGroup]="updateProfileForm"
          (ngSubmit)="updateProfile( $event, updateProfileForm.value )"
          novalidate>
      <md-input-container fxFlex="0 0 auto">
        <input mdInput type="text" formControlName="firstName" placeholder="First name" required>
        <md-error>First name is required</md-error>
      </md-input-container>

      <md-input-container fxFlex="0 0 auto">
        <input mdInput type="text" formControlName="lastName" placeholder="Last name" required>
        <md-error>Last name is required</md-error>
      </md-input-container>

      <md-input-container fxFlex="0 0 auto">
        <input mdInput type="email" formControlName="email" placeholder="Email" required>
        <md-error *ngIf="updateProfileForm.get('email').hasError('required')">Email is required</md-error>
        <md-error *ngIf="updateProfileForm.get('email').hasError('email')">Please enter a valid email address</md-error>
      </md-input-container>

      <md-input-container fxFlex="0 0 auto">
        <input mdInput type="password" formControlName="oldPassword" placeholder="Old password">
      </md-input-container>

        <md-input-container fxFlex="0 0 auto">
          <input mdInput type="password" formControlName="password" placeholder="Password">
        </md-input-container>

        <md-input-container fxFlex="0 0 auto">
          <input mdInput type="password" formControlName="confirmPassword" placeholder="Repeat password">

          <md-hint *ngIf="updateProfileForm.get('passwords').hasError('nomatch')">Passwords do not match</md-hint>
        </md-input-container>

      <button type="submit" [disabled]="( !updateProfileForm.valid || !updateProfileForm.dirty )" hidden></button>
    </form>

      this.updateProfileForm = this.formBuilder.group( {
            firstName: [ '', Validators.required ],
            lastName: [ '', Validators.required ],
            email: [ '', Validators.compose( [ Validators.email, Validators.required ] ) ],
            oldPassword: [],
            passwords: this.formBuilder.group( {
              password: [ '' ],
              confirmPassword: [ '' ]
            }, { validator: this.matchingPasswords } )
          } );
  }

    private matchingPasswords( control: AbstractControl ) {
    const password = control.get( 'password' );
    const confirm = control.get( 'confirmPassword' );

    if ( !password || !confirm ) {
      return null;
    }

    return password.value === confirm.value ? null : { nomatch: true };
  }

@dzena See https://github.com/angular/material2/issues/4232#issuecomment-303886675 for more information. The plunker in that comment shows the workaround we've been using that works pretty well (emulates md-error in every way except for the animation).

@dzena ..I'm trying to implement the above form and was wondering if there is a solution to make the  work on confirm password?

@webUIdevelopment see this example from https://github.com/angular/material2/issues/4232#issuecomment-303886675

I think that this is quite good conversation to ask something...
I'm trying to test md-error element. But unfortunately it can't be found in any possible way:
          <md-input-container style="width: 100%" dividerColor="accent">
            <input
              mdInput
              placeholder="login"
              style="width: 100%"
              formControlName="username">
            <md-error id="usernameerror" class="empty-class">{{authResult?.username}}</md-error>
          </md-input-container>

and test contains:
  it('should not log in', () => {
    expect(component.login({username: 'someone', password: 'somepassword'})).toBeUndefined();
    expect(component.authResult.token).toBeUndefined();
    expect(component.authResult.username).toEqual(['error']);
    fixture.detectChanges();
    const de: DebugElement = fixture.debugElement.query(By.css('md-error'));
    expect(de).not.toBeNull();
  });

I was trying to use:
const de: DebugElement = fixture.debugElement.query(By.css('md-error'));
const de: DebugElement = fixture.debugElement.query(By.css('#usernameerror'));
const de: DebugElement = fixture.debugElement.query(By.css('.empty-class'));
but all the time de is empty.
How can I get the element?

@mgrom check out the input tests from the source - they should help guide you
https://github.com/angular/material2/blob/master/src/lib/input/input-container.spec.ts#L639-L654

Seeing the same behavior. Started a stackoverflow which eventually led me here after thinking the bug may be due to md-error with *ngIf
https://stackoverflow.com/questions/44975120/angular-validator-maxlength-show-message-on-keypress
Will probably use a styled md-hint until this is fixed.

I'm facing same issue like @anthonyartese whenever I put  outside of  Condition works fine but not within it when can we get this bug resolved for ?
Thanks

@divyameher are you also (like @anthonyartese) trying to get it to display the error when dirty instead of touched? If so, see this answer to his question on how to configure it

Seems like it's also possible to use https://angular.io/api/forms/AbstractControl#setErrors to reflect an error state from the server.

I wonder, will it be addressed in some way in the future? Or this is "wonfix" and ngIf for md-error not working by design?

@whitebyte AFAICT by reading through this thread, there are no bugs with using *ngIf, just a misunderstanding of how md-error works.

Errors are hidden until the input is both invalid and touched
This behavior can can be customized.
There are some minor usability issues with wrapping a md-error in ng-container, but it is expected behavior and easy to workaround

@willshowell thank you for the summary.
While I understand that this is intended behavior, this is counter-intuitive and leads to obscure errors. I hope devs will change their mind on this issue.

@willshowell If mat-errors are hidden until the input is both invalid and touched, what about a password validator when I want to show the mismatch with a mat-error under the Confirm Password field.  I tried below but the error will not show even if passwordMatchValidator is true.  My thought is that since passwordConfirm  is technically valid then the error doesn't show.  Is there a work around for thus.
this.depositForm = this.fb.group({
            password: new FormControl("", [
                Validators.required
            ]),
            passwordConfirm: new FormControl("", [
                Validators.required
            ]),
            chequeType: new FormControl("",  [
                Validators.required
            ])
        },{
            validator: passwordMatchValidator
        });

export function passwordMatchValidator(form: AbstractControl){
    let password = form.get('password').value;
    let passwordConfirm = form.get('passwordConfirm').value;

    return password != passwordConfirm ?  { passwordMatchValidator : true } : null;
}

<mat-form-field>
            <input matInput placeholder="Password" formControlName="password">
            <mat-error  *ngIf="password.hasError('required')">
                Password Is Required
            </mat-error>
   </mat-form-field>

   <mat-form-field>
            <input matInput placeholder="Confirm Password" formControlName="passwordConfirm">
            <mat-error  *ngIf="depositForm.hasError('passwordMatchValidator')">
                Password mismatch
            </mat-error>
   </mat-form-field>

@ewaschen see https://github.com/angular/material2/issues/8513 and the linked Stack Overflow answers

@willshowell I tried tthat example with the following
customErrorStateMatcher: ErrorStateMatcher = {
        isErrorState: (control: FormControl | null) => {
            if (control) {
                const hasInteraction = control.dirty;

                return (hasInteraction && control.parent.hasError("passwordMatchValidator"));
            }

            return false;
        }
    };

With my Confirm Password I also have a required, so I want the required to show if it is empty and the mismatch to show when the passwords are different, but hidden when the passwords are the same.  I can't seem to achieve this logic in the error matcher.  What I have above works for the password matcher but ignores the required.  If I remove control.parent.hasError("passwordMatchValidator") then the mismatch will not show at all.


updates imgix urls with cloudflare ones

📲 What
Replaces any imgix urls with cloudflare equivalents.
🤔 Why
We are no longer using imgix for serving/transforming images, only cloudflare.
🛠 How
These urls should just work
👀 See
Trello, screenshots, external resources?

Before 🐛
After 🦋

📋 QA
Instructions for anyone to be able to QA this work.
Story 📖
ING-1885

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 68.04%. Comparing base (7c34d92) to head (21db890).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##             master    #2002   +/-   ##
=========================================
  Coverage     68.03%   68.04%
- Complexity     2066     2067    +1
=========================================
  Files           360      360
  Lines         22193    22193
  Branches       3092     3092
=========================================
+ Hits          15100    15101    +1
  Misses         5430     5430
+ Partials       1663     1662    -1

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

@mtgriego this is ready for review now. Not sure why the tests fail for the android-private repo though, I'm trying rerunning them


command 'extension.relativePath' not found

command 'extension.relativePath' not found when calling relative path.
OS: Ubuntu 18.04
Name: Relative Path
Id: jakob101.relativepath
Description: Get relative url paths from files in the current workspace.
Version: 1.4.0
Publisher: jakob101
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=jakob101.RelativePath

Getting same error in one workspace, while works fine in another.

I started having trouble with this today as well. I tried uninstalling the extension and reinstalling it, with no luck
OS: macOS Mojave 10.14.6
VSCode: 1.42.1

Yes I have version 1.4.0 of the extension.
I had tried restarting vscode, even going as far as restarting the computer and still had the same problem.
Although now, I'm checking the extension today and it is now working. I'm not sure what changed to fix it.


better logging for scheduler/kubelet

I have set up a master+2minions, on each minion the kubelet config file carried a KUBELET_ADDRESS="--address=<IP_ADDRESS>" and KUBELET_HOSTNAME="". This resulted in a situation where the minions where watching for scheduled pods at registry/nodes/localhost/boundpods and the apiserver did put them on registry/nodes/<IP_ADDRESS>/boundpods.
Investigating the situation revealed some logs entries like

Nov 19 20:50:52 localhost kube-scheduler: E1119 20:50:52.057822 00628 reflector.go:106] watch of *api.Pod ended with error: unexpected end of JSON input

on the master.
Maybe some better logging would help, as the situation was not analyzable by looking at the logs only (hard for remotees to debug).

+1 for better logging, but also config.
several people have now hit this issue.

Nov 19 20:50:52 localhost kube-scheduler: E1119 20:50:52.057822 00628 reflector.go:106] watch of *api.Pod ended with error: unexpected end of JSON input

We should stop logging this because it has nothing to do with any actual problems but it's hard to convince people of this when they have a problem and this is sitting in their logs.
Anyway, we should add a check for this to the /validate handler (that kubelet thinks it's called what apiserver thinks it's called). It's a configuration error.

Events make it easy to see where scheduler assigned a pod, but they don't make it easy to see that kubelet is looking in the wrong place.
When we switch kubelet over to read pods from apiserver directly we could consider including some sort of check that generates an event or logs an error message (or returns a 401 or something) when a kubelet asks for pods not assigned to it.

@lavalamp revaluate next steps or close, now that boundPods gone.

Yeah. This error condition is no longer possible, I believe.


fix premajor logic

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

22 of 22 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 76.573%

Totals

Change from base Build<PHONE_NUMBER>:
0.4%

Covered Lines:
657

Relevant Lines:
858

💛  - Coveralls


Updates

Use response.text and response.data
Also:
live_api_starter.ipynb

Use enumerate instead of first
Give option to pass turns= when creating the autio loop so it can run without interaction.

live_api_starter.py

Use a single output message queue
Cleanup the exception handling
fix BGR2RGB ( like https://github.com/google-gemini/cookbook/pull/338 )
Limit output queue size
exception_on_overflow=False when debugging so it doesn't crash as sook as you pause.

websockets/live_api_starter.py

Use a single oputput message queue
Cleanup the exception handling

README.md

Mention video out.

Any suggestions? async_enumerate?

View entire conversation on ReviewNB

I think it would be clearer yes.

View entire conversation on ReviewNB


Add support for building multi-arch docker images with paketo

In mac M1, generated an image for testing SB 3.3 + CDS support using packeto buildpack which is part of bootBuildImage stage. This generated image is given following warning in mac M1 but able to run the app. But if I run the same image on cloud VM which is of type ARM64, it is giving following error and immediately existed with error exec /cnb/process/web: exec format error.
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested
Docker supports, multi arch build with specified arch types so wondering when this can be added to paketo build packs.

We do have ARM64 support. It is new and not totally complete across all buildpacks at this point in time. You're using Java buildpacks and those are all updated, so you should be OK.
The trick at this point is that you need to use a specific builder. Not all of the Paketo builders support ARM64.
The builder you want to use is paketobuildpacks/builder-jammy-buildpackless-tiny.
See Maven and Gradle.
The other point to note is that this is a "buildpackless" builder, so there are no buildpacks installed on the builder by default. This is intentional, but it means you need to supply a list of buildpacks you want to use when you perform your build.
With pack build this is done with the -b flag (you can set multiple).
With the Spring Boot build tools, check out the previous two links above for steps to set buildpacks too.
To confirm it's building arm64, watch the build output and look at the JVM it's installing. You should see it install an ARM64 compatible-JVM.
For what it's worth, there is no cross-compilation support with either pack or Spring Boot build tools. So if you want an ARM64 image, you need to build on a Mac m-series machine, an ARM64 VM or some other ARM64 system.
Hope that helps!

Hi @dmikusa Thanks for getting back. After making changes as mentioned, seeing following errors
docker run logs
docker logs -f 219d467cfa683eacd81bbc7e3bfe2a40924949592b27b6d6f9d0b28820a3deb3
ERROR: failed to launch: exec.d: failed to execute exec.d file at path '/layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper': fork/exec /layers/paketo-buildpacks_ca-certificates/helper/exec.d/ca-certificates-helper: exec format error

build config
tasks.named("bootBuildImage") {
	environment["BP_JVM_VERSION"] = "21"
	environment["BP_JVM_CDS_ENABLED"] = "true"
	builder = "paketobuildpacks/builder-jammy-buildpackless-tiny"
	buildpacks = [ "gcr.io/paketo-buildpacks/java" ]
}

bootbuildImage logs
Executing 'bootBuildImage'...

> Task :compileJava UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :resolveMainClassName UP-TO-DATE
> Task :bootJar UP-TO-DATE

> Task :bootBuildImage
Building image 'docker.io/library/test-counter-resets:0.0.1-SNAPSHOT'

 > Pulling builder image 'docker.io/paketobuildpacks/builder-jammy-buildpackless-tiny:latest' ..................................................
 > Pulled builder image 'paketobuildpacks/builder-jammy-buildpackless-tiny@sha256:5ae4709eca3c7c712533704a073e180a2f4c317e34d5b1a827ac04231cd45e7a'
 > Pulling run image 'docker.io/paketobuildpacks/run-jammy-tiny:latest' ..................................................
 > Pulled run image 'paketobuildpacks/run-jammy-tiny@sha256:4e3822b34116cbd0ffdac7d99f219be39cc48faf4257c102ed6312f0d47195ff'
 > Pulling buildpack image 'gcr.io/paketo-buildpacks/java:latest' ..................................................
 > Pulled buildpack image 'gcr.io/paketo-buildpacks/java@sha256:6c7a6dd99eb7cbd6785134636a460e57a65b208860e780e5f5a4468369212e80'
 > Executing lifecycle version v0.19.7
 > Using build cache volume 'pack-cache-4f3fd4f663c7.build'

 > Running creator
    [creator]     ===> ANALYZING
    [creator]     Restoring data for SBOM from previous image
    [creator]     ===> DETECTING
    [creator]     target distro name/version labels not found, reading /etc/os-release file
    [creator]     6 of 26 buildpacks participating
    [creator]     paketo-buildpacks/ca-certificates   3.8.0
    [creator]     paketo-buildpacks/bellsoft-liberica 10.8.0
    [creator]     paketo-buildpacks/syft              1.47.0
    [creator]     paketo-buildpacks/executable-jar    6.10.0
    [creator]     paketo-buildpacks/dist-zip          5.8.0
    [creator]     paketo-buildpacks/spring-boot       5.30.0
    [creator]     ===> RESTORING
    [creator]     Restoring metadata for "paketo-buildpacks/ca-certificates:helper" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:helper" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:java-security-properties" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/bellsoft-liberica:jre" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/syft:syft" from cache
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:web-application-type" from app image
    [creator]     Restoring metadata for "paketo-buildpacks/spring-boot:helper" from app image
    [creator]     Restoring data for "paketo-buildpacks/bellsoft-liberica:jre" from cache
    [creator]     Restoring data for "paketo-buildpacks/syft:syft" from cache
    [creator]     Restoring data for "paketo-buildpacks/spring-boot:spring-cloud-bindings" from cache
    [creator]     Restoring data for SBOM from cache
    [creator]     ===> BUILDING
    [creator]     target distro name/version labels not found, reading /etc/os-release file
    [creator]
    [creator]     Paketo Buildpack for CA Certificates 3.8.0
    [creator]       https://github.com/paketo-buildpacks/ca-certificates
    [creator]       Launch Helper: Reusing cached layer
    [creator]
    [creator]     Paketo Buildpack for BellSoft Liberica 10.8.0
    [creator]       https://github.com/paketo-buildpacks/bellsoft-liberica
    [creator]       Build Configuration:
    [creator]         $BP_JVM_JLINK_ARGS           --no-man-pages --no-header-files --strip-debug --compress=1  configure custom link arguments (--output must be omitted)
    [creator]         $BP_JVM_JLINK_ENABLED        false                                                        enables running jlink tool to generate custom JRE
    [creator]         $BP_JVM_TYPE                 JRE                                                          the JVM type - JDK or JRE
    [creator]         $BP_JVM_VERSION              21                                                           the Java version
    [creator]       Launch Configuration:
    [creator]         $BPL_DEBUG_ENABLED           false                                                        enables Java remote debugging support
    [creator]         $BPL_DEBUG_PORT              8000                                                         configure the remote debugging port
    [creator]         $BPL_DEBUG_SUSPEND           false                                                        configure whether to suspend execution until a debugger has attached
    [creator]         $BPL_HEAP_DUMP_PATH                                                                       write heap dumps on error to this path
    [creator]         $BPL_JAVA_NMT_ENABLED        true                                                         enables Java Native Memory Tracking (NMT)
    [creator]         $BPL_JAVA_NMT_LEVEL          summary                                                      configure level of NMT, summary or detail
    [creator]         $BPL_JFR_ARGS                                                                             configure custom Java Flight Recording (JFR) arguments
    [creator]         $BPL_JFR_ENABLED             false                                                        enables Java Flight Recording (JFR)
    [creator]         $BPL_JMX_ENABLED             false                                                        enables Java Management Extensions (JMX)
    [creator]         $BPL_JMX_PORT                5000                                                         configure the JMX port
    [creator]         $BPL_JVM_HEAD_ROOM           0                                                            the headroom in memory calculation
    [creator]         $BPL_JVM_LOADED_CLASS_COUNT  35% of classes                                               the number of loaded classes in memory calculation
    [creator]         $BPL_JVM_THREAD_COUNT        250                                                          the number of threads in memory calculation
    [creator]         $JAVA_TOOL_OPTIONS                                                                        the JVM launch flags
    [creator]         Using Java version 21 from BP_JVM_VERSION
    [creator]       BellSoft Liberica JRE 21.0.3: Contributing to layer
    [creator]         Downloading from https://github.com/bell-sw/Liberica/releases/download/21.0.3+12/bellsoft-jre21.0.3+12-linux-aarch64.tar.gz
    [creator]         Verifying checksum
    [creator]         Expanding to /layers/paketo-buildpacks_bellsoft-liberica/jre
    [creator]         Adding 137 container CA certificates to JVM truststore
    [creator]         Writing env.build/JAVA_HOME.default
    [creator]         Writing env.build/JRE_HOME.default
    [creator]         Writing env.launch/BPI_APPLICATION_PATH.default
    [creator]         Writing env.launch/BPI_JVM_CACERTS.default
    [creator]         Writing env.launch/BPI_JVM_CLASS_COUNT.default
    [creator]         Writing env.launch/BPI_JVM_SECURITY_PROVIDERS.default
    [creator]         Writing env.launch/JAVA_HOME.default
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.append
    [creator]         Writing env.launch/JAVA_TOOL_OPTIONS.delim
    [creator]         Writing env.launch/MALLOC_ARENA_MAX.default
    [creator]       Launch Helper: Reusing cached layer
    [creator]       Java Security Properties: Reusing cached layer
    [creator]
    [creator]     Paketo Buildpack for Syft 1.47.0
    [creator]       https://github.com/paketo-buildpacks/syft
    [creator]         Downloading from https://github.com/anchore/syft/releases/download/v0.105.1/syft_0.105.1_linux_arm64.tar.gz
    [creator]         Verifying checksum
    [creator]         Writing env.build/SYFT_CHECK_FOR_APP_UPDATE.default
    [creator]
    [creator]     Paketo Buildpack for Executable JAR 6.10.0
    [creator]       https://github.com/paketo-buildpacks/executable-jar
    [creator]       Command "packages" is deprecated, use `syft scan` instead
    [creator]       Class Path: Contributing to layer
    [creator]         Writing env/CLASSPATH.delim
    [creator]         Writing env/CLASSPATH.prepend
    [creator]       Process types:
    [creator]         executable-jar: java org.springframework.boot.loader.launch.JarLauncher (direct)
    [creator]         task:           java org.springframework.boot.loader.launch.JarLauncher (direct)
    [creator]         web:            java org.springframework.boot.loader.launch.JarLauncher (direct)
    [creator]
    [creator]     Paketo Buildpack for Spring Boot 5.30.0
    [creator]       https://github.com/paketo-buildpacks/spring-boot
    [creator]       Build Configuration:
    [creator]         $BPL_JVM_CDS_ENABLED                 false  whether to enable CDS optimizations at runtime
    [creator]         $BPL_SPRING_AOT_ENABLED              false  whether to enable Spring AOT at runtime
    [creator]         $BP_JVM_CDS_ENABLED                  true   whether to enable CDS & perform JVM training run
    [creator]         $BP_SPRING_AOT_ENABLED               false  whether to enable Spring AOT
    [creator]         $BP_SPRING_CLOUD_BINDINGS_DISABLED   false  whether to contribute Spring Boot cloud bindings support
    [creator]         $BP_SPRING_CLOUD_BINDINGS_VERSION    1      default version of Spring Cloud Bindings library to contribute
    [creator]       Launch Configuration:
    [creator]         $BPL_SPRING_CLOUD_BINDINGS_DISABLED  false  whether to auto-configure Spring Boot environment properties from bindings
    [creator]         $BPL_SPRING_CLOUD_BINDINGS_ENABLED   true   Deprecated - whether to auto-configure Spring Boot environment properties from bindings
    [creator]       Spring Cloud Bindings 2.0.3: Reusing cached layer
    [creator]       Performance: Contributing to layer
    [creator]         Extracting Jar
    [creator]       .   ____          _            __ _ _
    [creator]      /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
    [creator]     ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
    [creator]      \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
    [creator]       '  |____| .__|_| |_|_| |_\__, | / / / /
    [creator]      =========|_|==============|___/=/_/_/_/
    [creator]
    [creator]      :: Spring Boot ::                (v3.3.0)
    [creator]
    [creator]     2024-06-21T16:06:36.964Z  INFO 182 --- [test-counter-resets] [           main] c.e.t.TestCounterResetsApplication       : Starting TestCounterResetsApplication v0.0.1-SNAPSHOT using Java 21.0.3 with PID 182 (/workspace/runner.jar started by cnb in /workspace)
    [creator]     2024-06-21T16:06:36.966Z  INFO 182 --- [test-counter-resets] [           main] c.e.t.TestCounterResetsApplication       : No active profile set, falling back to 1 default profile: "default"
    [creator]     2024-06-21T16:06:37.974Z  INFO 182 --- [test-counter-resets] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8083 (http)
    [creator]     2024-06-21T16:06:37.983Z  INFO 182 --- [test-counter-resets] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
    [creator]     2024-06-21T16:06:37.983Z  INFO 182 --- [test-counter-resets] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.24]
    [creator]     2024-06-21T16:06:38.011Z  INFO 182 --- [test-counter-resets] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]

Can you please take a look? problem is my cicd runners are on both ARM64 & AMD64 machines (same about my deployment servers). so if there is no cross-compilation support i.e. not generate multi-arch builds, it will surely fail on releases. Can you please provide workarounds for this? many thanks

First thing, you've got some layers that were cached. Usually, caching is good and makes things faster. But in this case, it's not updating those cached layers with ARM64 binaries. I'll open a bug for that, cause it should consider the architecture in that caching decision, but for now, just delete your existing app images and the build cache.
 > Using build cache volume 'pack-cache-4f3fd4f663c7.build'

or you can change the image name, that will trigger a fresh build too.
I suspect that's going to fix your issue here. It'll give you a build that's consistently all arm64.
To your other question, what you can do is to build twice. Once for each architecture. Push those images to a registry as separate images. Then you can use the docker manifest to create an image manifest with those two images. Then you publish the manifest image and have your deployment servers pull the manifest image.
I'm hoping that in the future we'll have some support for that in pack build, but it's difficult because not every buildpack can cross-compile code. For Java apps it's simple, but for other types of apps it might not be as easy. You might need special tools or you might just have to run on separate hardware/VMs. Java native-image is in that boat presently. There's no cross-compile support in the tool, so you just need separate hardware/VMs to build that code.

Thanks for checking and providing insights @dmikusa . I saw something related to this here https://github.com/buildpacks/pack/issues/1570 and hopping this can be adopted

@dmikusa thanks! I'm testing Spring Boot 3.4.0 and there is a new imagePlatform attribute but it seems like it works for one platform at a time. I successfully build images for multiple platforms running spring-boot:build-image multiple times. I now have multiple images for different platforms, but I couldn't find a way to build and push a multi-platform manifest with a single tag (as buildx does).

Sure, and thank you for the interest on this topic! The image is a Kubernetes Operator built with Spring Boot and the Java Operator SDK as a Maven project. Both architectures are needed since the image is public and might be pulled on AMD or ARM platforms.
The image is built during a GitHub Actions workflow running:
docker buildx build --platform linux/amd64,linux/arm64 --tag foo/bar:baz --push .

Result of this command is a single tag (baz) pushed to Docker Hub providing images for both architectures, i.e. the foo/bar repository gets a single new tag for each workflow run.
I'd like to keep this behavior, so that I get a single tag pushed for both architectures.
With Spring Boot, I'm able to run:
mvn spring-boot:build-image -Dspring-boot.build-image.imagePlatform=linux/amd64 -Dspring-boot.build-image.imageName=foo/bar:amd64
mvn spring-boot:build-image -Dspring-boot.build-image.imagePlatform=linux/arm64 -Dspring-boot.build-image.imageName=foo/bar:arm64

and get two images with two different tags, one per platform. At this point, I can push the two tagged images to Docker Hub and then create a foo/bar:baz manifest that references both images. Great, but I get three tags on the repository for each release, and I'd prefer to avoid that. Note: you can't create a manifest if the images are not pushed to the registry first.
I don't know how docker buildx build manages to build images for both platforms and push them with a single tag, but it's very convenient.

Great, but I get three tags on the repository for each release, and I'd prefer to avoid that. Note: you can't create a manifest if the images are not pushed to the registry first.

My understanding is that the container that the index manifest points to needs to exist, but it doesn't need to be tagged. The index should reference the sha hash digest of the images it points to, not the tags. So if you remove the tag, it shouldn't break the index manifest image.
We use pack for publishing multi-arch buildpacks & stacks. It handles the multi-arch image generation for us, but we don't end up with stray tagged images. I believe that's how it accomplishes this.
The other thing you can do is push your intermediate images to https://ttl.sh or a local registry (maybe only exists in your CI job) and then copy the final manifest image out to Docker Hub. We you copy that out, if you use a tool like crane, it should handle moving everything that's needed for the index image to work correctly.

Ultimately, I'd like to switch to native images and building with Spring Boot and Paketo makes this very easy! I'm not looking for a single command but rather a single tag to get the images published.

That is where things get more difficult. With Java, it's not too hard to cross-compile images for you because the Java code is the same on both architectures, we just need to install different JVMs for each architecture. When you switch to native image, you can't do that anymore because native-image doesn't cross-compile. You need to introduce emulation. I think docker buildx does that for you, but don't quote me on that, I'm not an expert with that tool by any means.
It's possible that pack could do something similar, but pack is not as integrated with the OS as Docker, so it gets tricky. Do we require something like QEMU? Do we require users to configure that? Does pack take on the responsibility of bundling and setting that up? Can we do that inside a container, so the host OS doesn't require it? Aside from that, performance would be the next concern. Native image compiled in QEMU is like 40x slower (unscientific guesstimate), and it's fairly slow to begin with (IMHO).
My guess, at least short term, is the recommendation is going to be to do something like a matrix-style CI build of your different arch images, then stuff them into an index manifest for end-user consumption. Hopefully, we can smooth that out a bit though, and maybe create a way to do that without the intermediate tags.

Oh, I also forgot to mention the pack cli has manifest support in it too. It's similar to what's in docker. I suspect you'll have the same issues with tags as you do with Docker but it could be something to try.
> pack manifest -h
An image index is a higher-level manifest which points to specific image manifests and is ideal for one or more platforms; see: https://github.com/opencontainers/image-spec/ for more details

'pack manifest' commands provide tooling to create, update, or delete images indexes or push them to a remote registry.
'pack' will save a local copy of the image index at '$PACK_HOME/manifests'; the environment variable 'XDG_RUNTIME_DIR'
can be set to override the location, allowing manifests to be edited locally before being pushed to a registry.

These commands are experimental. For more information, consult the RFC which can be found at https://github.com/buildpacks/rfcs/blob/main/text/0124-pack-manifest-list-commands.md

Usage:
  pack manifest [command]

Available Commands:
  create      Create a new manifest list.
  add         Add an image to a manifest list.
  annotate    Add or update information about an entry in a manifest list.
  remove      Remove one or more manifest lists from local storage
  inspect     Display information about a manifest list.
  push        Push a manifest list to a registry.
  rm          Remove an image manifest from a manifest list.


Problem after update to 0.6.0

/Users/suenot/work/shakeapp-gallery/repos/mobile-app/node_modules/capacitor-camera-preview/android/src/main/java/com/ahm/capacitor/camera/preview/CameraPreview.java:95: error: cannot access AppCompatActivity
                    FragmentManager fragmentManager = getActivity().getFragmentManager();
                                                                 ^
  class file for android.support.v7.app.AppCompatActivity not found

npx cap sync I made.

The app compat v7 library isn’t used anymore, it should be resolved with the app compat 1.2.0 library, can you tell me what capacitor version and android version you use? This give me some things to look into

Android 9
"@capacitor/android": "1.5.2"
"@capacitor/core": "1.5.1"
Android Studio 3.6.2
Build #AI-192.7<IP_ADDRESS>08749, built on March 18, 2020
Runtime version: 1.8.0_212-release-1586-b4-5784211 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
macOS 10.15.4
GC: ParNew, ConcurrentMarkSweep
Memory: 2014M
Cores: 4
Registry: ide.new.welcome.screen.force=true
Non-Bundled Plugins:

the problem is with the androidx compatibility. when using an androidx plugin, you can resolve it by doing these steps.
Add the following two flags to true in your gradle.properties file at ProjectFolder/android/gradle.properties
android.useAndroidX=true
android.enableJetifier=true
Execute
npm install --save-dev jetifier
npx jetify
then in your package.json
add
"postinstall": "jetifier"
when you do an npx copy and open android studio the problem should be resolved.

@suenot, please let me know if you solve the problem


Debounce JenkinsCheck on the number of job failures

Add field consecutive_failures to StatusCheckResult model (and associated migration).
Retrieve from Jenkins the last good build, and compute from that the number of consecutive failures

5ac9c64 is a first stab with no migration, but severe limitations.

Codecov Report

Merging #540 into master will decrease coverage by 0.27%.
The diff coverage is 69.23%.

@@            Coverage Diff             @@
##           master     #540      +/-   ##
==========================================
- Coverage   81.92%   81.64%   -0.28%
==========================================
  Files          42       42
  Lines        2937     2953      +16
  Branches      175      178       +3
==========================================
+ Hits         2406     2411       +5
- Misses        472      482      +10
- Partials       59       60       +1

Impacted Files
Coverage Δ

cabot/cabotapp/jenkins.py
93.75% <66.66%> (-6.25%)
:arrow_down:

cabot/cabotapp/models.py
74.52% <70%> (-1.09%)
:arrow_down:

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 bc0e048...0170540. Read the comment docs.

Putting that on hold to get #541 in first.


Deleting user removes all their servers without warning

There isn't much warning that deleting a user will delete all of their servers.
We really need to handle that better, and the whole interface for them.

Oddly, it seems to hide it in the Admin CP but it is still visible on the front-end.
Assuming this is because it actually doesnt delete the server, and then the SQL joins fail so it just doesn't display.


Parse options without names vector

The only time the names vector has more than one Name in it is when parsing contiguous short options (-abc). We would continue putting Names into the vector until we hit a short option that takes an argument. At that point, we break, so we can process the argument.
So there's no point to reprocess the head of that vector, we already know they don't take arguments. Only the last one matters.
This relands #81, which was reverted in #84. It's not a breaking change, purely an optimization.
/cc @alexcrichton

Thanks! Sorry for the difficulties here!

All good.


Adding interval to all helpers and a new 'now' helper

{{moment-format (now interval=1000) 'MMMM Do YYYY, h:mm:ss a'}}
But also adds the interval option to all helpers.

I'm going to hold off on versioning this for now

@jasonmit  Any news on when this will make it into a release? Interested in the the now helper.

6.1.0 thanks for reminding

:+1: thanks for the quick action


CSS Vars for Code and Markdown Editor themes clashing

I presume there is a clashing in variables defined for code and markdown editor themes so if enabled dynamically and with different colour palettes, the latter might win.
To be better investigated.

Fixed in 0.1.3


WIP feat(assistant v2): creates message objects

adds a bit of implementation to postUserMessage:

creates the user message rows
creates "empty" agent messages with status "created"
yields the "new message" events

It doesn't run the agents yet

Also removeed participants from AssistantConversationType


Crashed: com.google.fira.worker apmpb_decode_repeated_setting

Xcode version: 10.1
Device: iPhoneX
OS: 12.1.4
Firebase SDK version: 5.9.0
Firebase Component: Core
Component version: 5.9.0

[REQUIRED] Step 3: Describe the problem
Crash affecting 0.5% of users in production
Steps to reproduce:
Firebase logs does not have any information to create this at our end
CRASH LOG
Crashed: com.google.fira.worker
0  Prod             0x10457d000 apmpb_decode_repeated_setting +<PHONE_NUMBER>
1  nanopb                         0x1047f3f24 pb_decode_noinit + 192
2  Prod             0x10457c514 apmpb_decode_measurement_config +<PHONE_NUMBER>
3  Prod             0x104581084 -[APMPBMeasurementConfig initWithBuffer:] +<PHONE_NUMBER>
4  Prod             0x10452f230 -[APMDatabase queryMeasurementConfigWithError:] +<PHONE_NUMBER>
5  Prod             0x10454eeb4 -[APMRemoteConfig measurementConfigFromDatabase] +<PHONE_NUMBER>
6  Prod             0x10454cfbc -[APMRemoteConfig initWithAppID:database:measurementConfig:] +<PHONE_NUMBER>
7  Prod             0x10454cd30 -[APMRemoteConfig initWithAppID:database:] +<PHONE_NUMBER>
8  Prod             0x104537e5c __47-[APMMeasurement startMeasurementOnWorkerQueue]_block_invoke +<PHONE_NUMBER>
9  libdispatch.dylib              0x1ac51a484 _dispatch_client_callout + 16
10 libdispatch.dylib              0x1ac4ea234 _dispatch_once_callout + 28
11 Prod             0x1045379b4 -[APMMeasurement startMeasurementOnWorkerQueue] +<PHONE_NUMBER>
12 Prod             0x104537568 -[APMMeasurement setEnabledOnWorkerQueue:] +<PHONE_NUMBER>
13 Prod             0x10454fd10 __51-[APMScheduler scheduleOnWorkerQueueBlockID:block:]_block_invoke +<PHONE_NUMBER>
14 libdispatch.dylib              0x1ac5196c8 _dispatch_call_block_and_release + 24
15 libdispatch.dylib              0x1ac51a484 _dispatch_client_callout + 16
16 libdispatch.dylib              0x1ac4f4fa0 _dispatch_lane_serial_drain$VARIANT$armv81 + 548
17 libdispatch.dylib              0x1ac4f5ae4 _dispatch_lane_invoke$VARIANT$armv81 + 412
18 libdispatch.dylib              0x1ac4fdf04 _dispatch_workloop_worker_thread + 584
19 libsystem_pthread.dylib        0x1ac6fd0dc _pthread_wqthread + 312
20 libsystem_pthread.dylib        0x1ac6ffcec start_wqthread + 4

Hello, do you know when was the first instance of this crash? And did it happen in any other previous versions?

We first saw this on iOS 12.1.2 version on 14th Feb 2019. Firebase core version is same 5.9.0

Is it possible for you to update to the latest Firebase version and check to see if you are still seeing the crash? The SDK can be found at: https://github.com/firebase/firebase-ios-sdk/releases

Hi Allen,
We will start publishing the application with latest Firebase version and update this ticket, if we receive any crashes from app users.
Thanks,
Rajesh

Closing due to inactivity and lack of new reports. Please comment here if you're still crashing on Firebase 6 and we'll re-open the issue.


Add syntax highlighting to README.md

Also fixed a string in the poem list that was ill-formatted with single quotes.
Really minor changes, but I think it makes the code examples much nicer to read instead of all black.

Coverage remained the same at 97.59% when pulling b7fbce8a3d61a7cc542a1782386c8d724c53c00f on ahesselgrave:patch-1 into 7e06fab09f1d30b2e88dc46bc5bdd5f27349a221 on Axiologue:master.

Coverage remained the same at 97.59% when pulling b7fbce8a3d61a7cc542a1782386c8d724c53c00f on ahesselgrave:patch-1 into 7e06fab09f1d30b2e88dc46bc5bdd5f27349a221 on Axiologue:master.

Coverage remained the same at 97.59% when pulling b7fbce8a3d61a7cc542a1782386c8d724c53c00f on ahesselgrave:patch-1 into 7e06fab09f1d30b2e88dc46bc5bdd5f27349a221 on Axiologue:master.

Coverage remained the same at 97.59% when pulling b7fbce8a3d61a7cc542a1782386c8d724c53c00f on ahesselgrave:patch-1 into 7e06fab09f1d30b2e88dc46bc5bdd5f27349a221 on Axiologue:master.

Coverage remained the same at 97.59% when pulling b7fbce8a3d61a7cc542a1782386c8d724c53c00f on ahesselgrave:patch-1 into 7e06fab09f1d30b2e88dc46bc5bdd5f27349a221 on Axiologue:master.

Appreciate the update: thank you!


Server queryable version and NI Linux RT service packaging

It would be nice to be able to query the version of the executable and get a version / sha associated with the binary (e.g. through -v or --version). I've noticed there is a /usr/bin/ni_grpc_device_server installed in NI's Linux RT base image (2022 Q4), but I don't think it belongs to any of the installed services and I cannot tell it's version.
It would also be helpful to be able to manage this specific software capability through NI MAX.
AB#2296987

The first part of this request has been added to grpc-device in # #1038. You can now run --version on ni_grpc_device_server and get the version on newer versions of grpc-device.