[go_router_builder] Allow the user to specify a type converter of the parameters

This is kind of an extension to https://github.com/flutter/flutter/issues/108437
Use case
I'm using go router builder and I have a route with optional parameters:
enum MyEnum {
  myFirstEntry,
  mySecondEntry,
}

@TypedGoRoute<MyRoute>(path: '/my-path')
class MyRoute extends GoRouteData {
  const MyRoute({
    this.myBoolean = false,
    this.myEnum,
  });

  final bool myBoolean;

  final MyEnum? myEnum;

  @override
  Widget build(BuildContext context) => const MyScreen();
}

If I want myBoolean to be true, it forces the url to be my-boolean=true. But I might want another formatting, like myBoolean=true (parameter not in kebab-case) or my-boolean=t (t instead of true).
There is the same issue with myEnum, it forces the url parameter to be my-enum (but I could want to keep myEnum) and the values to be kebab-case like my-first-route (but I could want to keep myFirstEntry : myEnum=myFirstEntry).
In my case, those parameters are set by a thrid party of my app and I cannot control them or change them, which prevents me from using go_router_builder.
Proposal
It could be nice to allow us to specify the formatting/create a converter like json_serializable and JsonConverter.
enum MyEnum {
  myFirstEntry,
  mySecondEntry,
}

@TypedGoRoute<MyRoute>(path: '/my-path')
class MyRoute extends GoRouteData {
  const MyRoute({
    this.myBoolean = false,
    this.myEnum,
  });

  @TypedGoRouteParameter<bool>(name: 'my-boolean')
  final bool myBoolean;

  @MyEnumConverter()
  final MyEnum? myEnum;

  @override
  Widget build(BuildContext context) => const MyScreen();
}

class MyEnumConverter extends TypedGoRouteParameter<MyEnum> {
  class MyEnumConverter(super.name);

  @override
  String? toUrlString(MyEnum myEnum) {
    // Return the correct format here.
    // If `null` is returned, fall back to the existing behavior.
  }

  @override
  MyEnum? fromUrlString(String value) {
    // Return the correct value here.
    // If `null` is returned, fall back to the existing behavior.
  }
}

looks like this can be solved by https://github.com/flutter/flutter/issues/110781


Hello!

When I run this environment,I couldn't see the log.csv,so I couldn't see the curve of training,could you help me?

Monitor only saves reward,but how to save the success rate?

Yes, for this you need to edit the stable-baselines monitor.py file as in here.

Fork the stable-baselines repo and put the folder under your deep-rl-grasping.
Then change the monitor.py  as in here.
After this change don't forget to install the new version of stable-baselines.
First do cd stable-baselines then do pip install -e .  If you don't do that you will still have the old version of stable baselines.

Thanks for your help!


Add a way to mark blocks as cold

Feature
I want to move all cold code to the end of the function to reduce the average amount of jumps and improve code locality.
Benefit
This can improve performance in the common case.

That may also become eventually useful for implementing supporting the branch-hinting proposal.


Allow handle file upload via multipart form

Hi there, not at all an expert here but I would like to try help a bit if I can.
Do you think either one of the two methods I provided here could be a good way of handling multipart form file-upload?
(I used some idea from here: https://github.com/rust-net-web/tide/pull/44)
The differences between the two methods I mentioned here are: (see the example first)

form_auto use a new body type created in body::MultipartFile to allow user of tide easier get a Vec<u8> of the file uploaded.
form_manual use a new head type head::NamedHeader to allow user get header "content-type" and raw body as Vec<u8> then manually use the multipart crate method to get what he want.

Not sure whether I am heading the correct direction here but I would like to hear your opinion. I am kind of new to Rust, BTW 😆

Thank you for the good input. I will try with just return the Multipart type back and "allow the users to loop through the response to find the file they are looking for." Will get back to you soon :)

Thanks for the revisions, looks great!


python37Packages.blessed: 1.17.11 -> 1.17.12

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python37Packages.blessed is: "A thin, practical wrapper around terminal capabilities in Python."
meta.homepage for python37Packages.blessed is: "https://github.com/jquast/blessed"
meta.changelog for python37Packages.blessed is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS

Warning: a test defined in passthru.tests did not pass

0 of 0 passed binary check by having a zero exit code.

0 of 0 passed binary check by having the new version present in output.

found 1.17.12 with grep in /nix/store/88acl6pbcm3jvbq8s4rqgw4ailpmkllb-python3.7-blessed-1.17.12

directory tree listing: https://gist.github.com/a016a6e53adc356a3a15aba3831ce15a

du listing: https://gist.github.com/bb55078d1d3323133c1cfcdb66888b1e

Rebuild report (if merged into master) (click to expand)

91 total rebuild path(s)

25 package rebuild(s)

25 x86_64-linux rebuild(s)
20 i686-linux rebuild(s)
23 x86_64-darwin rebuild(s)
23 aarch64-linux rebuild(s)

First fifty rebuilds by attrpath
awsebcli
mailman-web
python27Packages.blessed
python27Packages.inquirer
python37Packages.blessed
python37Packages.dask-xgboost
python37Packages.datatable
python37Packages.django-q
python37Packages.hyperkitty
python37Packages.inquirer
python37Packages.mailman-web
python37Packages.myfitnesspal
python37Packages.optuna
python37Packages.toggl-cli
python37Packages.xgboost
python38Packages.blessed
python38Packages.dask-xgboost
python38Packages.datatable
python38Packages.django-q
python38Packages.hyperkitty
python38Packages.inquirer
python38Packages.mailman-web
python38Packages.myfitnesspal
python38Packages.toggl-cli
python38Packages.xgboost

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/88acl6pbcm3jvbq8s4rqgw4ailpmkllb-python3.7-blessed-1.17.12 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python37Packages.blessed https://github.com/r-ryantm/nixpkgs/archive/524c24ceb83317642e17f8cec04b2f76628b512c.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/88acl6pbcm3jvbq8s4rqgw4ailpmkllb-python3.7-blessed-1.17.12
ls -la /nix/store/88acl6pbcm3jvbq8s4rqgw4ailpmkllb-python3.7-blessed-1.17.12/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review 1

1 package failed to build:

python37Packages.optuna

23 packages built:

awsebcli
mailman-web (python38Packages.mailman-web)
python27Packages.blessed
python27Packages.inquirer
python37Packages.blessed
python37Packages.dask-xgboost
python37Packages.datatable
python37Packages.django-q
python37Packages.hyperkitty
python37Packages.inquirer
python37Packages.mailman-web
python37Packages.myfitnesspal
python37Packages.toggl-cli
python37Packages.xgboost
python38Packages.blessed
python38Packages.dask-xgboost
python38Packages.datatable
python38Packages.django-q
python38Packages.hyperkitty
python38Packages.inquirer
python38Packages.myfitnesspal
python38Packages.toggl-cli
python38Packages.xgboost

Maintainer pings
cc @eqyiel for testing.

Result of nixpkgs-review pr 105427 1

6 packages marked as broken and skipped:

mailman-web
python37Packages.mailman-web
python37Packages.optuna
python37Packages.toggl-cli
python38Packages.mailman-web
python38Packages.toggl-cli

4 packages failed to build:

python37Packages.dask-xgboost
python37Packages.xgboost
python38Packages.dask-xgboost
python38Packages.xgboost

13 packages built:

awsebcli
python27Packages.blessed
python27Packages.inquirer
python37Packages.blessed
python37Packages.datatable
python37Packages.django-q
python37Packages.inquirer
python37Packages.myfitnesspal
python38Packages.blessed
python38Packages.datatable
python38Packages.django-q
python38Packages.inquirer
python38Packages.myfitnesspal

Result of nixpkgs-review pr 105427 run on x86_64-linux 1

1 package marked as broken and skipped:

python37Packages.optuna

23 packages built:

awsebcli
mailman-web (python38Packages.mailman-web)
python27Packages.blessed
python27Packages.inquirer
python37Packages.blessed
python37Packages.dask-xgboost
python37Packages.datatable
python37Packages.django-q
python37Packages.hyperkitty
python37Packages.inquirer
python37Packages.mailman-web
python37Packages.myfitnesspal
python37Packages.toggl-cli
python37Packages.xgboost
python38Packages.blessed
python38Packages.dask-xgboost
python38Packages.datatable
python38Packages.django-q
python38Packages.hyperkitty
python38Packages.inquirer
python38Packages.myfitnesspal
python38Packages.toggl-cli
python38Packages.xgboost


NCUM model filename issue

See attached screenshot for the reported error by @kam3545

@leiyangleon Could you look into this one while we add unit test for all models in scenario 1?

The issue should be fixed by this PR #281.

Thanks @leiyangleon.
@kam3545 can you give it a try?


Add metrics API container.

We still need to figure out how handle authentication and set configuration settings (if needed).

Ready for review.

:+1:


Tweaks

add *.swp to .gitignore
add some type hinting
make some commonly used read-only data structures global
some optimizations

Let me refer to your proposed changes briefly.
I have nothing against type hints, but I would prefer to wait until they are widely adopted and thus importing additional modules or objects won't be required. Especially considering the fact type hints do not bring any actual functionality. Please correct me if I'm wrong.
In practice, most of the data structures that you moved to the global namespace are specific and dedicated to the DomainFuzz class. I don't actually see the point in this change.
When it comes to optimizations, unfortunately the introduced changes significantly reduced the speed of the code within the generation of domain name permutations (see below). Mainly because it does not take advantage of python-idna module anymore, although other changes may also have a marginal impact.
$ time ./dnstwist.py --format list averylongdomainname.com >/dev/null
real	0m4,406s
user	0m4,329s
sys	0m0,076s
$ git checkout monoidic-master
Switched to branch 'monoidic-master'
$ time ./dnstwist.py --format list averylongdomainname.com >/dev/null
real	0m5,734s
user	0m5,693s
sys	0m0,040s

Overall, the changes do not introduce speed gains (quite the opposite), but are rather cosmetic or visual and in fact make the code look a bit more clean or "pythonic" to some extent. Now I can see the impact of my C habits when was working on the fuzzing algorithms years ago :)
That being said, I'm not going to accept this pull request. However, I do like some of your changes, especially around fuzzing functions, and would like to cherry pick some of your ideas if you don't mind. On the other hand, I'd like to give you the credit for your contribution. Any ideas?

I admit that the code may be a bit more code-golf-y than is suitable, especially in places with generator expressions and list/set comprehensions. Though here's some justification for some of the other changes.
After adding back the idna module, these are my speed results (zsh syntax for time output).
Current HEAD:
$ for i in {1..10}; do time ./dnstwist.py --format list averylongdomain.com > /dev/null; done
./dnstwist.py --format list averylongdomain.com > /dev/null  4,30s user 0,03s system 99% cpu 4,323 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,14s user 0,03s system 99% cpu 4,177 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,01s user 0,03s system 99% cpu 4,044 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,47s user 0,04s system 99% cpu 4,502 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,72s user 0,03s system 99% cpu 3,756 total
./dnstwist.py --format list averylongdomain.com > /dev/null  5,02s user 0,04s system 99% cpu 5,054 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,46s user 0,03s system 99% cpu 4,493 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,58s user 0,02s system 99% cpu 4,601 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,76s user 0,03s system 99% cpu 3,795 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,96s user 0,04s system 99% cpu 4,996 total

This PR, minus the idna module removal:
$ for i in {1..10}; do time ./dnstwist.py --format list averylongdomain.com > /dev/null; done                                                           130
./dnstwist.py --format list averylongdomain.com > /dev/null  3,50s user 0,04s system 99% cpu 3,534 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,08s user 0,04s system 99% cpu 4,116 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,68s user 0,03s system 99% cpu 3,707 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,90s user 0,03s system 99% cpu 3,935 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,31s user 0,02s system 99% cpu 4,334 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,08s user 0,04s system 99% cpu 4,118 total
./dnstwist.py --format list averylongdomain.com > /dev/null  4,73s user 0,03s system 99% cpu 4,763 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,43s user 0,03s system 99% cpu 3,457 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,68s user 0,03s system 99% cpu 3,715 total
./dnstwist.py --format list averylongdomain.com > /dev/null  3,92s user 0,04s system 99% cpu 3,959 total

At the very least, making the multiline strings at line 4 and 867, with the dnstwist logo in them, into raw strings to avoid unintentionally treating \ as an escape character, won't hurt. They currently raises DeprecationWarnings, like
dnstwist.py:4: DeprecationWarning: invalid escape sequence \/
The reason for moving constants out of functions is so they are not reconstructed on successive calls to the function. Here's a simple example:
>>> import dis
>>> def f():
...     x = {'a': 'b', 'c': 'd'}
...     return x['a']
...
>>> dis.dis(f)
  2           0 LOAD_CONST               1 ('b')
              2 LOAD_CONST               2 ('d')
              4 LOAD_CONST               3 (('a', 'c'))
              6 BUILD_CONST_KEY_MAP      2
              8 STORE_FAST               0 (x)

  3          10 LOAD_FAST                0 (x)
             12 LOAD_CONST               4 ('a')
             14 BINARY_SUBSCR
             16 RETURN_VALUE
>>> m = {'a': 'b', 'c': 'd'}
>>> def f2():
...     return m['a']
...
>>> dis.dis(f2)
  2           0 LOAD_GLOBAL              0 (m)
              2 LOAD_CONST               1 ('a')
              4 BINARY_SUBSCR
              6 RETURN_VALUE

Here, the x variable in f is reconstructed on each call to the function, as can be seen in the disassembly, while in f2, the constant is initialized outside of the function and is only accessed as a global variable. The disassembly is, of course, larger for the __homoglyph method, considering the size of glyphs, and similarly for DomainFuzz's __init__, where large constants are reconstructed on each call prior to the useful code running.
Considering the code duplication, for the two passes in __homoglyph, it should probably be extracted to a different method.
Also, I added õ to the glyphs for o.
The magic numbers in __bitsquatting for ASCII string values wouldn't be hurt by being replaced with something more readable.
Some of the iteration over range(len(x)) could be replaced with iterating either over x itself or enumerate(x). And range(0, x) can just be shortened to range(x) in many places.
Why do the __homoglyph passes use while loops instead of for loops over a range if j isn't modified in the loop body?
__vowel_swap is checking a condition a bit too late:
def __vowel_swap(self):
    vowels = 'aeiou'
    result = []
    for i in range(0, len(self.domain)):
        for vowel in vowels:
            if self.domain[i] in vowels:
                result.append(self.domain[:i] + vowel + self.domain[i+1:])
    return list(set(result))

The for vowel in vowels and if self.domain[i] in vowels should be swapped, so that you check the if statement len(vowels) times fewer times.
Plus collecting data in a list, then deduplicating it with list(set(x)), could be made more efficient by just collecting data in a set to begin with and then converting it into a list afterwards. Or you can easily avoid generating duplicates in the first place in some cases, such as by avoiding replacing a character with itself in __replacement.
Having nested function definitions without a clear reason (like for closures) seems like bad code organization as well.

Let's focus for now just on whether to make constants global. I think you oversimplified your code snippet too much and unnecessarily reduced it only to Python bytecode. I slightly changed the code to better reflect the actual implementation while still keeping it simple. As you can see, speed gains are negligible. In practice you can't tell the difference.
>>> import timeit
>>>
>>> def f():
...     x = {'a': 'b', 'c': 'd'}
...     for i in range(100000):
...             c = x.get('a')
...
>>> m = {'a': 'b', 'c': 'd'}
>>> def _f2():
...     for i in range(1000):
...             c = m.get('a')
...
>>> def f2():
...     _f2()
...     for i in range(100):
...             _f2()
...
>>> timeit.timeit('f()', number=10, setup='from __main__ import f')
0.08223409298807383
>>> timeit.timeit('f2()', number=10, setup='from __main__ import f2')
0.08814632496796548

Very well. But now let's try this with a larger object, such as with the one from the original code.  Your original code snipped, regardless the size of the variable, doesn't reflect the actual implementation in any way. That being said, I don't see speed gains justifying such a code refactoring, especially these constants are specific to this particular class only.

Another reason for extracting the glyph table would be for allowing one to provide their own, and having the glyph table provided in the code here simply be a default. Various TLDs have restrictions on the character sets permitted. For instance, .EE (section 3.2.2), .РФ (section <IP_ADDRESS>), .DE (section V).
Though this would have to be introduced itself beyond just moving some constants around. And you could still have a solution where you end up constructing it inside of the function, if you are so inclined.

When it comes to IDN restrictions required by TLD authorities, the general rule of thumb is to not mix characters from different scripts (for example latin with greek). In practice the restrictions are quite subtle, plus managing and keeping it up to date is not something I would like to do at the moment.
I have reviewed your changes. I'd love to merge the following:

Add *.swp to .gitignore
Raw multi-line strings
DomainFuzz methods: generate, insertion, hyphenation, omission, repetition

Please note that I've recently reworked a few methods of DomainFuzz class so pull the most recent version first.

managing and keeping it up to date is not something I would like to do at the moment

Hence the suggestion to make it user-configurable, similarly to tld_dictionary.
I will look at updating the PR soon.

Kind reminder about PR :)

Thank you.


Fix decoding of invalid top level value

fix https://github.com/goccy/go-json/issues/176

Codecov Report

Merging #184 (2cb792c) into master (6fbf3fc) will increase coverage by 0.01%.
The diff coverage is 81.25%.

@@            Coverage Diff             @@
##           master     #184      +/-   ##
==========================================
+ Coverage   81.76%   81.77%   +0.01%
==========================================
  Files          49       49
  Lines       21481    21494      +13
==========================================
+ Hits        17563    17576      +13
- Misses       3047     3048       +1
+ Partials      871      870       -1


Ion-header flickering

Bug Report
Ionic version:

[x] 4.x (rc.0)
Current behavior:

Ion-header is very unstable in rc.0, which wasn't present in prior releases. Using the router, going back and forth makes the header stutter, removes ion-title sometimes. Is present on DevApp and iOS Simulator.
Expected behavior:

To be more stable and not stutter or loose ion-title. Works fine on browser.
Steps to reproduce:

Going into Settings -> Terms. And pressing back button. Go back and forth.
Related code:

https://github.com/lucaslevin/trainer

Other information:

Ionic info:

Ionic:

   ionic (Ionic CLI)             : 4.6.0 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 4.0.0-rc.0
   @angular-devkit/build-angular : 0.11.4
   @angular-devkit/schematics    : 7.1.4
   @angular/cli                  : 7.1.4
   @ionic/angular-toolkit        : 1.2.2

Cordova:

   cordova (Cordova CLI) : 8.1.2<EMAIL_ADDRESS>   Cordova Platforms     : ios 4.5.5
   Cordova Plugins       : cordova-plugin-ionic 5.2.9, cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.3.1, (and 7 other plugins)

System:

   ios-deploy : 1.9.2
   NodeJS     : v10.12.0 (/usr/local/bin/node)
   npm        : 6.5.0
   OS         : macOS Mojave
   Xcode      : Xcode 10.1 Build version 10B6

@mhartington i was going to post an issue regarding a flickering of all text elements on navigation when a new page is pushed into the stack.  It has been a major bug on our end, and includes the elements in the header as this issue has logged, but I believe @liamdebeasi PR might fix that... just wanted to confirm you guys planned to merge this PR for an upcoming release?

@mhartington, thank you for your effort. I hope this will be fixed asap, we have apps is in production and we need this to be fixed before their releases.

Hi everyone,
I just wanted to let you all know there has been a fix created for this, and it is currently in review (#17422). I am trying to get this out the door soon.
Thanks for using Ionic!

Linking duplicate issues: #17022 and #17297

Has this issue been fixed or is there any work around? I am currently experiencing this.

Hi everyone,
This issue has been resolved by #17422. I just published a nightly build of Ionic with this fix (4.1.0-dev.201903041834.ad20bd6). It would be great if people could test and verify that the issue has been resolved for them. Thanks!

@liamdebeasi I've checked nightly build and the flickering gone. Thanks a lot! It was non blocking but very annoying bug.

I know this may be off topic and I apologize in advance, but can anybody tell me how can I test the nightly build in my app?

@Gilbert1391 change in package.json value of dependencies > @ionic/angular to "4.1.0-dev.201903041834.ad20bd6" and run npm install

It doesn't help me !!! The flickering isn't gone @astec

Thanks @astec, it totally works for me !!!


pull request for e2e test at 12/10/2016 21:56:04

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


Unable to locate package

Hi I'm trying to install the binary version of this package, but can't seem to find it in the ubuntu or debian package repositories. Is there a repository that needs to be added to my source list?
Have tried:
sudo apt install ros-indigo-mir-robot
sudo apt install ros-jade-mir-robot

Is it available for ROS noetic?
I tried
sudo apt install ros-noetic-mir-robot
but it doesn't work

Yes, it is available. Your command is also correct, I just verified that it works. Make sure that you're running Ubuntu 20.04, that you've enabled the apt repository and that you've run sudo apt update before.


downselect approach to (npm/yarn) repo architecture

mono vs nested repo

mono repo would allow for

ASoTing of subpackages without having to make them published packages
reduced recursive check outs of published packages

References

https://classic.yarnpkg.com/blog/2017/08/02/introducing-workspaces/

Decision: go w/ mono repo, as per https://github.com/Mach30/m30pm/issues/16#issuecomment-1670358513


Add events to the site

Once finished, this PR will add:

an events overview page
a page for events by "host" (Orlando Developers, Orlando DevOps, Orlando JS, etc.).
automatically generated pages per event

Known open issues:

[x] Update styling for mobile devices.
[ ] Test on Chrome and Safari (Firefox FTW!).
[x] Redesign the single-event page.
[ ] The heading of the event card sits too low compared to the date stamp.

This was updated under a more recent PR and hackathon. Please update the most recent version.


Add AndroidX Manifest Instructions

Changes Proposed in this pull request:

Adds AndroidX instructions

I was going to do this and forgot lol. Thanks!


Add MQTT notification

Be able to notify to MQTT queue

apprise maybe supports in the future.
Related request: https://github.com/caronc/apprise/issues/388

Just check again, MQTT has been supported by apprise.
https://github.com/caronc/apprise/releases/tag/v<IP_ADDRESS>
However, you need to install a library, so I believe it can be done for non-Docker users only.
pip install paho-mqtt

He could also build his own Docker image via:
FROM louislam/uptime-kuma:1-debian

RUN pip3 install --no-cache-dir paho-mqtt


Fix namespace isn't resolved correctly in VirtualService delegation

fix: #30387
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[X] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Pull Request Attributes
Please check any characteristics that apply to this pull request.
[ ] Does not have any changes that may affect Istio users.

@hzxuzhonghu: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
927f0fa8e0eb2dd1e0fee01ff335c5754726cc31
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@hzxuzhonghu: The following test failed, say /retest to rerun all failed tests:

Test name
Commit
Details
Rerun command

release-notes_istio
927f0fa8e0eb2dd1e0fee01ff335c5754726cc31
link
/test release-notes_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest

/retest

In response to a cherrypick label: #30423 failed to apply on top of branch "release-1.7":
Applying: resolve virtual service short name before merge
Using index info to reconstruct a base tree...
M	pilot/pkg/model/push_context.go
Falling back to patching base and 3-way merge...
Auto-merging pilot/pkg/model/push_context.go
CONFLICT (content): Merge conflict in pilot/pkg/model/push_context.go
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 resolve virtual service short name before merge
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

In response to a cherrypick label: #30423 failed to apply on top of branch "release-1.7":
Applying: resolve virtual service short name before merge
Using index info to reconstruct a base tree...
M	pilot/pkg/model/push_context.go
Falling back to patching base and 3-way merge...
Auto-merging pilot/pkg/model/push_context.go
CONFLICT (content): Merge conflict in pilot/pkg/model/push_context.go
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
Patch failed at 0001 resolve virtual service short name before merge
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

In response to a cherrypick label: new issue created for failed cherrypick: #30429

In response to a cherrypick label: new issue created for failed cherrypick: #30429

In response to a cherrypick label: new pull request created: #30430

In response to a cherrypick label: new pull request created: #30430

In response to a cherrypick label: new pull request created: #30431

In response to a cherrypick label: new pull request created: #30431


In Html::renderSelectOptions() pass 3 argument not by reference  + Adopt psalm.

Q
A

Is bugfix?
❌

New feature?
❌

Breaks BC?
✔

Fixed issues
-

In Html::renderSelectOptions() pass 3 argument not by reference
Fix: incorrect work with iterable $selection in methods checkboxList, radioList and renderSelectOptions
Update dev dependencies
Adopt Psalm (error level 1)
Clean up

👍


Shallow throws Invariant violation: Unable to find node on an unmounted component

Describe the bug
When using shallow to test a component that uses ReactDOM.findDOMNode(this) in componentDidMount, the following error is thrown:
To Reproduce
Steps to reproduce the behavior:

Use the following component :

export class TipeeTopbar extends Component {

  DOMElement = null

  componentDidMount() {
    this.DOMElement = ReactDOM.findDOMNode(this)
  }

  componentWillUnmount() {
    this.DOMElement = null
  }

  render() {
    return (
      <div>
            /* ... */
      </div>
    )
  }
}

Use the following test with latest versions of enzyme and enzyme-adapter-react-16:

it('Renders everything if all conditions succeed SHALL', () => {

    const isModuleActive = () => true,
      getConfig = () => ( { show_birthdates: true }),
      component = shallow(
        <TipeeTopbar getConfig={getConfig} isModuleActive={isModuleActive} />
      )

    expect(component).toMatchSnapshot()
    expect(component.find(QualityBookmarks).length).toEqual(1)
    expect(component.find(PersonsBirthdays).length).toEqual(1)

  })

See the following error and stacktrace

Topbar unit tests › Renders everything if all conditions succeed

    Invariant Violation: Unable to find node on an unmounted component.

      at invariant (node_modules/react-dom/cjs/react-dom.development.js:55:15)
      at findHostInstance (node_modules/react-dom/cjs/react-dom.development.js:17504:7)
      at Object.findDOMNode (node_modules/react-dom/cjs/react-dom.development.js:17974:12)
      at TipeeTopbar.componentDidMount (src/core/components/topbar/Topbar.js:88:73)
      at node_modules/enzyme/build/ShallowWrapper.js:215:22
      at Object.batchedUpdates (node_modules/enzyme-adapter-react-16/build/ReactSixteenAdapter.js:474:22)
      at new ShallowWrapper (node_modules/enzyme/build/ShallowWrapper.js:214:26)
      at shallow (node_modules/enzyme/build/shallow.js:21:10)
      at Object.it (src/__tests__/core/components/topbar/Topbar.test.js:21:37)
          at new Promise (<anonymous>)
      at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
          at <anonymous>

Expected behavior
The test runs correctly and shallow mounts the component
Desktop (please complete the following information):

OS: MacOS High Sierra
Browser: none (Terminal)

Yes, because ReactShallowRenderer doesn't support ReactDOM.findDOMNode.
I think shallow is not a good option to test DOM operations.
In this case, I recommend to use mount or shallow with disableLifecycleMethods option.

Indeed, you need to use mount to test things with the DOM.
Separately, instead of findDOMNode, you should be using a ref callback, or createRef.


command not found

command not found not found on mac, by typing the command at the terminal:
json-server --watch db.json
does anyone know what may be happening?

Did you install it globally?

Yes, I had it installed Globally, I had a user permission problem in one of the installation steps so this error occurred, I decided by adding the command "sudo".
anyway thanks for responding!


Flat Bedrock

I included Better Bedrock Generator mod to flatten the bedrock but TerraForge World generation is overwriting it. With other world generation it works.
Overall it would be nice if TerraForge would add the feature to flatten the bedrock if wanted so no other mod is required to do that. This issue is also a feature request.

It wouldn't be hard but what's the benefit of this?
I do the same as vanilla at the moment - changing it would affect or spawning, albeit to a small degree

A lot of people like flat bedrock.

What TheUntamed is mentioning feels a bit like a bug, in terms of interaction with certain mods.  ImmersivePortals, for example, allows dimension stacking (nether under overworld) and is supposed to replace bedrock with obsidian so it can be mined,
TerraForged overwrites this behavior, making the dimension stacking largely pointless without additional mods (none of which seem to be updated for 1.15).

Thanks, that's a bit more of a reasonable use-case. I can probably add an option to let the user define a custom material

That would be extremely helpful, yes, much appreciated!

Added to 0.0.14:
You can define the material, minimum height of the layer and the random variance.
If you want it to be flat you set 'variance' to 0 and set the 'depth' slider to however thick you want it to be.


Implements V2 of BadiDate library

Things to fix before merging:

There need to be clear instructions on how to generate a
distributable badi.js file for browsers. There should always be a
folder with a final javascript file in the repository so someone can,
if they like, download a version of the library that's compatible with
all major browsers. They shouldn't have to download or install any
tools, and they shouldn't have to look hard. It would be preferable
(but it's not necessary) if there were a human-readable file for this
purpose (the packaged code is a real pain to read).

Right now, it's possible to merge the master branch into the
gp-pages branch so that github can host the example. It's okay if that
particular mechanism no longer works, but we need an automatic way to
publish to github pages. One option would be to host all the website
pages out of the /docs folder and provide an easy way to repopulate
that folder with a newly-built badi.js.

Function/variable names need to represent what functions/variables
do. For the most part it's okay, but some names changed in ways
that obfuscate behavior. For example, find_sunset is now called
getGregorianDateForSunset. What this function actually does is it
calculates the time of sunset on a given gregorian day and returns
that in a date object. However, the word "For" in the function
name implies that you give the function a "Sunset" and you get a
GregorianDate back, which doesn't make sense. A better name would be
getUTCTimeForSunsetOnDate or maybe getSunsetTimeOnGregorianDate.

Frequently, the name "Gregorian" is misused, and it would be more
meaningful to write "UTC". UTC corresponds to universal time without
regard for a system of calendar (except that internally its stored
in a gregorian way). Some of these "Gregorian" variables really
represent a moment that's significant on the Badi calendar and not
the Gregorian one. Also, keeping track of which dates are in UTC and
which are local to a place is often the real chore, whereas keeping
track of whether something is stored in a "Date" object isn't. For
example the gregorianSunset and gregorian8NewMoons variables in
getGregorianDateForTwinBirthdays. There's really nothing "Gregorian"
about these value other than the fact that it's stored in a date
object. However, it represents a specific UTC time. It would be more
sensible to call them UTCSunset or UTCNewMoons. With all the name
changes, understanding what the function does now is harder.

Helpful comments that were previously in the code are missing. For
example, find_naw_ruz used to have the comment "Gets the day of Naw
Ruz in a given gregorian year. It returns the day at 00:00:00 UTC". I
haven't looked for other missing helpful comments, but if there are
any, they should be replaced (I just came across this because it was
relevant to one of the questions).

Conditionals.

The syntax (conditional ? a : b) is awful to read. An if-statement
is almost always preferable. It's not worth using this syntax just
to make a variable const -- let it be mutable!
There is no advantage in using this conditional notation on a
statement that would take up multiple lines anyway. An if-statement
is always more clear than this.
Even in the most extreme cases where use could be justified, like
  x = function(foo, bar, oof, doof, goof, ( awesome ? 3 : 4 ))`

I prefer (although this is just me),
  if(awesome)
    hoof = 3
  else
    hoof = 4

  function(foo, bar, oof, doof, goof, hoof)

Remove comments with "QUESTION".  I've answered them below.

There are several yarn.lock files in the branch which I assume
shouldn't be there (this is for maintaining local machine state,
right? I could be misunderstanding).

Things I would like to see fixed, but that I won't insist on:

Many functions are in their own file. This just creates more work for
to edit the project. Relevant functions should be grouped together.
At least getGregorianDateFor{NawRuz,NextNewMoon,TwinBirthdays}
could be together.

I don't like camelCase. If possible, I prefer underscored_names
unless there's a really good reason to change it. At least just
CapitalizeEveryWord.

I prefer that file names don't start with underscores unless
there's a technical reason why it should be that way.

There are 544 folders in node_packages in the source tree. Do
these need to be there? If so, why? Do users need these packages or
just developers?

It's sometimes not worth wrapping a line of the form

    let variable = function(foo)

into

    let variable =
      function(foo).

If the line is just barely too long, the cleanest solution may
be to make the variable or function names shorter. This is the
case, for example, with the line that declares `gregorian8NewMoons`
in `_getGregorianDateForTwinBirthdays`. It might also be okay to
wrap lines a little longer. I'm guessing right now it goes to 80,
but I'm okay with it as high as 100 (it'll still fit on 1/2 of my
screen). Middle-ground like 90 is fine too.  But that's up to you.

In general I'm a little disapointed with the added complexity.
 Now, anyone who
knows only javascript could work on the whole project. With
these changes you also need to have some level of familiarity with
node, webpack, jest, and babel to work on the project end-to-end
(and probably a CI tool, coming soon). If there's anything we can
do to reduce the number of tools I would appreciate it.
Along these lines, I would appreciate a reminder on why this
packaging is helpful. I don't see improvements to ease of
development or library use. Does the packaging really make it
easier for developers to use the library on other platforms? If
so, how do they do this? Where do they find instructions?

Questions:
fromGregorianDate: We are getting the UTC year here, is that what we want?
Yep. We could already be a whole year off anyway depending on when
Naw-Ruz is, and so the if-statement a few lines down corrects this.
Getting the "localtime" year would be very involved because it would
require tracking down the timezone of the given latitude/longitude
coordinates.
fromGregorianDate: Why are we subtracting two days?

We start with the date of Naw Ruz at 00:00:00 UTC
Then for every Badi month that's passed we add 19 days
We also add one day for each day on the Badi calendar. HOWEVER,
we've already added one too many because the first "day" of a month
corresponds to not incrementing the gregorian date at all. In other
words, the Badi days of the month are 1-indexed, but the number of
days that we need to add to the starting date should be 0-indexed.
Now, the date we currently have is at 00:00 UTC. This means that
the Badi day actually started at sunset the night before. So we need
to substract one more day to get the right sunset.

getGregorianDateForTwinBirthdays: Why are we getting sunset for naw
ruz date? Is it not already sunset.
From the comments in the original source code of find_naw_ruz:
"Gets the day of Naw Ruz in a given gregorian year. It returns the
day at 00:00:00 UTC." Thus, you need to get the sunset time in
Tehran on this day to find the moment the year starts in Tehran.
There's a good reason for this. The year starts at a different time
for every place in the world. It starts at sunset, Tehran time, in
Tehran. But it will start earlier in India and China (when the sun
sets there) and later in Europe and the Americas. Forcing the time
to be at 00:00:00 makes it clear to the consumer of this value that
they need to really think about what it means to have a Gregorian
day which "corresponds" to Naw Ruz.
Regarding the questions about getGregorianDateForNextNewMoon:
The BlueYonder function MoonQuarters returns the day/time of the
new moon, first quarter, full moon, and third quarter in an array
of length 4 (Julian dates). jdtocd is a function that converts
Julian dates to Gregorian ones (I didn't name that function...) The
problem is that it might return the wrong lunar cycle and give a
new moon date prior to the date we're looking for. So a second call
to the MoonQuarters function needs to be made -- this time with a
date that's squarely in the next lunar cycle. This function could
be written without recursion, but it would essentially require
duplicating the code that's already there or writing a loop. I think
the recursive one is nicer, although admittedly this code is tricky
and could use a few comments.
getGregorianDateForTwinBirthdays: Why are we setting to sunset in the
previous line if we are just getting the day in the next line?
I'm not totally sure. It's possible that this was intended to
compensate between the time difference of Tehran and UTC, but I
don't think it's actually necessary. Another possibility is that an
older version of the code was returning the time, and then it got
changed to the current interface without removing the dead code. If
all the tests pass with this statement removed we can take it out.

Correction -- I see now that node_modules is in .gitignore.  I think I ran "git status" and saw no results so I thought maybe that some were from the branch, but that's not the case.  You can safely ignore that bit of the comment.

Also, I just tried this.  What went wrong?
$ npm run test

><EMAIL_ADDRESS>test /home/berkeley/badical/badi-cal
> jest

 FAIL  src/__tests__/_getGregorianDateForNawRuz-test.js
  ● _getGregorianDateForNawRuz › gets the correct naw ruz date

    ReferenceError: EquinoxCalc is not defined

      at Object.vernal_equinox (src/extern/stellafane.js:20:12)
      at gregorianDateForNawRuz (src/_getGregorianDateForNawRuz.js:19:77)
      at Object.<anonymous> (src/__tests__/_getGregorianDateForNawRuz-test.js:15:79)
      at process._tickCallback (internal/process/next_tick.js:103:7)

  _getGregorianDateForNawRuz
    ✕ gets the correct naw ruz date (6ms)
    ✓ handles the edge case of year 2026 (2ms)

Test Suites: 1 failed, 1 total
Tests:       1 failed, 1 passed, 2 total
Snapshots:   0 total
Time:        2.258s
Ran all test suites.

npm ERR! Linux 3.16.0-4-amd64
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "test"
npm ERR! node v7.5.0
npm ERR! npm  v4.1.2
npm ERR! code ELIFECYCLE
npm ERR<EMAIL_ADDRESS>test: `jest`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>test script 'jest'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the badi-cal package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     jest
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs badi-cal
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls badi-cal
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/berkeley/badical/badi-cal/npm-debug.log

I just had an idea about variable naming (which we can do after merging in your change set).  As far as I can tell, we only store two kinds of values in a javascript Date object:

The time of a fixed astronomical event (in UTC).  This might be a moment of sunset, the moment of a new moon, the spring equinox, or so on.
A gregorian day at a fixed time (e.g. midnight).
In some cases we store both kinds of values in one variable at different times (e.g. when computing the new moons)

I think we should use different names for the first two kinds of variables (e.g. UTCFoobar or GregFoobar), and introduce new variables to account for the third kind.  This would certainly be an improvement over the original variable names, which admittedly aren't that informative.  I can do this after we merge your changes, so there's no need for you to worry about this.
As an example, this was partially done in find_naw_ruz in the current version of the code, where some variables ended with _day and others ended with _utc.  But that wasn't systematic.  What would actually be really ideal is to rewrite the code with a different type for a gregorian day (e.g. month/day/year) and only use Date objects for UTC.  I don't know if doing that refactor is worth it though.
As far as I can tell there are no other "types" of variables where we store time, but if for some reason we ever stored something with localtime we might name that variable differently.

This looks like good progress!  I have a few more questions.  Most of these, I think, will just be a matter of updating the documentation:

It looks like there's a typo in the README.md; I think we want npm run create-build rather than npm run create-bundles.

What is the src/examples folder supposed to contain?  I'm a little confused because src/examples/example1/dist seems to have compiled (and stale) javascript from the previous commit.

What's the difference between browser-build-v1 and browser-build-v2?  Perhaps you can explain this in the README?

It looks like there are some stale files in build-v2 from the previous commit; how do we clean those?

Is there some kind of cleaning step that users can run (e.g. from npm) that will clean all the built files so we know we're starting from scratch? (and document this in the README too)

The divisions of functions into files makes sense I think.  I agree separating data out is a good idea.  I'm noticing that the functions in the "util" file are generally doing astronomical calculations (returning the UTC time of a particular event), where as the BadiDate.js file is performing computations specific to a calendar (e.g. counting months or days in relation to the astronomical events).  So maybe we can instead call that file Astronomy.js or something like that?  I'm sure there's better names but that will do.

The current README explains, in broad terms, what all the different source files do (i.e. the extern folder, badi.js, and the demo code).  Could you add a bulleted list  into the new README that explains the same things?  For example, what does each subdirectory of src/ contain, what kinds of functions are in each of the different files, etc.?  The sections of the README can be ordered: Purpose, Environment Setup, Running the Examples, About the Code (new section), Before Committing, Status, and Specs.  The "Before Committing" section is good and important, and I wouldn't want it to be lost at the bottom.  You're welcome to add more of course... anything that helps explain the code, the tooling, or how to contribute is a plus.

I really want to be able to have the web interface for badi-cal stay up-to-date, even if it's not fully automated.  Publishing to github only involves putting all the files we want to host into a single folder.  I'm okay with it not even being the root folder (we could add an index.html file in the root directory with a little bit of javascript to redirect users to the proper location).  Shouldn't there be an easy way to build the example and put it in a predictable spot as part of 'create-build'?  My guess is that doing this is very easy, and I'd like to see that work before merging.  The only other thing to do is to update any links on the webpage to make sure they point to the right docs folder.

It used to be that the "example2" (harness.html) was the only testing infrastructure.  That code was written to offer reliable testing with maximal simplicity and no dependencies.  Now that we have a more formal test suite, it seems silly to keep it.  It does a good job, however, on exercising the code on all the published Naw-Ruz and Twin-Birthday dates.  I wouldn't want to accidentally ship code that doesn't get those right, and right now the new test suite is the only one mentioned in the README.  So, I would appreciate it if you could refactor example2 into unit tests in the new framework.  It should be pretty easy to port these (just changing the testing utility functions I use into the ones used by the unit test framework -- much less than the work that's already done!) and I think important for reliability.  Or, if you don't want to do this, perhaps just add to the README a note saying to double-check that "example1" and "example2" both work in the browser (I guess one caveat of the unit test suite is that it doesn't check for bugs in the build process for the browser-compatible files).

Regarding Variable Names
I'm okay with whatever happens at the moment, and I won't hold off on merging because of variable names; it's simply not worth worrying about for this project.  Every person, organization, and project has its own preferred conventions.  I opened an incognito tab and googled for "javascript variable naming convention" (without quotes) and the first result was this.  They use underscored_names for variables, but camelCase for method names.  There are, of course, many javascript style guides that say to use camelCase for all variable names, including Google's.  There are also some that name both options, because it's a choice.
I've never seen a universal rule in any programming language for what the variable names must be, except when the language specification or tools have specific restrictions.  In a given project, it is usually best to go with what is established because making large changes to a codebase can often cause problems -- like merge conflicts, refactoring bugs, obfuscating version control history, etc.  Refactoring bugs can especially be problematic because they can be subtle and go unnoticed for a long time.  I know that if I wanted to change the conventions on the research code shared between a few folks in my lab, I'd have a revolt on my hands.  The exception is if there's a problem with the current variable naming scheme (e.g. it's completely unreadable, like some of our external dependencies are...) so the developers can build a unified vision about what they want to move to and do it together.
Realistically, I'm probably not going to have time to rename the variables once this is merged, so whatever is done here might end up being final anyway.

Fixed documentation to use npm run create-build

On the topic of stale javascript in src/examples

Stale JS has been cleaned up, examples have been moved out of the src/ folder into the root.

On the topic of browser build v1 and browser build v2

I will add some documentation in the readme. V2 is just a different API than V2. The methods / state exposed is different, and a lot of stuff that you can do in V1 is removed in V2. The reason for this is that I would like to (1) separate out any state about the holy days and UI objects and have a javascript library that can just do the calculations for the dates, and (2) remove any functionality that is not directly related to calculating to and from BadiDates (such as functions on calculating sunset of days, etc...).
We can discuss what to add back and what is necessary, but I would like to start V2 from a clean slate and build up instead of starting V2 with all features of V1, then tear down. The reason is if people are using V2 and we're tearing down functionality, then this would break the version, so we would need to increment the version every time we remove something. If we start from a bare bones implementation and add stuff, no one's code will break, and we can keep V2 for longer and not worry about submitting breaking changes.
In a nutshell, V2 only has the BadiDate object. V1 is everything that was there previously.

On the topic of stale files in "build-v2"

Sorry about that, I cleaned it up. The process of how to clean the build is addresses in 5.

I've added the command npm run clean-build and documented it in the README

Renamed util.js to Astronomy.js

Created a About the Code section and reordered some of the sections

On the topic of hosting the example

You should be able to host the example by changing the URI to point to: /examples/example1/index.html

On the topic of converting example2 to a unit test suite

I have gone with option 1 and noted in the readme that harness.html should pass on all tests before committing any code. The reason why I chose option 1 was that I would like to get this diff out sooner than later, and I want to take my time on converting the test suite, adding more tests on parts that I feel need more attention, and setting up hooks that check for eslint error and testing errors before allowing the person to commit. This will be the very next thing I add, but for now, I would like to postpone migrating the test suite.

On the topic of underscore vs camel case

I'm not sure where you found the documentation you linked to in your comment, but by the use of the older es5 syntax, I can see it is outdated. Javascript is the language I use the most and I have never seen any widely-used library / framework that breaks with the camel case naming convention. When people are using this library, they will be using the convention adopted by the community and introducing a library that breaks with the convention will result in other people's code mixing standards, and they will have to write linters that special case calls to this library, which could mean preceding every call to this library with a comment that disables the linter for that line. Personally, seeing a library that breaks with this convention would be a strong case for me to find alternatives because I like to enforce naming conventions in my linters, and if there is a single library that does not follow the normal conventions, then using that library in any serious capacity will be a headache.
Tabs vs Spaces, function vs shorthand, single quotes vs double quotes are all examples of styling conventions that come down to preferences, and if contributing to libraries that don't match your personal preferences, you should absolutely go with the established convention. Variable naming is something that has cascading effects to users of your library, and in a community that has strongly articulated a preference for camel case, I would like to stick to the community preferences. I don't see this as a 50 / 50 or 80 / 20 thing where there are plenty of examples of underscores being used in other libraries. This is closer to a 99.5 / 0.5 preference towards camel case.

I'll go ahead and merge this now.  The only lingering question I have: it looks like there's still a src/examples/ folder that only has example1 in it -- do we need that?
I'll make tickets for the following things to do:

migrate the test suite from example2 to the actual tests folder
write down the stylistic conventions that this merge implies
setup continuous integration and automate deployment of github pages

I've made some tickets, you're welcome to work on them if you like.  If so, just assign them to yourself so that I know not to work on them.


SPFx extension stopped working with no action from our side

Target SharePoint environment
SharePoint Online
What SharePoint development model, framework, SDK or API is this about?
other (enter in the "Additional environment details" area below)
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 : Edge, always latest as it's updated regularly and centralized way by our IT
package.json content:
{
"name": "northbridge-my-links-extension",
"version": "0.0.1",
"private": true,
"main": "lib/index.js",
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"build": "gulp bundle",
"clean": "gulp clean",
"test": "gulp test"
},
"dependencies": {
"@microsoft/decorators": "1.10.0",
"@microsoft/sp-application-base": "1.10.0",
"@microsoft/sp-core-library": "1.10.0",
"@microsoft/sp-dialog": "1.10.0",
"@pnp/graph": "^2.0.5",
"@pnp/sp": "^2.0.5",
"@types/es6-promise": "0.0.33",
"@types/webpack-env": "1.13.1"
},
"devDependencies": {
<EMAIL_ADDRESS>"0.3.5",
"@microsoft/sp-build-web": "1.10.0",
"@microsoft/sp-module-interfaces": "1.10.0",
"@microsoft/sp-tslint-rules": "1.10.0",
"@microsoft/sp-webpart-workbench": "1.10.0",
"@types/chai": "3.4.34",
"@types/jquery": "^3.3.38",
"@types/mocha": "2.2.38",
"ajv": "~5.2.2",
"gulp": "~3.9.1"
}
}

Describe the bug / error
We had a support ticket opened for that issue as follows (please see more information on MS Support findings below the dash line)
• Microsoft Support [Case #:36134853]
• Created on: Tuesday, April 25, 2023 9:38 AM
• Description: We have custom SPFx extension developed and deployed for us by 3rd party vendor, Microsoft Partner. That extension worked as expected for about a year and some time ago stopped working without any actions taken from our side. That extension creates a link in Top Navigation and is supposed to show a drop down of item choices on mouse over. When the Intranet page where extension is hosted loads, DevTols show the following error (the GUID in the error is of the SPFx extension that stopped working and the URL of the sp-pages-assembly_en-us_380255c8e20811346b873b876a9bc242.js:70:1453258 is: https://res-1.cdn.office.net/files/sp-client/sp-pages-assembly_en-us_380255c8e20811346b873b876a9bc242.js ): ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] sp-pages-assembly_en-us_9bb00ad5e643999a6f8283c7d40ebf42.js:70 Uncaught (in promise) Error: Failed to create application customizer 'ClientSideExtension.ApplicationCustomizer.6aa27935-d4df-42d5-a14e-92ef523a05f5'. Error information is 'Extension failed to initialize for componentId "6aa27935-d4df-42d5-a14e-92ef523a05f5".'. at sp-pages-assembly_en-us_9bb00ad5e643999a6f8283c7d40ebf42.js:70:1453258 at async Promise.all (index 0)
Shruti from SharePoint development team (Microsoft Premier Support<EMAIL_ADDRESS>[Case #:36134853]) spent a lot of time troubleshooting and reproducing the issue in her environment, using code we provided. She built web part and the extension locally. Below is the citation from her latest email describing the status of the issue:
I had an opportunity to spend multiple days with the copy of your code and get it to build in my lab. I do not see an scss file and that is where the package building fails. Is this the original code packaged and deployed?
Apart from that just taking the packaged solution file from your environment does not render the webpart. Now again since the webpart does work for you and it renders alright but only the app customizer throwing the error, at this point it is very good idea to engage directly with our Product Team. It is best not to delay here as I did spend significant time trying to rebuild your solution.
I reviewed the code and it looks alright to me. I see we are using pnp here. It is possible something has changed with pnp which could be resulting in this behavior. Pnp is a community support directly supported by our Product Team directly on the Github thread here.
I think it would be useful for you to connect to Shruti for more information as she already has a lot of useful information that would help to find and fix the issue.
Steps to reproduce
1.The extension is supposed to load right on loading our intranet home page, with no additional actions, automatically.
Expected behavior
The sign that extension is working is that on Mouse Over on the My Links link in Hub navigation, the drop down should be displayed with personal links for the current user.

This looks similar to an issue I've reported: #8970  (localization files causing extensions to fail to load)

I looked at the issue you mentioned, and the only similarity I see is the error message.
As I mentioned in the description, it's a very good idea to contact Microsoft Support person Shruti who spent a lot of time investigating and localizing the issue. Microsoft Support [Case #:36134853]  I have an agreement with her that she will give you all the information if you contact her. She had a code source and was able to build and reproduce it in her dev environment, so she is able to answer all your questions.

I would like to follow up on the progress of the ticket.

Hello, Alex,
Could you provide the secure URL to drop off the solution? It would not go through the email. This is how I shared the solution with MS Support person.
Regina Pochepovich
Software Engineer SharePoint, IT
Northbridge
105 Adelaide Street West | Suite 700 | Toronto, ON | M5H 1P9

Tel:<PHONE_NUMBER>
<EMAIL_ADDRESS>From: Alex Terentiev @.>
Sent: Friday, June 2, 2023 9:29 AM
To: SharePoint/sp-dev-docs @.>
Cc: Regina Pochepovich @.>; Mention @.>
Subject: Re: [SharePoint/sp-dev-docs] SPFx extension stopped working with no action from our side (Issue #8983)
EXTERNAL EMAIL:  Do not click any links or open any attachments unless you trust the sender and know the content is safe.
COURRIEL EXTERNE : Ne cliquez sur aucun lien ni fichier à moins d’en connaître l’expéditeur et de savoir que le contenu est sûr.
@rpochepovichhttps://protect2.fireeye.com/v1/url?k=31323334-501cfaeb-3137617d-454455535732-8532fd214f8cf6bc&q=1&e=32c09dab-a02a-4c7e-946e-56472c1ce38c&u=https%3A%2F%2Fgithub.com%2Frpochepovich Could you share the solution with me? you can use<EMAIL_ADDRESS>—
Reply to this email directly, view it on GitHubhttps://protect2.fireeye.com/v1/url?k=31323334-501cfaeb-3137617d-454455535732-2a1d9136aa03b543&q=1&e=32c09dab-a02a-4c7e-946e-56472c1ce38c&u=https%3A%2F%2Fgithub.com%2FSharePoint%2Fsp-dev-docs%2Fissues%2F8983%23issuecomment-1573736296, or unsubscribehttps://protect2.fireeye.com/v1/url?k=31323334-501cfaeb-3137617d-454455535732-cdb849a5f283bbdc&q=1&e=32c09dab-a02a-4c7e-946e-56472c1ce38c&u=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FA75O4TBKWBF3DEQHAZMWRLDXJHTAXANCNFSM6AAAAAAYMCCWBM.
You are receiving this because you were mentioned.Message ID: @.***>

ManageMyLinksWebPart (1).zip
MyLinksExtension (1).zip

[MyLinksExtension (1).zip](https://github.com/SharePoint/sp-dev-docs/fil
ManageMyLinksWebPart (1).zip
es/11666307/MyLinksExtension.1.zip)

@rpochepovich - I downloaded the code, thanks.
You have a lot of requests happening in the onInit.
And some of them may potentially start failing due to missing/delete information.
Could you please debug it on your end, check the network trace and see if the requests for getting list items as well as property bag are returning valid data.
I'm not seeing try...catch blocks in your code so any error in onInit will lead to the error you are seeing.
I totally understand it's unfortunate the customizer stopped working but it can be related to the fact of missing data.

@rpochepovich - I downloaded the code, thanks. You have a lot of requests happening in the onInit. And some of them may potentially start failing due to missing/delete information. Could you please debug it on your end, check the network trace and see if the requests for getting list items as well as property bag are returning valid data. I'm not seeing try...catch blocks in your code so any error in onInit will lead to the error you are seeing.
I totally understand it's unfortunate the customizer stopped working but it can be related to the fact of missing data.

Hi @AJIXuMuK. Sorry to step in but this is related to your latest answer. Does MS have any best practices on how to handle errors on the onInit method? We were having a debate internally and could not find any info about if we should reject or resolve the promise (return "Promise.Resolve" or "Promise.Reject")  and what are the implication of doing so (e.g. if we reject the promise does it cause problems with other components loading on the page?).
Many thanks.

A few notes here.
Thank you into looking into the code. The items are returned from the SharePoint list, because the 2nd part of the web part/extension duo has the list items properly.
The code was developed for us by Microsoft partner Envision IT, and was working as expected for almost 2 years.
As I mentioned, we first opened a ticket with MS Premier Support and Shruti had the issue reproduced and well investigated in her dev environment. She is ready to share her findings. She said she would be happy to talk to you if you reach to her and I think that it's a good idea to do so.
The information about MS Support ticket and description of findings are in the issue description.

@rpochepovich - sorry, but that is not how this issue list works.
If you have a support ticket with Microsoft and the support engineer is sure that product group should take a look, he/she should pass it further in the system with information about all the findings and repro environment.
That would be the best path forward.
From what I can recommend (based on the code) is to check

check that you have hub navigation in place where the extension is failing (btw, the code is referencing CSS class for the hub menu - this is unsupported and may break without a notice).
check that the list with the needed data is in place and has expected information
check that web's property bag contains expected items
check if the network trace contains any issues like failing requests or missing scripts.

We have Hub Navigation in place, the ewb part and extension is on our Intranet home page
List is in place and is retrieved properly , the web part that is using it in a separate page, displays all items properly


Add /organisations endpoint in v1

This PR addresses the following:

Add organisations endpoint to the /v1 path.
Restructured the organisations controller to use ActiveModel serialization.
Now have the option to specify locales, with english being returned by default.

Split into separate commits.

👍


Allow intervals of 0 seconds

time.NewTicker doesn't like an interval of 0, but it's useful in order
to send a "flood ping" (see for example
https://www.freebsd.org/cgi/man.cgi?ping(8) or
https://linux.die.net/man/8/ping). It would be up to the user of the
library to limit the number of in-flight pings in the manner described
in the manpages.
Signed-off-by: Marcelo E. Magallon<EMAIL_ADDRESS>

This works but I wonder if a simpler approach would just be to set p.Interval = time.Nanosecond?

Sure, that works. That was in fact my first approach. It has the nasty side-effect of the ticker triggering as fast as it can and it keeps firing until all the packets have been received. This implementation does the same with a little less overhead and blocking that select interval case as soon as all the required packets have been sent out.


Refactoring: Remove redundancies in bitboard.play and bitboard.play_pvp

We've added player-vs-player support with #36 .
However, the newly added play_pvp method in bitboard.py is to a large extend the same as the play method (in the same module).
Some refactoring would probably help here, to make future changes to the play methods easier. At first glance, this does not seem completely trivial, though.

I would be interested in working on this.

I agree. Thanks, @amcintosh, I'll assign this to you.
I noticed that as I was implementing the play_pvp method, but the simple lines_printed variable made it harder for me to refactor both the methods effectively. As a start, maybe we could add a function/method to get the move the user wants to make, and call that in both play methods. I'm still not sure how we would track the number of lines printed in that case, though.
Please let me know if you need any more info from me 👍🏻

@hrushikeshrv Could this be solved using a global variable lines_printed that is changed from within these functions?
Possibly one could even write a wrapper for Python's print() function that simply passes its arguments to the actual print() function, and updates the global variable accordingly. Then all other functions would always call the wrapper during the play loop.

@zzril yeah, that could be a good start.

Hi. I've done a bit of a refactor moving out the common code. I haven't really touched the print_lines code other than returning it in the refactored method. I'm actually wondering if maybe using something like click and a clear-screen method might be a good choice, but adding a new dependency and refactoring the user I/O seems like a separate task.

Yeah, for now, I think the refactor you have done looks good. I would like to avoid adding a dependency as much as we can, so as long as it doesn't become restrictive to work with the play methods without more refactoring, I think it should be fine.


SqlClient related factories not added to project

Following classes:

SqlCommandFactory
SqlConnectionFactory
SqlDataAdapterFactory
SqlDataAdapterWrap
SqlParameterCollectionWrap

Are implemented and added to source code but they are not added to SystemWrapper.csproj and thus they are no compiled.
Is this intentional or are they removed/not added by accident?

These factories and wrapper were not added to the SystemWrapper.csproj in the original pull request and I did not notice they are missing.
There may be more missing classes in the project.

This should be fixed in v0.20.0


Easy way to output the color in the widest format supported by the current browser

I find myself doing a lot of:
const supportsP3 = window.CSS && CSS.supports("color", "color(display-p3 0 1 0)");
const outputSpace = Color.space(supportsP3? "p3" : "srgb");
...
color.to(outputSpace).toString()

There should be an easy way to get this outputSpace, and the string representation.

Wow, this is an old issue. This has been addressed via display().


Add mutually exclusive and mutually dependent options

Implement the mutually exclusive and mutually dependent classes for options.
I have seen in several places code which does this, but I'm not sure why click does non provide them by default.
Here is a gist which does an implementation of mutex option. I have tested and also implemented mutually dependent option, If you agree with it, I can submit a pull request.
https://gist.github.com/jacobtolar/fb80d5552a9a9dfc32b12a829fa21c0c

See multiple previous closed issues about this. See cloup for an extension that provides this.


Communicate with Howard and Steven to see how I need to post images to get back processed images.

YUP

Let me know please, tyty.

This will be the general workflow (slightly different). First, on your side, the user uploads 1 or many images, and you need to make an /api/process/upload_image which would need to contain something like what is shown below. It can be a dict or a list of dicts like that, in the event you are uploading multiple images. You will receive back an image object of the last one that is uploaded, just for confirmation.
[
    {
        "filename": "test",
        "user_id"<EMAIL_ADDRESS>or something",
        "image_data": "base 64 image"
    },
    {
        "filename": "test",
        "user_id"<EMAIL_ADDRESS>or something",
        "image_data": "base 64 image"
    }
]

Next, I assume you have a list of photos that the user can choose from... if the user clicks an image, you will need to send me the user_id and image_id so that i can set the current image on the server side. That object will look something like this:
    {
        "user_id"<EMAIL_ADDRESS>or something",
        "image_id": "id that you stored on your side."
    }

Then you can start doing the processing on THAT image. This means you can make posts such as /api/process/blur, which will give you back a blurred image. If you don't like it, you can send another post with something like /api/process/sharpen. All of these will require you to send the user_id. EVERY TIME THE USER CHANGES IMAGES, YOU NEED TO MAKE A CHANGE POST!
    {
        "user_id"<EMAIL_ADDRESS>or something"
    }

NEXT, if you like the change and want to confirm, you need to use the /api/process/confirm which also only takes a user_id. This will process the change and set that image to the user's current image (internally). You can continue this step as much as you want. There are additional endpoints such as /api/process/previous_image and /api/process/next_image which allow you to move internally. All of these will return to you a dict with all the info.
DOWNLOADING: If you just want all the user's updated images that they processed or didn't, use the /api/user/get_updated_uploads/<user_id> get endpoint; this again requires a user_id. To get a specific list of images, you can use the /api/image/get_images/ endpoint which takes the user_id and a list of the image_ids you wish to get.
    {
        "user_id"<EMAIL_ADDRESS>or something",
        "image_ids": ["ID1", "ID2"]
    }

I don't know how downloading really works on your end.

https://stackoverflow.com/a/9463806

I we're ok with the headers now


[Merge][Add] json annotation data readable in dataloader.py

Thank you for submitting your pull request!
I have reviewed the changes, and everything appears to be in good order. The code meets our project's standards and will be merged into the branch shortly.
Thank you for your valuable contribution to the project! Please feel free to submit any further improvements or new features you have in mind.
Best regards,
Henry Tsui


track progress of run tests as results come in from api

The purpose of this PR is to capture the progress of how many tests have been run for each sep as the results are coming in.
With the old model, we needed to to continuously iterate over each sep group in  to calculate how many tests of each sep had been completed. This was causing a lot of re-rendering and was pretty inefficient.
The solution proposed here is to capture how many tests are "done" as we collect the results in the "runTests" callback. This lets us collect all data from the results in one place.
This also has the added benefit of simplifying <TestCases />. Before, it was grouping testRunArray by sep group on every render. We, however, we were never using testRunArray for any purpose other than feeding it to <TestCases /> to be coerced into a usable map. Rather than saving testRunArray in state at all, we now do the transformation from testRunArray -> GroupedTestCases right away. This creates one source of truth for test case data that includes all results and progress info

Preview is available here:http://stellar-anchor-tests-pr19.previews.kube001.services.stellar-ops.com/

Preview is available here:http://stellar-anchor-tests-pr19.previews.kube001.services.stellar-ops.com/


区域缩放选择brush导致markArea区域背景色展示不了

Version
4.9.0
Steps to reproduce
You can choose official demo to reproduce the bug：https://echarts.apache.org/examples/zh/editor.html?c=area-rainfall
When you select a area in the same color markArea, you will find the markArea background color disappear.

What is expected?
it can show the markArea background color when I select a area in the same color markArea
What is actually happening?
When you select a area in the same color markArea, you will find the markArea background color disappear.

When you select a area across different color markArea, you will find the markArea background color display normal.

简而言之，区域选择区域在同一个markArea会导致markArea没有展示


Kmikawa/service principles

This PR supports service principles.
Description

Updated a lib to generate access token.
Updated the documentation to better reflect our support service principles.

Related Issue

Motivation and Context

How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

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

Checklist:

[x] I have signed the Adobe Open Source CLA.
[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.

👍


Is there an ArrayIncludes operator?

Hi, I have an entity that uses postgres's array fields as such:
enum Role { A = "A", B = "B", C = "C" }

@Entity('users')
export class User extends BaseEntity {
  @Index({ unique: true })
  @PrimaryGeneratedColumn({ name: 'id' })
  id: number;

  @Column({
    name: 'roles',
    type: 'enum',
    array: true,
    enum: Role,
    default: [Role.A],
  })
  roles: Role[];
}

How can we query this with things like filter.roles=$includes:A? We want to return all users where the array has A in it.
In Postgres there's the @> operator which does this, and in TypeORM I believe there's the ArrayIncludes() function. Is this functionality exposed via the paginate API anyhow, and if not, would a PR be accepted?

Yup, not exposed yet but would accept PR :) Needs to be mapped here:
https://github.com/ppetzold/nestjs-paginate/blob/master/src/operator.ts#L50

PR up at #536

:tada: This issue has been resolved in version 5.1.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


chore(deps): update dependency sass-loader to v16

This PR contains the following updates:

Package
Change
Age
Adoption
Passing
Confidence

sass-loader
15.0.0 -> 16.0.0

Release Notes

webpack-contrib/sass-loader (sass-loader)
v16.0.0
Compare Source
⚠ BREAKING CHANGES

use modern Sass JS API by default for sass and sass-embedded

[!WARNING]
The sass options are different for the legacy (before) and modern APIs. Please look at docs how to migrate to the modern options.
Legacy options - https://sass-lang.com/documentation/js-api/interfaces/legacystringoptions/
Modern options - https://sass-lang.com/documentation/js-api/interfaces/options/

To return to the previous logic use:
module.exports = {
  module: {
    rules: [
      {
        test: /\.s[ac]ss$/i,
        use: [
          "style-loader",
          "css-loader",
          {
            loader: "sass-loader",
            options: {
              api: "legacy",
              // Your options
            },
          },
        ],
      },
    ],
  },
};

Features

use modern Sass JS API by default for sass and sass-embedded (10be1ba)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - "after 8am and before 4pm on tuesday" in timezone Etc/UTC.
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.

This PR has been generated by Renovate Bot.

Renovate Ignore Notification
Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 16.x releases. But if you manually upgrade to 16.x then Renovate will re-enable minor and patch updates automatically.
If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.


Suggestion: utilize git 'releases' and maintain a changelog

the readme for this project mentions that the version is now at Lerc2 v3.  i recommend the following:

take advantage of git/github tags and releases
maintain a Changelog.md
use Semantic Versioning to denote breaking changes and other alterations to the code.

doing this would give outside developers a much better understanding of what is going on with the project.

This Lerc repo has no official release tag yet. Reason is it is ahead of the Lerc versions used inside Esri ArcMap and Esri Pro, and we want to sync it all up first. Already ArcMap 10.4.1 and Pro 1.3 can read the current Lerc2 v3. But not write. The next Esri releases ArcMap 10.5 and Pro 1.4 should be fully in sync with this Lerc repo. This should happen in second half of 2016. Then we plan to tag this Lerc repo with a release tag of 1.0.

https://github.com/Esri/lerc/releases/tag/v1.0
looks great!


app size

Hi,
can I ask why the app is so big? 28.9 MB seems excessive (F-Droid version)

I'm so sorry, however I can't do anything about it, The app is written with Kivy (python) with all this futures app goes up to 30 MB, I know it's a lot for single app, but it's due to how Kivy packs everything on android. I can make it slimmer, however it would be very basic app, the previously one was around 16 MB without animations and Bluetooth pairing. I soon as I add more stuff app's size groves.

Hi,
can I ask why the app is so big? 28.9 MB seems excessive (F-Droid version)

I think I accidentally included gifs folder in apk, will fix it later when I get home.

Hi,
can I ask why the app is so big? 28.9 MB seems excessive (F-Droid version)

I'm closing this issue, new version can be found in bin folder, app size is around 18MB now.


Add example project for quicker development

Would be nice to see examples.

https://cdn.rawgit.com/buildo/react-semantic-datepicker/master/examples/index.html

@gabro thanks! :+1:


Update markdown styleguide

Looks like not everything got  merged in the last PR. Not sure what I did to cause that. @paked Would you please review this too?

Assigned @zachlatta to get us out of git hell

#gitgotwrecked

Going to close this for now. It seems like the diffs are already in master.


Crash with code 37 on envoy's remote compilation attept

Bazelisk crashes with exit code 37 on attempt to run remote compilation of envoy proxy server.
Platform:
Linux Debian 11, amd64.
Bazelisk installed as bazel:
# bazel version
Bazelisk version: v1.15.0
Starting local Bazel server and connecting to it...
Build label: 6.0.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Mon Dec 19 15:52:35 2022<PHONE_NUMBER>)
Build timestamp:<PHONE_NUMBER>
Build timestamp as int:<PHONE_NUMBER>

Both local and remote toolchains configured and working - envoy can be built successfully on both machines.
This step is rather complicated - but I can provide details if needed.
Remote compilation with Buildfarm is set and ruining smoothly as per "Hello world!" quick start example:
# bazel clean
INFO: Starting clean (this may take a while). Consider using --async if the clean takes more than several minutes.
# bazel run --remote_executor=grpc://ng-btn-envoy-re.cp.ru:8980 :main
INFO: Invocation ID: 87fa5b48-af98-42e9-9c08-758c104380c1
INFO: Analyzed target //:main (36 packages loaded, 155 targets configured).
INFO: Found 1 target...
Target //:main up-to-date:
  bazel-bin/main
INFO: Elapsed time: 1.392s, Critical Path: 0.19s
INFO: 6 processes: 2 remote cache hit, 4 internal.
INFO: Build completed successfully, 6 total actions
INFO: Running command line: bazel-bin/main
Hello, World!

Observed behavior:
But once I try to run compilation of envoy, it silently dies with exit code 37 (Unhandled Exception / Internal Bazel Error):
# time bazel build -c opt envoy --config=remote-clang-libc++ --remote_executor=grpc://ng-btn-envoy-re.cp.ru:8980 --verbose_failures --remote_local_fallback=false --jobs 64

real    0m0.703s
user    0m0.009s
sys     0m0.025s
root@btn-envoy-build:~/devel/envoy-1.25.0# echo $?
37

Workaround (found by accident): add --profile flag.
With this flag buld can be finished successfully:
# time bazel build -c opt envoy --profile --config=remote-clang-libc++ --remote_executor=grpc://ng-btn-envoy-re.cp.ru:8980 --verbose_failures --remote_local_fallback=false --jobs 64
Starting local Bazel server and connecting to it...
INFO: Invocation ID: e2bc26e7-09a7-4d21-94e0-a6739012815c
DEBUG: /root/.cache/bazel/_bazel_root/21c31a8bad1d906648b99f4a66de0f0f/external/rules_python/python/pip.bzl:47:10: pip_install is deprecated. Please switch to pip_parse. pip_install will be removed in a future release.
INFO: Analyzed target //:envoy (883 packages loaded, 35928 targets configured).
INFO: Found 1 target...
...
INFO: Elapsed time: 122.337s, Critical Path: 59.03s
INFO: 12805 processes: 7826 remote cache hit, 4976 internal, 1 local, 2 remote.
INFO: Build completed successfully, 12805 total actions

real    2m2.435s
user    0m0.001s
sys     0m0.418s

# echo $?
0

Also, I'm confused with Starting local Bazel server and connecting to it... message in output above - this is specific to envoy, as "Hello world!" remote execution doesn't emit this message...
Is it bazelisk, bazel, envoy or buildfarm?
In my opinion it either  bazelisk or bazel - the tool should not crash.
As to buildfarm - in observed case it seems to be unrelated, as bazelisk crashes before anything is sent to remote computer.
But also it could be specific to envoy, as it has really complicated build process.
Expected behavior:
Remote execution build can be run and successfully completed without crashes and/or necessity to specify addition flags, like --profile

How can I help to identify and fix this issue?
Is any additional info required?


Add new domains and certificates to template

This adds the GOV.UK service domains (with the canonical one first), as well as the certificate names and mapings to the template. With these in place we will be able to start serving requests from the service domain, and any requests to the old domain will be redirected to the new one.

 Set up GOV.UK service domain


Por que no actualizan la app?

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to '...'
Click on '....'
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS Version: [e.g. Windows 10 1903 18362.175]
App version: [v0.5.0]

Additional context
Add any other context about the problem here. Does this problem occur again after restarting the app?

Please fill out the details so we can understand what you want.

@yaichenbaum I have translated the issue title and it seems like the issue creator is asking why the app doesn't get Updates?

In that case the answer is the app is still in very early alpha. We are constantly updating the code base and we are actually ready to ship a new update with many new features and bug fixes. The reason this update has not gone out yet is we haven't been able to compile an update package and we are still working on figuring this one out.


Hydration attribute mismatch when you use useId inside a component and the page contains a useAsyncData

Environment

Operating System: Linux
Node Version:     v18.20.3
Nuxt Version:     3.14.159
CLI Version:      3.15.0
Nitro Version:    2.10.4
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      default
Runtime Modules:  -
Build Modules:    -

Reproduction
https://stackblitz.com/edit/nuxt-starter-oqb1pt?file=app.vue
Describe the bug
When you have a component that uses the useId hook, for example:
<template>
  <label :for="id"> Label </label>
  <input :id="id" />
</template>

<script lang="ts" setup>
const id = useId();
</script>

and you use this component inside a page or another component that uses the useAsyncData hook, for example:
<template>
  <div>
    <LabeledInput />
  </div>
</template>

<script setup>
const { data } = useAsyncData(async () => {
  return 1;
});
</script>

an Hydration attribute mismatch happens with the return of useId
Additional context
This error started occurring when Nuxt starts using Vue's native useId.
Logs

useId must be used in component with single-root element as stated here (blue box):
https://nuxt.com/docs/api/composables/use-id

Same in v3.14.1592. The component is a single-root component.

I had the same issue with the FormGroup component from nuxt/ui.

The hydration error occurs only when using useAsyncData without await.

@RokeAlvo it also happens with async in my case.

@RokeAlvo @danielroe I investigated the issue because I don't have fetch calls w/o await and discovered an interesting bug using the @nuxt/icon module (nuxt/icon/310). So it's definitely not the Nuxt's issue.

good investigation!
let's track there for now
let me know if anything points back to nuxt at some point 🙏

good investigation!
let's track there for now
let me know if anything points back to nuxt at some point 🙏


Cleanup codebase

Remove infrastructure folder as we won't be using Vagrant
Remove extra Dockerfile, clean up and add docker-compose
Update README
Move mirroring package under pkg/

Fixes https://github.com/sigstore/rekor-monitor/issues/44
Signed-off-by: Hayden Blauzvern<EMAIL_ADDRESS>
Summary

Release Note

Documentation

cc @loosebazooka

Codecov Report

Merging #92 (9d4804b) into main (c0012ac) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main      #92   +/-   ##
=======================================
  Coverage   28.52%   28.52%
=======================================
  Files           3        3
  Lines         305      305
=======================================
  Hits           87       87
  Misses        204      204
  Partials       14       14

Impacted Files
Coverage Δ

pkg/mirroring/artifactStorage.go
25.00% <ø> (ø)

pkg/mirroring/metadataStorage.go
0.00% <ø> (ø)

pkg/mirroring/mirroring.go
56.20% <ø> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Support for RKE2 provisioned cluster certificate rotation

Implement support to rotate certificates on RKE2 provisioned cluster, including an option to rotate certificates for individual service(s) (or all services).
Requires https://github.com/k3s-io/k3s/issues/2636 (and the same for RKE2 - https://github.com/rancher/rke2/issues/570)

Unblocked as the changes are in December 2021 RKE2/k3s release.

Root cause
new feature
What was fixed, or what changes have occurred
provisioning v2 clusters now support certificate rotation.
Areas or cases that should be tested

rotating certs with all permutations of node configurations
rotating certs on upgrade
rotating specific service certs

What areas could experience regressions?

upgrades

Are the repro steps accurate/minimal?
kubectl patch -n fleet-default --patch '{"spec":{"rkeConfig":{"rotateCertificates":{"caCertificates":true,"generation":1}}}}' --type=merge cluster/
kubectl patch -n fleet-default --patch '{"spec":{"rkeConfig":{"rotateCertificates":{"caCertificates":true,"generation":1, "services": []}}}}' --type=merge cluster/

This appears to just constantly rotate in a loop. My setup is just 3 nodes all roles:

v2.6-head cf4364d
Reopening for now and will gather more logs and post them when I have them. In this setup I was using DigitalOcean and it appears the server logs here are unavailable using journalctl for some reason:
root@maxrp1-maxrp1-49700a55-llzdg:~# journalctl -u rke2-server -f
No journal files were found.

I might've reopened this prematurely. After some time, this seems to have resolved itself and completed. Although there's something strange going on since according to the logs shown below it rotated on one node 5 times, another node once, and another node not at all.

However, when I check how many times it actually rotated, it appears to have done the node from those logs 5 times and both other nodes once:
# mk6ff
root@maxrp1-maxrp1-49700a55-llzdg:~# ls /var/lib/rancher/rke2/server/ | grep tls | wc -l
6

# qmqd7
root@maxrp1-maxrp1-49700a55-b724x:~# ls /var/lib/rancher/rke2/server/ | grep tls | wc -l
2

# vg8dg
root@maxrp1-maxrp1-49700a55-296zw:~# ls /var/lib/rancher/rke2/server/ | grep tls | wc -l
2

FWIW, the timestamp on vg8dg associated with that in the logs matches:
# Timestamp shown at end of the tls-* record
root@maxrp1-maxrp1-49700a55-296zw:~# ls /var/lib/rancher/rke2/server/ | grep tls
tls
tls-1646168074

# Retrieving timestamp value using python, which gives the exact same time as in the logs
print(datetime.fromtimestamp(timestamp).strftime("%m/%d/%Y, %H:%M:%S"))
03/01/2022, 13:54:34

Doing the same as the above calculation, there should've been a provisioning log at approx. 1:53:03 pm for qmqd7, but there wasn't. Instead at 1:53:04 there was the 5th one for mk6ff.
Before I debug further into the actual nuts and bolts of this feature (functionality itself actually working) I think we need at least two things here:

Provisioning Log to match what is happening on the correct node
Rotation to only happen once per node

@rancher-max how were your node pools configured? Specifically how many nodes per pool and what roles?

just one node pool with 3 nodes all roles

It also seems that the rotation itself isn't functioning properly. I used a new setup with 3 nodes all roles again:
$ sudo diff -sr /var/lib/rancher/rke2/server/tls/ /var/lib/rancher/rke2/server/tls-1646249776/ | grep -i identical | awk '{print $2}' | xargs basename -a | awk 'BEGIN{print "Identical Files:  "}; {print $1}'
Identical Files:
client-admin.crt
client-admin.key
client-auth-proxy.crt
client-auth-proxy.key
client-ca.crt
client-ca.key
client-controller.crt
client-controller.key
client-kube-apiserver.crt
client-kube-apiserver.key
client-kube-proxy.crt
client-kube-proxy.key
client-kubelet.key
client-rke2-cloud-controller.crt
client-rke2-cloud-controller.key
client-rke2-controller.crt
client-rke2-controller.key
client-scheduler.crt
client-scheduler.key
dynamic-cert.json
peer-ca.crt
peer-ca.key
server-ca.crt
server-ca.key
kube-controller-manager.crt
kube-controller-manager.key
kube-scheduler.crt
kube-scheduler.key
request-header-ca.crt
request-header-ca.key
server-ca.crt
server-ca.key
service.key
serving-kube-apiserver.crt
serving-kube-apiserver.key
serving-kubelet.key

I would expect the output to show:
Identical Files:
client-ca.crt
client-ca.key
dynamic-cert.json
peer-ca.crt
peer-ca.key
server-ca.crt
server-ca.key
request-header-ca.crt
request-header-ca.key
server-ca.crt
server-ca.key
service.key

And similarly when doing the rotation on just one service, I would expect the output to have identical files for everything except that service.

The original reopening issues have been resolved of:
1. Provisioning Log should match what is happening on the correct node
2. Rotation should only happen once per node

Reopening again because it appears the rotation itself isn't happening. Issue noted in the above comment: https://github.com/rancher/rancher/issues/35343#issuecomment-1057354804. This is the case on all 3 nodes (still using 3 nodes all roles for the setup). Validated using v2.6-head commit 572ab58

Moved this back to the working column as it was determined the above is a UI issue and it appears certs are rotating correctly. Just need to finish validating all possible options.

Validated can rotate all services individually as well as all together. Rotating all together requires passing an empty array, whereas rotating an individual service requires selecting that service. List of services: admin, api-server, controller-manager, scheduler, rke2-controller, rke2-server, cloud-controller, etcd, auth-proxy, kubelet, kube-proxy.
Also confirmed that multiple services can be passed in the array when doing it via Edit Yaml or directly through the API, although the UI will force only a single service selection (which I believe is acceptable).
Did this all on the same configuration as above and the same v2.6-head commit.
Still need to validate using split roles on nodes, but this is something that wasn't validated in rke2 standalone so I need to do that first to get expectations and potential current limitations of the feature from rke2's side.

Confirmed this is successful even on split roles using rancher v2.6-head commitid 3b2677f.
Rotating on worker-only nodes isn't really supported (see https://github.com/rancher/rke2/issues/2623) but rotating on a control-plane node does correctly rotate the worker certs that are being used.
The general way this works for other split-role nodes is:

etcd nodes rotate etcd cert
CP nodes rotate certs associated with CP (apiserver, scheduler, etc.)


Add info for Wiimote Plus under Ubuntu

Add script for backporting and recompiling bluez on Ubuntu to support WiiMote Plus devices.
Since I did not know, where else to make it available, I thought about the gh-pages.

Thanks for this ! I have for months ago reported the issue on Ubuntu forums about bluez package but they don't want to apply it. So I have created a deb version of the last version of bluez that solves the problem too.


About training results

Hi,
I found that the evaluation metrics are unstable among different epochs when I conducted experiments on the custom dataset. I would like to ask whether you report the last or the best epoch results in your training exps.

Hello, good question.
I believe we took the model at the final epoch as not all datasets had a validation set. I would suggest tuning the hyper-parameters (e.g learning rate or LR schedule) to smooth the training.


"telebot: result is True"

Success edit an InlineResult message always returns error ErrTrueResult

if _, err := c.Edit(c.InlineResult(), "foo bar"); err != nil {
    fmt.Println(err)
}

Output: telebot: result is True
What the purpose for ErrTrueResult?
gopkg.in/telebot.v4 v4.0.0-beta.4
go 1.23

telebot has ergonomic error flow handling, see how callbacks for new message must yield an error, i suppose the ErrTrueResult thing was made to distinguish successful response from nil without needing to return (error err, ok bool)-like tuple from handlers