RFC: Stack Reference [draft]

Stack Reference [draft]
Architecture

Language

row number - row number starting from 1
col number - column number starting from 1
headers - array of column names
row - array of column values
keyed row - dictionary of column values
extended row - array containing row number, headers and row
descriptor - dictionary describing something

Interface
goodtables
Inspector(checks='all',
          table_limit=10,
          row_limit=1000,
          error_limit=1000,
          order_fields=False,
          infer_fields=False)
    inspect(source, preset='table', **options)
~@check(code, type, context, before/after)
~@preset(name)
exceptions
spec
~cli

datapackage
Datapackage(descriptor, profile='base', base_path=None, remote_profiles=False, raise_invalid=True)
    valid -> dict
    errors -> list
    profile -> str
    descriptor -> dict
    resources -> Resource[]
    update(descriptor)
    addResource(descriptor)
    removeResource(index)
    save(target)
Resource(descriptor, profile='base', base_path=None)
    type -> local/remote/inline
    source -> path/data
    profile -> str
    descriptor -> dict
    table -> jsontableschema.Table/None
validate(descriptor, profile='base', remote_profiles=False) -> raise/True
exceptions
~cli

jsontableschema
Table(source, schema=None, post_cast=None, backend=None, **options)
    stream -> tabulator.Stream
    schema -> Schema
    iter(keyed/extended=False) -> (generator) (keyed/extended)row[]
    read(keyed/extended=False, limit=None) -> (keyed/extended)row[]
    save(target, backend=None, **options)
Schema(descriptor)
    descriptor -> dict
    fields -> Field[]
    headers -> str[]
    primary_key -> str[]
    foreign_keys -> str[]
    get_field(name) -> Field
    has_field(name) -> bool
    cast_row(row) -> row
    save(target)
Field(descriptor)
    descriptor -> dict
    name -> str
    type -> str
    format -> str
    required -> bool
    constraints -> dict
    cast_value(value, skip_constraints=False) -> value
    test_value(value, skip_constraints=False, constraint=None) -> bool
infer(headers, values) -> descriptor
validate(descriptor) -> raise/True
exceptions
~cli
---
Storage(**options)
    buckets -> str[]
    create(bucket, descriptor, force=False)
    delete(bucket=None, ignore=False)
    describe(bucket, descriptor=None) -> descriptor
    iter(bucket) -> (generator) row[]
    read(bucket) -> row[]
    write(bucket, rows)
plugins

tabulator
Stream(source,
       headers=None,
       scheme=None,
       format=None,
       encoding=None,
       sample_size=None,
       post_parse=None,
       **options)
    closed/open/close/reset
    headers -> list
    sample -> rows
    iter(keyed/extended=False) -> (generator) (keyed/extended)row[]
    read(keyed/extended=False, limit=None) -> (keyed/extended)row[]
    save(target, format=None, encoding=None, **options)
    ::test(source, scheme=None, format=None)
exceptions
~cli

References

RFC: Rows naming in tabular data representation

We could move this to docs to docs repo because it's not a task

@roll let's leave it and I'll get it into the site proper, or something, in the next weeks.

@pwalsh
Eventually I plan it to have as a part of documentation portal (like docs.frictionlessdata.io) with other documentation extracted from tools and libs. But for now I use it just as a live document.

@roll I think we should just have docs as part of a refactored frictionlessdata.io, rather than a distinct site, no? frictionlessdata.io is just basically rationale and guides anyway

@pwalsh
I think it's just an implementation question. For now now I see it as like autopulling all libs readme and docs into something like mkdocs setup. It will be easier to achive as a separate subproject. I suppose it's common practice to have separated dev/docs portal.

could be closed in favor of https://github.com/frictionlessdata/stack/issues/2


Suggest to chose fp16 or bf16 configuration for fine-tuning to match the same as the training of the model

closed via #137

The corresponding precisions are also logged here https://docs.google.com/spreadsheets/d/14vbBbuRMEHoqeuMHkTfw3uiZVmyXNuoSp8s-aHvfvZk/edit?gid=0#gid=0 besides the HF wiki

let's add a reference to that (so that this book also stays a useful resource for us ;))


[3.1.x] Allow external startup hooks

Fixes https://github.com/aspnet/AspNetCore/issues/17039.
Description
We introduced a regression between 2.2 and 3.0/3.1 where ANCM would override any startup hooks set outside of the IIS process. This is because we added a default startup hook for diagnostics, however, we didn't query the runtime property before setting/appending it.
Risk
Low. This just gets the runtime property (which is an environment variable read by the host) before setting. If there is an existing variable, we append.
User impact
Startup hooks are a feature we would like to explore with internal partners for hooking into applications. Without this fix, IIS inprocess applications wouldn't get these features.
cc @Pilchie @vitek-karas

Are all of those test failures for in-proc?

Yeah I must have pushed something bad...

Rebase on release/3.1?

Do we have to wait for branding or can we merge these now? I believe our deadline for 3.1.1 is today. @aspnet/build

These can be merged

The GitHub check doesn't seem to have been updated but the build did pass. Overriding the protection to merge.


[Enhancement] Add warehouse name to the result of show proc "/current _queries"

Why I'm doing:
There is add warehouse column when execute show proc '/current_queries';
mysql> show proc '/current_queries';
+---------------------+--------------------------------------+--------------+----------+------+-----------+----------+-------------+---------------+---------+----------+-----------------+
| StartTime           | QueryId                              | ConnectionId | Database | User | ScanBytes | ScanRows | MemoryUsage | DiskSpillSize | CPUTime | ExecTime | Warehouse       |
+---------------------+--------------------------------------+--------------+----------+------+-----------+----------+-------------+---------------+---------+----------+-----------------+
| 2024-05-21 14:52:10 | a5b52ca1-173e-11ef-af07-469314b28ba2 | 2            |          | root | 0.000 B   | 0 rows   | 45.109 KB   | 0.000 B       | 0.000 s | 2.106 s  | daily_warehouse |
+---------------------+--------------------------------------+--------------+----------+------+-----------+----------+-------------+---------------+---------+----------+-----------------+
1 row in set (0.00 sec)

What I'm doing:
add a method in Coordinator
public abstract String getWarehouseName()

In its implementation, we try to get the warehouse name from session variable.
What type of PR is this:

[ ] BugFix
[ ] Feature
[x] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

[ ] This is a backport pr

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[x] 3.3
[x] 3.2
[ ] 3.1
[ ] 3.0
[ ] 2.5

@Mergify rerun

@mergify rerun


Abnormal pilot-agent CPU usage if DR certs are not found

Bug Description
Hello everyone,
I found an issue that affects Istio 1.16+.
From what I found out, since the backoff changes performed in b63f73e an abnormal CPU usage  shows up under certain scenarios.
I can reproduce the issue when I define a DR that uses certs that do not exist inside the sidecar.
I have some simple steps to reproduce the issue:

Install Istio 1.17.2 (or 1.16.4 if you prefer) with istioctl install
Deploy the repro application (link to helm chart) using helm install repro repro-chart-0.1.0.tgz -n istio-system
The repro application contains the following:

Sleep client that will be injected with sidecar. Sleep has a sidecar.istio.io/userVolume annotation to mount secrets inside the sidecar.
A SE + DR that defines the path where to find the certs for TLS. Keep in mind that the path used will not match any file inside the sidecar.
Secrets definition with empty content

Due to the fact that secrets are empty, and the certs cannot be found inside the sidecar,
istio-proxy will rightfully raise some errors/warnings about this

2023-05-18T21:45:47.576398Z     info    Envoy proxy is ready
2023-05-18T21:45:51.865837Z     error   cache   resource:file-root:/etc/istio/egress-ca-certs/ca-chain.cert.pem failed to generate secret for proxy from file: open /etc/istio/egress-ca-certs/ca-chain.cert.pem: no such file or directory
2023-05-18T21:45:51.866054Z     info    ads     ADS: "@" sleep-669f4db5dc-k4lth.istio-system-3 terminated
2023-05-18T21:45:51.866330Z     warning envoy config external/envoy/source/common/config/grpc_stream.h:163      StreamSecrets gRPC config stream to sds-grpc closed: 2, failed to generate secret for file-root:/etc/istio/egress-ca-certs/ca-chain.cert.pem: open /etc/istio/egress-ca-certs/ca-chain.cert.pem: no such file or directory  thread=26
2023-05-18T21:45:52.198401Z     info    ads     ADS: new connection for node:sleep-669f4db5dc-k4lth.istio-system-6

Check that the CPU usage of pilot-agent is normal. I use the "top" command inside the sidecar container to verify this.

Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.0 us,  2.3 sy,  0.0 ni, 94.3 id,  0.1 wa,  0.0 hi,  0.3 si,  0.0 st
MiB Mem :  32083.0 total,  14394.2 free,   2966.8 used,  14722.0 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  28652.6 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     24 istio-p+  20   0  181020  55716  38880 S   0.3   0.2   0:01.50 envoy
      1 istio-p+  20   0  755004  47512  31740 S   0.0   0.1   0:00.80 pilot-agent
     39 istio-p+  20   0    7292   3476   2936 R   0.0   0.0   0:00.02 top

After exactly 15 minutes from the deployment of sleep the CPU usage will abruptly rise to abnormal levels.

top - 22:01:17 up 22 days,  3:58,  0 users,  load average: 0.95, 0.64, 0.54
Tasks:   3 total,   1 running,   2 sleeping,   0 stopped,   0 zombie
%Cpu(s): 10.2 us, 12.7 sy,  0.0 ni, 76.7 id,  0.0 wa,  0.0 hi,  0.4 si,  0.0 st
MiB Mem :  32083.0 total,  13623.4 free,   3119.3 used,  15340.4 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  28500.1 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
      1 istio-p+  20   0  755004  55712  33084 S 193.0   0.2   1:29.97 pilot-agent
     26 istio-p+  20   0  183004  57452  38768 S   0.3   0.2   0:04.10 envoy
     39 istio-p+  20   0    7292   3492   2952 R   0.0   0.0   0:00.28 top

If you were to replace the empty secret with a secret that has data then the CPU usage will go back to normal

Version
client version: 1.17.2
control plane version: 1.17.2
data plane version: 1.17.2 (2 proxies)

Additional Information
bug-report.tar.gz captured during the abnormal cpu usage
Affected product area

[ ] Ambient
[ ] Docs
[ ] Installation
[ ] Networking
[X] Performance and Scalability
[ ] Extensions and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
[ ] Upgrade
[ ] Multi Cluster
[ ] Virtual Machine
[ ] Control Plane Revisions

Tagging @hzxuzhonghu since it seems related to b63f73e28706f2cb78b7ed85f3646731a6c11e87

I am not sure why backoff should be related

I can reproduce, and strace shows pilot-agent is reading cert files

https://github.com/istio/istio/pull/44993

Thank you a lot @hzxuzhonghu for taking care of it 😊

can you test it, i manually tested. Works for me

Sure, I will test right away

thank you so much for the fix @hzxuzhonghu :)

Hello @hzxuzhonghu,
Sorry for the delay, I can confirm that the issue is no longer there after applying the fix 👍
Thank you again

I have verified that the commit merged as part of PR #44993 fixed the issue.
I will close the issue.
Thank you again 😃


Add links to extensions in docs

Thanks a lot for this extension, it looks awesome!
The docs claim that the extension is not yet available from the Chrome Web Store or Firefox Add-ons:
https://github.com/EthWorks/useDApp/blob/60807e44aee173f96ae9c4d4f9fa6dac617a3ab8/docs/source/developer-tools.rst#L11-L12
but https://medium.com/ethworks/introducing-usedapp-developer-tools-d52fe77e8230 offers links for both.  That Medium article looks like it is from a legitimate source, so I assume there is no foul play here, but given that uploading malware extensions to these stores is a well-known browser attack vector which has been used in the past, it would be reassuring to update the docs to confirm that those are the correct extension links!  Thanks again :-)

Docs updated:
https://usedapp.readthedocs.io/en/latest/developer-tools.html#installation

Thanks but why not link to the two stores at https://usedapp.readthedocs.io/en/latest/developer-tools.html#installation instead of just listing them?

To be clear: the main concern is accidentally downloading the wrong extension which turns out to be malicious.  Without links to the correct extensions, not only does the reader of these docs have to manually search a store for the extension, but even once it's found, they have no confidence that the one they found is the right one.

Fair point - reopening

Here you can find our new docs with developer tools tutorial:
https://usedapp-docs.netlify.app/docs/Guides/Developer Tools


When using assertSoftDeleted without deletedAtColumn it always uses deleted at

Laravel Version
10.14.1
PHP Version
8.2.7
Database Driver & Version
No response
Description
When using assertSoftDeleted while my model has a custom DELETED_AT column set, assertsoftdeletes tries using deleted_at
Steps To Reproduce
create a model with:
use SoftDeletes;
protected const DELETED_AT = 'archived_at';

and in a test try:
$this->assertSoftDeleted(
            Order::class,
            ['id' => $this->order->id,]
        );

Since you are not passing a model instance to assertSoftDeleted(), you need to also specify the deletedAtColumn parameter. https://github.com/laravel/framework/blob/45b61f5693e3edd3a5352fac269854e022f5b426/src/Illuminate/Foundation/Testing/Concerns/InteractsWithDatabase.php#L108-L110

Thanks @cosmastech

This seems like it could be a fairly simple thing to handle.
        $this->assertThat(
            $this->getTable($table),
            new SoftDeletedInDatabase(
                $this->getConnection($connection, $table),
                $data,
                $this->newModelFor($table)?->getDeletedAtColumn() ?: $deletedAtColumn
            )
        );

Happy to try and throw together a PR if you think it could be beneficial @driesvints

@edvordo you can always try a PR to see if Taylor would accept it 👍


Type: radio not clickable in arrayFields

Radio Fields inside arrayFields are not clickable in puck 0.16.1
Might be related: https://github.com/measuredco/puck/pull/643

can confirm facing the same issue. will revert to just using a select for now

Ah this is a dupe of #723, which has been closed. Apologies for slow reaction to this one.


patch: pleeeeeaaase!

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[PE-D][Tester A] Unable to reset filter

After filtering students, it is not possible to reset the filter unless the user remembers the  metric that was last used to filter.

After applying some filters, no more students showed up and users will not be able to work out the last used filter.

Labels: type.FeatureFlaw severity.Low
original: AngJunYang/ped#11

irrelevant. list resets filter


Golang extension support route/cluster metadata related api

Title: Golang extension support route/cluster metadata related api
Description:
it seems that golang extension does not support route/cluster metadata related api yet, which maybe a useful api.

And it seems that getProperty has already been supported, so we can support route/cluster metadata also in getProperty just like what wasm do. cc @doujiang24 @spacewander

@StarryVae do you mean the current getProperty already supports getting route/cluster metadata? or need some improvements?

we need some improvements.

@StarryVae
Do you mean implementing https://github.com/envoyproxy/envoy/blob/782bb0c102ffbd9880615526c54c00301a6f3f82/contrib/golang/filters/http/source/golang_filter.cc#L1417 and serialize the map/list style in a JSON string, or something else?

Nope, i think route/cluster metadata is not supported yet, and could we support it in getProperty? @spacewander

Nope, i think route/cluster metadata is not supported yet, and could we support it in getProperty? @spacewander

I haven't given it a try, but according to the code:
The metadata is fetched in https://github.com/envoyproxy/envoy/blob/fc6342a95b48c3c8de0262085798c3a4369aa062/source/extensions/filters/common/expr/context.cc#L359-L371
The current serialization code in getProperty doesn't support Map or List, so we can get the metadata only when the metadata is a string.
Here is a relative test:
https://github.com/envoyproxy/envoy/blob/fc6342a95b48c3c8de0262085798c3a4369aa062/contrib/golang/filters/http/test/test_data/property/filter.go#L95


Question about using "Cosmos DB specific role definitions"

Hi,
The Built-in role definitions
 part of the document states that "Azure Cosmos DB exposes two built-in role definitions". It also states that "These are distinct from Azure role-based access control role definitions.", but it doesn't tell then what can I use them for?
I want to set up managed identity based authentication, but I'm not sure what are the best practices:
The cosmos-db/nosql/migrate-passwordless document says "Azure Cosmos DB for NoSQL doesn't include built-in roles for data operations, but you can create your own", but then what are these two? (Cosmos DB Built-in Data Reader, Cosmos DB Built-in Data Contributor)
The documentation probably also needs further clarification on this.
Thanks!

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

ID: aba612b3-f404-11b2-45d9-6e10f1fbf11d
Version Independent ID: 86ccb46e-5ebd-50a4-a911-2ac83c8a41f4
Content: Configure role-based access control with Azure AD - Azure Cosmos Db
Content Source: articles/cosmos-db/how-to-setup-rbac.md
Service: cosmos-db
GitHub Login: @seesharprun
Microsoft Alias: sidandrews

@arphox
Thanks for your feedback! We will investigate and update as appropriate.


drafts: Cleanup state when switching accounts

We previously did not reset the state on switching accounts but
only on logout.
This fix has the added benefit that a user can cleanup the drafts
by switching accounts (but this is also a aside effect that we will
not persist the drafts if the user switches accounts and gets back).

Thanks @borisyankov !

My first thought on this change (and the issue it fixes) is: this looks like it was really easy to get wrong. How can we make it less error-prone?

Concrete immediate versions of that are:

Are there more actions that should be in this list?
Are there more reducers that should get a similar change?

Those immediate versions (which are pretty straightforward to go answer), I'd really like to see in the commit message. Otherwise, in general there's a high probability that there are more things we should similarly fix. And once we're looking, it's so easy to fix them. :slight_smile:

Closing as not likely to get worked on further, and could be addressed as bigger rethinking/reworking.


Add simple string compression

Putting this as a PR so I remember it because I don't really see the need for this to exist currently, but I also like it too much to abandon it. If someone wants this to be added to wiremod, let me know.
Description:
Adds xwl:readString48(n), xwl:readString48(nn), and xwl:writeString48(ns) for memory devices. Converts strings to 48-bit representations and then restores them.
Adds compress48(s) and decompress48(r), functions that compress strings to and from 48-bit number arrays.
Purpose:
Reduces memory footprint by roughly 6x. Ideal for usage in memory-restricted situations.
writeString48 Demonstration E2 code
compress48 Demonstration E2 code
(Warning, I didn't bother optimizing either of these. They'll run fine but they'll hit the quota unless you manually set it higher than unlimited)

Might move this functionality into a string function string:compress() instead.

lol. lmao.

I thought I removed that


Can't use keyframes in createGlobalStyle

Version: 4.0.0-beta.8
I ran into this problem when attempting to add an animation to a body background, so I created this codesandbox reproduction.
Basically, when keyframes is used within a createGlobalStyle block, the value of the animation property is [object Object]

I searched around and couldn't find any mentions or reference to this issue, so I apologize if it's been brought up and you're aware of it.

Definitely a bug, thanks for reporting!

Not sure if its related but this also causes the same bug and worked pre 4.0
const frames = i => keyframes`
  0% {
    transform: rotate3d(0, 0, 1, ${-45 - 235}deg);
    transform-origin: center;
  }
  100% {
    transform: rotate3d(0, 0, 1, ${i * 30 - 235}deg);
    transform-origin: center;
  }
`;

const someComponent = styled.div`
  animation: ${frames(1)} 1s infinite;
`

Fixed in https://github.com/styled-components/styled-components/releases/tag/v4.0.0-beta.9!

@probablyup am I just doing this wrong or is this a bug too? on 4.0.0-beta-9 btw
        const CheckMark = styled.div`
            transform: rotate(45deg);
            ${(props => props.animate && `animation: ${ bounceCheckAnimation } 700ms linear;`)}
        `;


Bug fix and support custom scripts snippets

This is a bug fix.
This is an enhancement or feature.

Summary

Fix link for author name
Allow adding custom scripts snippets

Context

No

意外捉住一只一加手机和 CyanogenMod 大佬！膜拜膜拜！
Please ignore the nonsense above.

The bug fix looks OK to me, but I'm negative towards whether we need the other feature. There's already the possibility to add custom scripts after the originals:
https://github.com/mmistakes/minimal-mistakes/blob/bcd61266122892c2cdf3b5b85c12a71bf849d2fb/_includes/scripts.html#L25-L29
It's as easy as putting your custom script as files somewhere and setting their paths in _config.yml, under the relevant key.

The bug fix looks OK to me, but I'm negative towards whether we need the other feature. There's already the possibility to add custom scripts after the originals:
https://github.com/mmistakes/minimal-mistakes/blob/bcd61266122892c2cdf3b5b85c12a71bf849d2fb/_includes/scripts.html#L25-L29
It's as easy as putting your custom script as files somewhere and setting their paths in _config.yml, under the relevant key.

However, it's not feasible when we wanna use <scripts defer> and <scripts async>.

That's a valid reason. I'm unsure about its usefulness unless you're loading large scripts where performance benefits from async and defer really matters. If you really need this, overriding a file like it's done in the /docs site should suffice.

That's a valid reason. I'm unsure about its usefulness unless you're loading large scripts where performance benefits from async and defer stands out. If you really need this, overriding a file like it's done in the /docs site should suffice. Doing this on a per-site basis has always been the recommended way to further customize this theme.

I'm fine with that way, but an "official mechanism" looks better to me. Similar things are implemented for head and footer anyway.

If you can update the PR to just have the author link bug fix I'll merge it in.
As far as the script enhancement, I'm working on something for another project and this is how I'm doing it there:
Liquid:
{% for script in site.footer_scripts %}
  {% unless script.inline %}
    <script src="{{ script.uri | relative_url }}" {{ script.attributes }}></script>
  {% else %}
    {{ script.inline }}
  {% endunless -%}
{% endfor %}

This allows for adding scripts as an array (how it's done today in the theme) or adding inline JavaScript. There is a new variable attributes for defining things like async, crossorigin etc.
Example:
footer_scripts:
  - uri: https://code.jquery.com/jquery-3.4.1.min.js
    attributes: >
      integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"
  - uri: /assets/js/my-custom-script.js

Would give you <script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
Inline script example:
footer_scripts:
  inline: |
    <!-- Global site tag (gtag.js) - Google Analytics -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-12345678-1"></script>
    <script>
      window.dataLayer = window.dataLayer || [];
      function gtag(){dataLayer.push(arguments);}
      gtag('js', new Date());

      gtag('config', 'UA-12345678-1');
    </script>

That said this would be a breaking change for the theme as uri would also have to be assigned.

@dianlujitao Can you break these up into 2 PRs? I'd like to get the author fix in as that won't break anything. The script enhancement would have to be something we do later.


changing default point outline from yellow to white

@saleiva @javisantana
Please look and merge if it is OK!!
Just please get the yellow outline off of everything.
I don't know why point outline goes to other geometries, but here, I changed the basic default.

Code looks good to me.


Use characterController for secondary players

Anyone using CC for secondary player control? ie: not the player attached to the camera. I want to do that, but looks like camera controls are entangled a bit. I'll work on separating it out - unless anyone has already done so - or if you have a quick tip SSatGuru?

I just added support for secondary player / npc .
just set camera to null when creating the CC.
Example:
cc = new CharacterController(player, null, scene);
instead of
cc = new CharacterController(player, camera, scene);
note that for such use cases, the CC mode will always be set to 1
as mode 0 requires camera
Please try and let me know if you run into any issues.
Ofcourse the other option is to create two cameras and assign the inactive camera to the seconday player.

Hallo! Thx so much for the update. (missed the alert from github)
Working on integrating the changes now.

see https://github.com/ssatguru/BabylonJS-CharacterController#controlling-avatar-programmatically
so if you have two controllers cc1 and cc2 for player1 and player2 respt. as follows
cc1 = new CharacterController(player1, null, scene);
cc2 = new CharacterController(player2, null, scene);
then
to make player1 walk , do cc1.walk(true)
to make player2 walk , do cc2.walk(true)
and so on

K, i got it mostly working. Few things:

The 2ndary character picks up the keyboard control. So both characters will play animations on keyUp. So you have to return from that function if it's not the main player. Eg:

   CharacterController.prototype.enableKeyBoard = function (b) {         if (this._playerName != 'player1') {             return;         }

There's no mechanism to adjust the rotation of the 2ndary characters, so i fire an event with the rotation and then apply the to the 2ndary character(s)
this.players[playerDetails.id].rotation = new BABYLON.Vector3(playerDetails.moveData.char_rot._x, playerDetails.moveData.char_rot._y, playerDetails.moveData.char_rot._z);

The position of the 2ndary characters does not exactly match the position of that character in the main player's view. In other words, the positions get out of sync. So i adjust the position along with the rotation. This is not ideal as it results in little jump backs. But not sure how to work around? Maybe just to turn off player movement for 2ndary characters in the character controller and just use the sync'd positional data instead. I may try that.
this.players[playerDetails.id].position = new BABYLON.Vector3(playerDetails.moveData.char_pos._x, playerDetails.moveData.char_pos._y, playerDetails.moveData.char_pos._z);

Finally, there are some commands missing, like fastrun, and idleJump. I added these in, for example:
    CharacterController.prototype.idleJump = function () {      this._act._jump = true;  };
And if the anims have been renamed, like cc.setRunJumpAnim(agMap["Jump"], 0.6, false);, then the command will fail, so need to make sure to make those consistent.

And that's a wrap. Great stuff. thx ssatGuru.

@bigrig2212

You are right about enableKeyBoard(false).
If you do enableKeyBoard before you do start() it doesnot work.
So if you do

cc.enableKeyboard(false);
cc.start()

it does not work.
But if you do
cc.start()
cc.enableKeyboard(false);

it works.
I will fix this so the order is not important.

Nice

Looks like you are doing multiplayer coding. I guess synching in mutiplayer is tricky.
Not my area of expertise. So not sure I can provide the best advise.

a) fastRun. There is walk and there is run but there is no fastrun.  So 'a' to walk , 'shift a' to run. There is no key combination for fastrun. So can think of "walk run" as "walk fastwalk" or "run runfast".
b) idleJump, runJump. The Charactercontroller  does idle jump if character is idle and run jump if character is walking/running. So you just do jump() and CharacterController figures out if it needs to do idle or run jump.

the characters should not be overlappng each other space. Each of them have colliders which should prevent  that.
If you find the spaces are overalapping you might ahve to adjust the radius of the collider. The collider is the ellipsoid.
you normally adjust this before calling the character controller. Example

player.checkCollisions = true;
player.ellipsoid = new BABYLON.Vector3(0.5, 1, 0.5);
player.ellipsoidOffset = new BABYLON.Vector3(0, 1, 0);

I have put in a fix for 1. also added test file for testing npc/secondary characters

Nice. Keyboard fix works like a champ.
Also, i figured out the issue with collisions. It has to do with GLBs that when loaded, are put into an empty root container. So collisions don't register on that container. Kindof the same issue described here. So the solution is to either put a bounding box around the non-primary players. Or set checkCollisions = true; on one of the meshes lower down that is not empty, like so: meshes[1].checkCollisions = true;
Just being sure not to load two players in the same location, otherwise they get stuck to each other.

I also set all of the positioning code to apply to player1 only - and the syncing works a lot better now.
eg:
    CharacterController.prototype._moveAVandCamera = function () {         if (this._playerName == 'player1') {             this._avStartPos.copyFrom(this._avatar.position);         }


Add Expr.log and Expr.exp

Should be pretty straightforward:

https://pola-rs.github.io/polars/py-polars/html/reference/expressions/api/polars.Expr.log.html
https://pola-rs.github.io/polars/py-polars/html/reference/expressions/api/polars.Expr.exp.html

Hi,
I am interested in this issue. Could you give some more explanation?
It should be added here?
https://github.com/mt-caret/polars-ocaml/blob/main/lib/expr.ml

Hello! Yup, that's where it should be added; I think you can mimic how some of the other operators are defined (e.g. Expr.add/rust_expr_add). See the HACKING.md for instructions on building (I think if you just install the OCaml stuff, the Rust compiler should also be installed for you), and feel free to let me know if you run into issues!

Implemented by https://github.com/mt-caret/polars-ocaml/pull/104.


Add an optional filed to JWK to handle X.509 parameters

Add an optional field to KittenBlue.JWK to handle X.509 parameters

kid and alg fields are also optional, so I'd like to discuss how to design JWK struct

Implement x5c field to KittenBlue.JWK.X509 to sign and verify with them

Add handling for verifying with ECC key

Some refactoring

Use Application.compile_env instead of Application.fetch_env

kid and alg fields are also optional, so I'd like to discuss how to design JWK struct

The usecase where kid and alg may not be present is limited to a single jwk at verification.
The following changes/additions would support this.

issue : Specify the value of alg,kid if present when calling JOSE.JWT.sign.
verify : Create a new function that specifies a single JWK and verifies it

verify(token :: String.t(), key :: KittenBlue.JWK.t(), required_header :: map)

If this response is not needed immediately, I will create an Issue and respond separately from this diff.

If this response is not needed immediately, I will create an Issue and respond separately from this diff.

no problem, thanks


feat: add go-swagger/go-swagger

#4574 go-swagger/go-swagger: Swagger 2.0 implementation for go

Thank you for your contribution.

Released. https://github.com/aquaproj/aqua-registry/releases/tag/v3.7.0


Option to disable creation of objects that cannot be tagged

Users of the module should have an option to disable the user creation of objects that cannot be currently cleaned up by automation.

Hi @jagoodhand - would an option here be to drop objects based on their create date alone rather than not allowing them? Also if you could marry up objects that cannot be tagged with the objects that can where there is a dependency you could piggyback on the tagged object dates.

Yes, I like that. Will likely have an array as a choice option to control behaviour:

block creation of non-taggable objects
only allow non-taggable objects to exist for specified max object period
new tag on taggable objects which pairs to a non-taggable object (will probably pull this out as a separate issue though as it is a lot more work)


[WIP] new tool: gftools packager

Tool to transfer font families from their upstream git repository to the google/fonts repository structure, taking care of all the details.
This introduces a new file to google/fonts, {family_dir}/upstream.yaml.
There's one hard coded upstream.yaml in the script, that simulates how a family that already has an upstream.yamlin google/fonts would behave. You can try it with "Gelasio".
# dependencies
# in your virtual environment ;-)
$ pip install pygit2 strictyaml

# preparation
$ export GITHUB_API_TOKEN=aaabbbcccYOURTOKEN
# optional, otherwise `vi`will be used as an editor, you can also export EDITOR
$ export VISUAL=gedit

# modify a git working directory or write into an empty directory
$  gftools packager Gelasio ../googleFonts/

# allow overriding existing directories and files or branches
$  gftools packager Gelasio ../googleFonts/  -f

# don't ask interactive questions
$  gftools packager Gelasio ../googleFonts/ -f -y

# create a new branch in a clone of google/fonts
$  gftools packager Gelasio ../googleFonts/ -g

# use a local upstream.yaml file to a new or existing branch
$ gftools packager gelasio.upstream.yaml --file ../googleFonts/ -g -f

# There's a small interactive dialogue to create and edit upstream.yaml  configuration.
# Just try any family name for that.
$ gftools packager blinker../googleFonts/ -g

# all options
$ gftools packager -h

[ ] add dependencies to setup.py (if acknowledged)
[ ] actually type-check the type-hints in packager.py
[ ] make a PR with the tool
[ ] remove "Gelasio" hardcoded upstream.yaml
[ ] write documentation
[ ] there are some possible Features also FIXMES in the packager.py file, decide what to do
[ ] react on feedback

@m4rc1e please take a look.

Nice stuff!
It would be great if we could store the .yaml file created by the interactive mode, even if the tool fails. It is quite disheartening to populate the form and then lose everything if you forget to fill in a field.

It would be great if we could store the .yaml file created by the interactive mode, even if the tool fails. It is quite disheartening to populate the form and then lose everything if you forget to fill in a field.

Agree.

It would also be great if the tool could make a PR or even a commit as you've mentioned.

Yes, it already creates a commit in a branch, making a PR is not so much more work. Not sure it it should be contained in this tool.

I'm guessing you may have included type hints because of strictyaml? This will be our first tool in this repo which uses them.

The reason is that types are awesome. It's a bit similar to what unit testing is trying to achieve, but much more efficient. My code is usually typed in that way that I am always aware of the types I'm expecting in my function arguments or as return values, writing it out makes this fact just obvious and also should other help to better understand he code. At least, you can leave out the typing related tests from unit testing. When including or refactoring it's easier do the right thing and when reading the code, it's easier to to follow. Since we are now only on python > 3.5 typing is available and usable, so why don't do it.

I'm neither for or against them but having them does require everyone who works on this repo to understand them.

No, it's opt in really. I'll make sure the packager.py file is actually statically checked, but no consumer of that module has to be aware of it. I.e. you can include and use it as before. The python interpreter itself does not check those types on runtime, it's really just for static checking, python 3.5 only adds the syntax to the language, and the typing module for generic types.

Ok, here comes a second list of TODOs:

[ ] rename GIT_HUB_TOKEN toGH_TOKEN
[ ] master as default placeholder for upstream.yaml branch key
[ ] store the .yaml file created by the interactive mode, especially in the case of a crash
[ ] create PRs (it's easy from this point)

Look at this: https://github.com/graphicore/googleFonts/pull/51 Note: it's a test and and an example for a multi family PR, i.e. it updates two families with one PR. This is intended mainly for super families, but also other bunch updates are possible.

@graphicore the first set of TODO items are still unchecked, are they actually all done?

@davelab6 only writing some documentation is left now. The TODO items at the top are all wrapping up tasks.
BTW new dependencies: pygit2, strictyaml, mypy see: 42bbd8a
Now I'm taking care of the user docs.

Awesome!

@m4rc1e @davelab6 please review.
docs

Thanks @graphicore. I've had a play with it and it seems like it's ready to merge.


new users don't read the initial message fully

<+sebboh> Do users ask for help writing scripts or finding files they lost or
          that sort of thing?  Are there any newbies here?              [23:08]
<lrvick> users ask for stuff like that all the time                     [23:13]
<lrvick> if you know something someone asks, by all means help
<lrvick> There are also a bunch of other rooms too if you /list
<lrvick> for various things                                             [23:14]
<lrvick> A lot of people end up here that have never used a terminal
<lrvick> and have no idea wtf is going on, like they are in the matrix
<lrvick> so you ocassionally get super noobs that just managed to figure out
         how to paste a command and hit enter a few times
<lrvick> Also for most people this is their first time using a terminal
         multiplexer                                                    [23:15]
<lrvick> they have now idea how to detach or re-attach and constantly
         exit/reconnect everything
<lrvick> A lot of people don't yet understand the benefits of having your chat
         etc centralized and always-on on a remote system and this is all
         magic.                                                         [23:16]
<+sebboh> That's a good list of potential additions to the welcome message
          and/or that echo message.

<lrvick> We do try to cover that in the terminal welcome message        [23:17]
<lrvick> sadly no one reads it
<lrvick> they read just enough to hop over to this tab
<lrvick> then get stuck
<lrvick> and start typing ls exit quit grep
<lrvick> its amusing
<+sebboh> Great.  That's great.  We can catch a LOT of users by hiding the
          secret key combo to leave that first screen firther down.  The emacs
          tutorial does a great job of this.                            [23:18]

This is more of an /etc/ issue because it's in /etc/skel but, I'll work on it anyways.

Closed, like a boss. The file will not actually be deleted until shell-etc is updated, however.


Update finagle-core, finagle-mysql to 20.3.0

Updates

com.twitter:finagle-core
com.twitter:finagle-mysql

from 20.1.0 to 20.3.0.
Changelog
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.twitter" } ]

labels: library-update, semver-minor

Codecov Report

Merging #381 into develop will not change coverage by %.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #381   +/-   ##
========================================
  Coverage    77.18%   77.18%
========================================
  Files           46       46
  Lines         1039     1039
  Branches        28       28
========================================
  Hits           802      802
  Misses         237      237

Continue to review full report at Codecov.

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


bug in __reduce_by_half(x) ?

I think there is a bug in the shortest function: __reduce_by_half(x). With the current version, only the first half of x is used to compute the reduced vector.
Shouldn't it be something like:
def __reduce_by_half(x):
return [(x[i] + x[1+i]) / 2 for i in xrange(0, len(x)-len(x)%2, 2)]

@JulienB-78 , Although I agree with you, I'd change (x[i] + x[1+i]) / 2 to (x[i] + x[1+i]) / 2.0, cause it matters in Python 3.x.
I think you can correct it and make a pull request.

Thank you for pointing it out!
I did not notice this issue for many months...


NPM package is broken

Not 100% sure what your NPM deployment/publish strategy looks like, but it seems like you forgot to run the ts compiler so that the output is included in dist/* before publishing 0.3.0?
See: https://npm.runkit.com/graphql-2-json-schema

Error: Cannot find module '/app/available_modules/1611187942000/graphql-2-json-schema/dist/index.js'. Please verify that the package.json has a valid "main" entry

I don't see the dist/ folder in the package...

Hi Chris!
Yes, the 0.3.0 version is broken, that's why I published the 0.3.0-0 right after 🤓

Hi Chris!
Yes, the 0.3.0 version is broken, that's why I published the 0.3.0-0 right after 🤓

Forgive me if I'm wrong here and going down the wrong path, but:

You mean 0.3.1-0, right? I don't see a 0.3.0-0 on NPM.
Either way, it seems like the latest tag is pointing to 0.3.0, which will give people a broken package if the simply do yarn add graphql-2-json-schema

Forgive me if I'm wrong here and going down the wrong path, but:

You mean 0.3.1-0, right? I don't see a 0.3.0-0 on NPM.
Either way, it seems like the latest tag is pointing to 0.3.0, which will give people a broken package if the simply do yarn add graphql-2-json-schema

@newhouse you're right!
I just published<EMAIL_ADDRESS>✅

@newhouse you're right!
I just published<EMAIL_ADDRESS>✅

Thanks!

Thanks!


Checks Google\Cloud\Version for PHP version

Codecov Report

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

@@            Coverage Diff            @@
##             master    #1573   +/-   ##
=========================================
  Coverage     86.98%   86.98%
  Complexity     4210     4210
=========================================
  Files           408      408
  Lines         16907    16907
  Branches       1838     1838
=========================================
  Hits          14707    14707
  Misses         1706     1706
  Partials        494      494

Continue to review full report at Codecov.

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

Closing in favor of #1574


Add possible errors info to JSON RPC methods

Introduce as much as possible information about possible errors for each JSON RPC method we have. Yet there is a lot of copy-paste data I believe it's one of the most readable ways to show errors.
This PR needs some attention to the language because it's me, you know.
NB this PR is based on #801 I am marking this as a draft until that one is merged.

Hi @khorolets,
#801 has been merged, so you should be unblocked now 👍

Hi @khorolets,
#801 has been merged, so you should be unblocked now 👍

Thanks for the heads up! I've resolved conflicts and marked PR as ready for review!

@khorolets there are more places where the changes I proposed need to be copied over

@khorolets there are more places where the changes I proposed need to be copied over / re-applied

OK, I guess I've done it this time

@khorolets there are more places where the changes I proposed need to be copied over / re-applied

OK, I guess I've done it this time

@thisisjoshford could you assist with failing test-links, please? :)

@thisisjoshford could you assist with failing test-links, please? :)

Hello @khorolets, I have reviewed/fixed some broken links, but there's still one dead URL that I don't know how to handle: https://ropsten.bridgetonear.org/
The server seems down so I don't know if it's a temporary issue or not. Maybe Josh knows better! 😄

The failing test is not related to the PR, so I merged this PR. @bucanero @thisisjoshford Please, double check if we even need that bridge documentation with @djsatok or @artob


[DO NOT MERGE] Add components to organisation page header

Add components into the header section of the new organisation pages.

add organisation logo
add translation nav
add featured links
add no10 banner
TO BE CHANGED: comment out all the code below as it's going to change but need it for reference
add a presenter for the header section
add tests for each page type to ensure the right bits are being shown on them

Some example pages:

with translation nav
with large featured links
with normal featured links
with no10 banner

Trello card: https://trello.com/c/v7Izogff/137-add-organisation-header-to-organisation-page

The large featured links are smaller than they previously were in Whitehall. This may not be a problem, but may be worth noting in the Bugs and Issues board so we can keep track of these differences.
Current:

New:

Also one of your commit messages says "- TO BE CHANGED: comment out all the code below as it's going to change but need it for reference" 🤔(I know this is WIP, but worth noting case you just forgot to remove it)


Versatile damage throwing error in console

When rolling versatile damage from a weapon with the versatile property, the damage does not roll and the console throws an error as per the picture above, please let me know if you would like to have the actual console log file.

Duplicate of https://github.com/foundryvtt/dnd5e/issues/3306


fix(deps): update terraform github.com/terraform-ibm-modules/terraform-ibm-landing-zone to v3.8.4

This PR contains the following updates:

Package
Type
Update
Change

github.com/terraform-ibm-modules/terraform-ibm-landing-zone
module
patch
v3.8.3 -> v3.8.4

Release Notes

terraform-ibm-modules/terraform-ibm-landing-zone
v3.8.4
Compare Source
Bug Fixes

deps: update terraform github.com/terraform-ibm-modules/terraform-ibm-landing-zone-vpc to v7.2.0 (#443) (8afcd5f)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

/run pipeline

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

GitHub release
v8.1.2

Your semantic-release bot :package::rocket:


Update<EMAIL_ADDRESS>to 1.23.1 (hot fix release)

Please describe the package or library you would like to add to spack-stack.
Update<EMAIL_ADDRESS>to 1.23.1 (hot fix release)
What applications will be using this package or library?
JCSDA/JEDI
Is there already a package or library in spack-stack that provides this, or related, functionality?
<EMAIL_ADDRESS>is already in spack-stack
Additional context
n/a
Will This Package be Needed in a NOAA Operational Application?
Yes - already approved

Closed via https://github.com/JCSDA/spack-stack/pull/635


How to get the serial output values and write if else statenent

Hiii there.... This is really an awesome library and got it work in a few mins.. but i am newbie and I wanna write an if else code from the serial output value from the serial output monitor.. like
If ( x = 00000001);
Then something happens
Can you please help me out.. it would be a great help for me..

I'm not sure what you mean, maybe this helps?
#include <ShiftIn.h>

ShiftIn<1> shift;

void setup() {
  Serial.begin(9600);
  shift.begin(8, 9, 11, 12);
}

void loop() {
  if(shift.update()) { // we know some button has changed
    // you could check for specific buttons:
    if(shift.state(0)) {
      // button 0 is pressed
    } else {
      // button 0 is not pressed
    }
    // or you could also check for many buttons at once:
    if(shift.getCurrent() == 0b00000011) {
      // button 0 and 1 are pressed, button 2 to 7 are not pressed
    }
  }
  delay(1);
}

Thank you soo much this... This is exactly what I need... I am trying make a 16 channel RF remote control using microcontroller and now it is possible thanks to you.. ,😁🔥

I'm not sure what you mean, maybe this helps?
#include <ShiftIn.h>

ShiftIn<1> shift;

void setup() {
  Serial.begin(9600);
  shift.begin(8, 9, 11, 12);
}

void loop() {
  if(shift.update()) { // we know some button has changed
    // you could check for specific buttons:
    if(shift.state(0)) {
      // button 0 is pressed
    } else {
      // button 0 is not pressed
    }
    // or you could also check for many buttons at once:
    if(shift.getCurrent() == 0b00000011) {
      // button 0 and 1 are pressed, button 2 to 7 are not pressed
    }
  }
  delay(1);
}


Improve notification localization

Allows more freedom to localize notification strings.
Adds a middle dot between the notification string and timeElapsed to make the UI consistent with other parts.
In PostMeta.tsx, fixes an issue with uneven line heights and replaces gap with whitespace to make the UI consistent with other parts.

Before:

After:

@pfrazee Hello, could you please review this PR?

Pretty nasty merge conflict here, from fixing RTL support. I can look later and clean it up unless you really feel a desire to do it 😅

@haileyok I think it's probably done. Thanks for notice!

@haileyok Can you please review this PR and also #3912?

@estrattonbailey Hello, I was wondering if you could review this PR?


bspwm: show only workspaces on curently focused monitor

I would find it convenient if the bspwm module could be configured so that the set of bspwm workspaces shown on the bar corresponds to those shown on the monitor currently in focus. So, unlike pin = true, this would dynamically switch the monitor whose workspaces are shown based on focus.

Do you mean that in every polybar running on every monitor, the bspwm-module should display only workspaces visible on the currently focused monitor?

My own use-case (currently implemented using lemonbar, and which I would love to replicate using polybar) is that I run dual head with only one bar, which is shown on the primary monitor. While the bar is only shown on the primary monitor, the workspaces and tiling-state information shown is that of the currently focused monitor.


removeformatPasted

if I set removeformatPasted to true and than paste text like "On August 14, 2015"  Not any html tags removed. How can I remove them?

sorry this text with html tags

removeformatPasted not remove html tags) Its my mistake)


Fixes #83

Oh, forgot to mention that this PR does not include the ability for a user to create their own custom Java class from within the editor; one must be created outside the editor before selecting it from within the editor.

pushed


Converting string into date

I have an inventory table on my web app and when using the export some of my products (8 out of 630) are turn into date.
Examples:
Pija Philips 1 3/4''     In excel is shown as --> 1/3/2004
Clavo Rolado 1 3/4''   In excel is shown as --> 1/3/2004
Clavo Rolado 2 3/8''   In excel is shown as --> 2/3/2008
I tried
XLSX.write(wb, {
bookType: type,
type: 'string'
}) :
But still the same

A similar happened to me.
"Some words 10/05/2022" ->"04/10/2022"
I was using.
var ws = XLSX.utils.table_to_sheet(tableElem);

My issue has been resolved by updating the latest SheetJS.

Could you show me your whole function please


Slight adjustments to XP formula

Adjusted tanh divisor to 25 instead of 20, and length exponent from .7 to .73. Without these adjustments, two short messages will give more XP than one longer one:
sending two messages on the same line = 9.4
sending two messages + on different lines = 10.2
With these adjustments, that will change:
sending two messages on the same line = 9.4
sending two messages + on different lines = 8.9
This will also make longer messages fall off in value a bit less as they get longer.
Before:
Long message, probably an explanation of something pretty complicated = 13.9
After:
Long message, probably an explanation of something pretty complicated = 15.7

Just made another edit - I adjusted how wordiness and compression factor into the XP score. I was playing around with it and found that "the " x 500 would actually be worth 52 XP. This is because compressibility didn't go negative, and because everything in the message was a real word, its wordiness score would be 1, so the message would be worth maybe a bit less than 1/3 of the XP if it was a legitimate message of that length. I've adjusted the formula so that if the compressibility is extremely high, the XP will be low even if wordiness is high. I made wordiness go no lower than 0.5, so you will never lose more than 50% of the value of a message from not using words. It might make sense the floor lower, like 0.25, but I think this is fine for now.
I've tested this with a bunch of inputs, and it seems to have only made the XP system better. It will give less XP for just links, about the same XP for most regular messages, but "the " x 250 will now only give 1XP instead of 50. Generally repetitive messages will receive much less XP, while regular messages will receive a similar amount.


Proof-of-Concept/WIP: support Kubernetes style staging repositories

This is a quick'n'dirty proof of concept to implement staging/ repositories as they are used by the Kubernetes project: https://github.com/kubernetes/kubernetes/tree/master/staging

A first (failed) run on Kubernetes: https://gist.github.com/sttts/5625a17825ea338cff4cc6becdef16d3

/cc @mfojtik

Interesting! Thanks for putting up a PoC.

A first (failed) run on Kubernetes: https://gist.github.com/sttts/5625a17825ea338cff4cc6becdef16d3

It's not immediately apparent to me how that run is affected by the changes in this PR ( 2119 transitively valid internal packages is roughly the number I remember seeing when I last ran against k8s, a couple weeks ago), but it doesn't seem like these changes you made had anything to do with the failures that apparently occurred:
could not deduce project root for golang.org/x/time/rate: unable to deduce repository and source type for "golang.org/x/time/rate": unable to read metadata: unable to fetch raw metadata: failed HTTP request to URL "http://golang.org/x/time/rate?go-get=1": Get http://golang.org/x/time/rate?go-get=1: dial tcp <IP_ADDRESS>:80: i/o timeout

We likely either need to turn down the parallelism on network requests (right now we just fire them all off simultaneously and hope for the best) and/or introduce smarter dynamic retries
No versions of github.com/coreos/etcd met constraints:
	v3.1.5: Unable to update checked out version: fatal: reference is not a tree: 20490caaf0dcd96bb4a95e40625559def8ef5b04

	v3.1.8: Unable to update checked out version: fatal: reference is not a tree: d267ca9c184e953554257d0acdd1dc9c47d38229

	v3.1.7: Unable to update checked out version: fatal: reference is not a tree: 43b75072bfaca5a7c35c718179defbcabd9a0886

	v3.1.6: Unable to update checked out version: fatal: reference is not a tree: e5b7ee2d03627ca33201da428b8110ef7c3e95f1

This suggests a stale repo at GOPATH/pkg/dep/sources/https---github.com-coreos/etcd that's not been updated with the latest from upstream as it should, which is something I thought we'd mostly worked out already. However, given that some of those tags are a month old...well, did you last try dep a month ago?
Unable to cache go4.org
Unable to cache github.com/samuel/go-zookeeper
Unable to cache github.com/garyburd/redigo
Unable to cache github.com/hashicorp/hcl
Unable to cache github.com/spf13/afero
...

It's concerning that we see so many of these; I wish we logged the error there so we could see the actual complaint.

to implement staging/ repositories

It'd be good to know more about the use case that entails the use of this staging/src pattern in Kubernetes. I've read the README in https://github.com/kubernetes/kubernetes/tree/master/staging, but what's discussed there is still fairly insider baseball - it's a functional description, but it doesn't really explain what the overall goal of the staging system is - what workflows it enables, how it relates to releases, what it means about import paths, etc. And that's going to be important, because without that, it'll be hard for me to figure out alternatives.
And alternatives are important, because...while we really, really want to make sure we're covering big projects like Kubernetes' needs, it's very unlikely we'd be able to incorporate the changes in this PR as-is.
The changes in pkgtree.go are basically equivalent in significance to defining a new vendor directory for all Go projects everywhere. We simply can't make choices like this - it would make us incompatible with the go tool. Either the toolchain would have to accept these semantics, or we'd have to drop them later.
The symlinking is at least within our realm of choice, but still something that runs against the grain - dep is already very conservative in its treatment of symlinks, as it's a major way of keeping the dragons out.
So, yeah - if you could explain a bit about the broader workflow goals of this staging area, it might help a lot with figuring out some lower-impact alternatives.

oh...wait. rereading that README, it seems like at least part of the goal is essentially being able to hack on multiple repositories that have mutual imports at the same time, while still retaining an encapsulated project and build reproducibility, etc.
If that's the case, then that falls under the header of the "multi-project workflow," which is definitely a known, painful problem. I have a draft writeup of how we might be able to address such things after moving into the official toolchain. Before is harder, but we can see what we can figure out.

@sdboyer sorry for the late feedback. was on vacation...
The goal of the staging repos is mainly to prepare the split of a monolithic repo into sub-repos, but before the infrastructure is available to effectively maintain such a multi-repo project. As a middle ground Kubernetes introduces the staging/ directory which is symlinked into vendor/.
The repos in staging/ could also live under vendor/. From a Go point of view they do. Go does not know and should not know about staging/ at all, and luckily it works fine with the symlinks. The repos are put under staging/ only to avoid being removed when dependencies are updated (today via Godep).
In other words: if golang/dep would preserve certain "authorative" repositories in vendor/ while replacing vendor/, we could get rid of staging/ and the ugly symlink hack.
One technical note: we put repos under staging/src/ instead of staging/ directly because this way we can point the GOPATH to that directory. This helps to get godep to work when vendoring the Kubernetes project itself.

eek, i didn't realize i hadn't responded to this :/
i'm gonna close this out, as it just changes the model we operate under too much. however, we (@thockin, @kris-nova, @carolynvs and i) did have a productive conversation a couple weeks ago about moving forward with k8s & dep, and we now have a project in which we're hammering some things out.

@sdboyer I don't see much in that repo. Are there any notes about what you discuessed? Would love to contribute if this is done in the open.

@sttts fantastic! there are some notes, though they're kinda sparse - https://docs.google.com/document/d/1uBnrlJIks8UWHI50u0mERxEQLYkeUrIYXeKH4Z-DZMg/edit
some important high-level points from the mtg weren't captured in those notes. for example, we understand that, k8s being as large and multiheaded as it is, a lot of what's important is to set some more fixed goals that both k8s and dep can converge towards, rather than dep just trying to chase k8s' needs of the moment. to that end, we understand that the conversation about moving k8s to dep will necessarily also be a bit interwoven with some more k8s-internal conversations about how, for example, staging/ ought to be handled,  and obviating the need for symlink magic in vendor/.
i realize that might sound a bit ominous, but it shouldn't - just some expectation-setting that this is will need to be a deliberate process. also, after talking brass tacks about how the import graphs and distinct subprojects within k8s.io/kubernetes are or are not supposed to intersect, i got to a point of cautious enthusiasm that the choices y'all have already made about staging/* should align quite well with dep's assumptions already. this is just a sketch, a hypothesis at the very most, but it seems like the following could get us at least into the ballpark:

move staging/ to internal/staging - nothing in there is supposed to be imported by anything external, anyway, and this just codifies that
set up dep at the root of k8s.io/kubernetes, as per normal
configure ignore patterns - #709 - for everything under internal/staging/*
set up dep projects for each discrete thing under internal/staging (nothing magic here, just dep init at each dir that we want to treat as a discrete project)
some strategic use of dep ensure -no-vendor (just merged on friday, part of #277) will probably be valuable for building those projects

i'm almost certainly forgetting a few things, but that's as much of a braindump as i can muster right now.

I am still working through 1-4. For #3 we hope to avoid adding ignores by naming it _staging.

ahh right, i forgot about the underscore

@sdboyer can you comment how you plan to create the link to the internal/_staging packages in your sketch? How will dep know that internal/_staging/k8s.io/apimachinery should represent k8s.io/apimachinery?
Compare https://github.com/golang/dep/pull/1000 and https://github.com/fabulous-gopher/k8s-dep-e2e/pull/7 for a quick prototype to allow sources pointing to non-root packages. With that you can use a constraint.source or override.source field to tell dep about the staging dirs.

@sttts the idea for internal/_staging was premised on an impression i got during our vidchat that those packages are not supposed to be imported externally. IOW, i do not have an answer to that question because this plan was predicated on not having to have an answer to that question 😄
a note, though - i'm exceedingly uncomfortable with the idea of systematically supporting something like this, though, as it would effectively destroy the semantics of internal dirs.

Well, they are not imported "externally". They are imported from within k8s.io/kubernetes under their external name, e.g. k8s.io/apimachinery. At the same time they are used by 3rdparties only from their nightly exports. Hence, the second use-case is completely standard. We need at least a workaround for the first.

hmm right. i wish i had taken clearer notes during our discussion - it ended up being fairly rushed 😞
are there imports from within staging back into the k8s.io/kubernetes tree?

We need at least a workaround for the first.

remind of the reason for not simply importing them directly at their path within staging, or the possible future internal/_staging?

are there imports from within staging back into the k8s.io/kubernetes tree?

no. but, there are imports between staging repos, e.g. staging/k8s.io/apiserver imports k8s.io/apimachinery. We cannot import via a full staging path there as we want to publish them to their real repos on github.

remind of the reason for not simply importing them directly at their path within staging, or the possible future internal/_staging?

This confuses go as it will have two different type universes: with and without full path.

@sdboyer @carolynvs is #1000 + fabulous-gopher/k8s-dep-e2e#7 something you could imagine to support as a solution to the staging problem? Clearly #1000 is not perfect yet, but I am very willing to work on it if the answer is yes. Also how would such an extension be discussed? Does it need a proposal or anything formal like that?
About the consistency of the approach some questions (cc @carolynvs):

if two dependencies github.com/a/a and github.com/b/b both specify a source for the same transitive dependency github.com/c/c (or one does, one doesn't), which will win?
are overrides only considered in the current root project and ignored in Gopkg.toml of dependencies?

As an example:
I want to vendor k8s.io/apimachinery and k8s.io/kubernetes. The later would have k8s.io/apimachinery in a staging directory and therefore it would specify a constraint with source k8s.io/kubernetes/internal/staging/k8s.io/apimachinery. Then I would expect:

if k8s.io/apimachinery is constrained by me to v1.7.0 and k8s.io/kubernetes as well, I would expect k8s.io/kubernetes and k8s.io/kubernetes/internal/staging/k8s.io/apimachinery in v1.7.0.
if k8s.io/apimachinery is constrained by me to v1.7.0 and k8s.io/kubernetes is unconstrained, I would expect to get k8s.io/kubernetes and k8s.io/kubernetes/internal/staging/k8s.io/apimachinery in v1.7.0.
if k8s.io/apimachinery is constrained by me to v1.7.0 and k8s.io/kubernetes as master, I would expect a conflict.
if k8s.io/apimachinery is unconstrained by me to v1.7.0 and k8s.io/kubernetes is constrained to v1.7.0, I would expect to get k8s.io/kubernetes and k8s.io/kubernetes/internal/staging/k8s.io/apimachinery in v1.7.0.

In other words, as soon as a staging repo is involved via source value, this is considered over the self-standing repo.
Does this match the semantics of the source field today (compare my question 1 above)?

ahh, ok. yeah, this is not a great situation 😢 trying to pretend like there are two canonical locations for one body of code is going to be an ugly hack, pretty much no matter what.
even if we did teach dep to allow us to dupe itself into believing that an external path is actually an internal one, none of the version information underneath it would make any sense. the system for swapping in alternate sources still takes version information from the alternate, not the original - meaning that it'll be k8s.io/kubernetes versions & revisions showing up in Gopkg.lock, not k8s.io/apimachinery's. that's just the first problem that occurs to me; maybe not the end of the world, but we're skating around in undefined territory.

are overrides only considered in the current root project and ignored in Gopkg.toml of dependencies?

yes.

if two dependencies github.com/a/a and github.com/b/b both specify a source for the same transitive dependency github.com/c/c (or one does, one doesn't), which will win?

this answer gets a little complicated:

if a/a and b/b specify no alternate source for c/c, then it works (typical case)
if both a/a and b/b specify the same sources for c/c, then it works
if both a/a and b/b specify different sources for c/c, then it's always a conflict
if a/a specifies a source for c/c but b/b does not, it may work, but it depends on the order in which a/a and b/b are visited by the solver.

this last case is the one you want, and is a thing in the solver i'm quite unhappy with - #428. obviously, the idea of visit order potentially determining SAT or UNSAT is repugnant, so i'm quite unhappy with this. but i figured i'd leave it until it actually came up as an issue. and, here we are 😢
i'm pretty sure i do have test cases, though - i'd look through

this last case is the one you want,

Actually this case is not that critical. It would be fine if the user can override what he actually wants in that case.
In practice this case would happen only if a user wants to vendor k8s.io/kubernetes. We do not support this case today explicitly. People should vendor k8s.io/apimachinery, k8s.io/client-go etc. (all published staging repos from k8s.io/kubernetes).
The only case that really matter for us is the one where we have local source fields in the root repo, i.e. Kubernetes would be fine with having those non-root source values only in the overrides section (if that makes it easier to accept such a solution). In constraints we can be stricter.

hmmm...that's heading back towards territory that's more acceptable - we could probably do it entirely within the solver without needing to define new concepts in SourceManager - but it would still create a pretty nonsensical Gopkg.lock file in terms of the versions and revisions that get recorded there.


Check for previous/existing GitHub issues/module proposals

[X] I have checked for previous/existing GitHub issues/module proposals.

Check this module doesn't already exist in the module indexes

[X] I have checked for that this module doesn't already exist in the module indexes; or I'm proposing the module to be migrated from CARML/TFVM.

Bicep or Terraform?
Bicep
Module Classification?
Resource Module
Module Name
avm/res/network/virtual-network-gateway
Module Details
Migrate from CARML to AVM
Do you want to be the owner of this module?
Yes
Module Owner's GitHub Username (handle)
fabmas
(Optional) Secondary Module Owner's GitHub Username (handle)
No response

Hi @fabmas,
Thanks for requesting/proposing to be an AVM module owner!
We just want to confirm you agree to the below pages that define what module ownership means:

Team Definitions & RACI
Shared Specification (Bicep & Terraform)
Module Support

Any questions or clarifications needed, let us know!
If you agree, please just reply to this issue with the exact sentence below (as this helps with our automation 👍):
"I CONFIRM I WISH TO OWN THIS AVM MODULE AND UNDERSTAND THE REQUIREMENTS AND DEFINITION OF A MODULE OWNER"
Thanks,
The AVM Core Team
#RR

I CONFIRM I WISH TO OWN THIS AVM MODULE AND UNDERSTAND THE REQUIREMENTS AND DEFINITION OF A MODULE OWNER

Hi @fabmas,
Thanks for confirming that you wish to own this AVM module and understand the related requirements and responsibilities!
Before starting development, please ensure ALL the following requirements are met.
Please use the following values explicitly as provided in the module index page:

For your module:

ModuleName - for naming your module
TelemetryIdPrefix - for your module's telemetry

For your module's repository:

Repo name and folder path are defined in RepoURL
Create GitHub teams for module owners and contributors and grant them permissions as outlined here.
Grant permissions for the AVM core team and PG teams on your GitHub repo as described here.

Check if this module exists in the other IaC language. If so, collaborate with the other owner for consistency. 👍
You can now start the development of this module! ✅ Happy coding! 🎉
Please respond to this comment and request a review from the AVM core team once your module is ready to be published! Please include a link pointing to your PR, once available. 🙏
Any further questions or clarifications needed, let us know!
Thanks,
The AVM Core Team

adding the link to the PR: https://github.com/Azure/bicep-registry-modules/pull/748

[x] PR merged; Module published.
[x] GitHub teams are available and assigned to their parents.
[x] CODEOWNERS file updated.

Thank you for your work @fabmas! I'm closing this issue now.


modpack

the new modpack called TCraftHungary dosent work

This is the Solder Repository and is not an issue tracker for the launcher.
http://www.technicpack.net/help
https://github.com/TechnicPack/TechnicLauncher


[TASK] Validate email fields

Estimated story points: 1
Description

We want users to provide valid email addresses

Acceptance criteria

User input is verified by the browser

Time: 1h


[SPIKE] Explore observability of Celery workers

Goal
We've experienced a few incidents where messages in queue build up despite having reasonable number of Celery workers. We hypothesize that there may be zombie workers afoot, but currently have no way to monitor individual worker health. This spike aims to explore options for observability of Celery workers.
Checklist

Research:

[ ] Ways to inspect directly inspect workers
[ ] Can we set up a second broker to inspect workers? If so, that's cool and what are the tradeoffs in recommended choice of broker?

[ ] Explore increasing observability of celery works by utilizing Datadog profiling

[ ] Enable celery events in dev environment for more detailed info

[ ] Discuss and document with team
[ ] Create recommendations
[ ] Create ADR

Timebox
Estimate how long this should take, in days. Typically 3.
Assumptions/Constraints

Use of SQS as broker limits ability to write to logs worker info etc. This card helps explore workaround to this constraint.

Additional Info/Resources

Recent incidents on March 4, 2021:

PagerDuty - incident 15 <-- had 24 workers, but needed to deploy 6 new ones to get messages out of queue
PagerDuty - incident 16 <-- self-resolved

Celery - Monitoring/worker-events
Celery - Monitoring/task-events
Celery - Workers/inspecting-workers
Celery - Worker/configuration
Celery - Brokers

Out of Scope

Flower (pronounced 'flow') library -> said to be not reliable for large scale projects. Also not compatible with our choice of broker SQS

Open Questions

Is implementation out of scope?

@miabecker

Moving to backlog. Want to wait and see if upgrading to Celery v5 might address this issue.

Stale issue. No longer seeing queue buildup.


Fix gitmojis.json path

The gitmojis.json path was changed.

Sorry for not seeing this before. Thanks for the PR!

Included in v3.0.3


Update to bootstrap4

#1901 will fix broken test.

This needs a lot more work, I'll restart it later


[stdlib] remove deprecations added by SE-0426

Remove some deprecations introduced in SE-0426. Amendment to the proposal is here: https://github.com/apple/swift-evolution/pull/2469
Addresses rdar://128709914

@swift-ci please smoke test

@swift-ci please test


Possible error in data deserialization on CartForm

What is the location of your example repository?
No response
Which package or tool is having this issue?
Hydrogen
What version of that package or tool are you using?
2024.1.1
What version of Remix are you using?
2.4.1
Steps to Reproduce
For example, I have a button in a component that uses useFetcher() for send data to locale cart route
<button
  type='submit'
  onClick={(e) => {
    fetcher.submit(
      {
        action: 'ActionTest',
        inputs: {
          test: ['test1', 'test2'],
        },
      },
      {
        action: '/cart',
        method: 'POST',
      },
    );
  }}
>
  Send data
</button>;

in ($locale).cart.tsx i have this action
export async function action({ request, context }: ActionFunctionArgs) {
  const { cart } = context;

  const formData = await request.formData();

  const { action, inputs } = CartForm.getFormInput(formData);
  console.log('inputs', inputs);
  console.log('action', action);

  invariant(action, 'No cartAction defined');

  // ....
 // code to update the shopify cart component (not important)
 // ....

  return json(
    ....
  );
}

The logs are this:
inputs Object {
  action: ActionTest,
  inputs: [object Object]
}
action undefined

I think it may be an error in how CartForm.getFormInput() handles the data.
This is just an example but the problem does not allow me integrate useFetcher with Shopify Hydrogen Cart.
I see the official documentation but the result is the same
https://shopify.dev/docs/api/hydrogen/2023-07/components/cartform#example-cartform-with-fetcher
Expected Behavior
Logs
inputs Object {
  lines: Array(2),
}
action LinesAdd

This is how data arrives using  component
Actual Behavior
Logs
inputs Object {
  action: ActionTest,
  inputs: [object Object]
}
action undefined

Hey @porrodv
Try something like this:
fetcher.submit(
  {
    cartFormInput: JSON.stringify({
      action: 'ActionTest',
      inputs: {
        test: ['test1', 'test2'],
      },
    }),
  },
  {method: 'POST', action: '/cart'},
);

Looks like this is resolved


Feature request: Tutorials for basic proofs

Hello, I just learned about this project and Globular. It's really exciting to see a proof assistant for HoTT!
It would be valuable to see some example proofs for those of us who are coming from a set theory background and still learning HoTT. For example defining the addition of natural numbers and proving associativity.
I'd be glad to contribute to the writing, but I'd need some guidance on the theory.

Hi Ben thanks for your message! It's great that you like the project.
This proof assistant is a proof assistant for finitely-generated infinity-categories (or infinity-groupoids). It is therefore related to HoTT, since that HoTT is an "internal language" for the (infinity,1)-category of infinity-groupoids. However, the mechanisms that the two systems yield are quite different. In homotopy.io, the only allowed constructions are composition of generators, using the composition structure in the infinity-category (or infinity-groupoid), and homotopy construction, while HoTT allows in principle much more general constructions.
Taking your example of the natural numbers, that is not equivalent to a finitely-generated infinity-groupoid, since it has an infinite number of objects. As a result, it can't be expressed in homotopy.io.
To illustrate what can be done in homotopy.io, we are very much overdue making examples and tutorials available, and hope to get that done this summer. However for now you can look at the examples subdirectory of the repo.

Thanks, I think that makes some sense. I will need to do some reading about infinity-groupoids to better understand what does and does not fit that definition.

@jamievicary you can absolutely define (finite) natural numbers in terms of Peano axioms and "0" and "Suc". It's tedious but possible.
For instance, this is what "1" might look like

And it's as simple as this to define additon:

"Add" (in green) simply consumes "Suc" one by one and puts it above until it hits a "0" etc.
I did a much more complicated and complete version of this in Globular, defining Rationals via two copies of whole numbers which in turns were built from two copies of natural numbers plus a function to normalize them.
The part where I got stuck on was how to reduce rationals to the simplest fraction, and doing even very simple fractions just takes a lot of wire manipulation, but it can all be done.
Not sure that's what @littlebenlittle had in mind, but that approach works since you have a finite set of primities (0, Suc, Add, Multiply)

Peano Arithmetic.zip
I didn't prove anything yet but here is an implementation of basic Peano Arithmetic featuing addition and multiplication. I think to prove that those two are commutative, associative, and distributive, you'd have to show how various cells are the same thing. Might require allowing some things (i.e. add 0 L and add 0 R) to be invertible

Thanks, @kram1032 , the definition of zero and suc was as far as I got in my attempt! And your statement of associativity looks very similar to what I've been doing by hand, very informally.

Okay, on closer inspection I think the problems you mention are related to an issue I have been running into with my paper-and-pencil depictions of dependent type theory. Namely I have no good way to represent induction diagrammatically. I have to declare induction as a sort of external judgment where a universally quantified proposition over a type is inhabited by a tuple of proofs for each constructor for that type. It's a very awkward notation.
This makes me wonder if induction is a "natural" part of type theory.

Yeah, it's really just a matter of, given a bunch of rules that cover all available cases (which is a kind of "pointed" way to do things, as, in the way natural numbers are constructed here, I need to have the relevant vertices Suc/Zero in the context of a rule), I'd have to be able to conclude that I can use the "point free" version of the rule (no longer having a Suc/Zero in the context)
However, with the current feature set, that clearly can't work: There is no way to declare stuff like "these are all there are" - I could just simply add another cell at any time, which doesn't work with commutativity or associativity, which would immediately invalidate the "point free" version.
To "solve" this, I'd have to be able to say "there is only ever these two kinds of vertex, so if I prove something for each of them, I prove it in general", but I bet the fully general version of that (across any conceivable construction of cells) is really tricky.
It'd roughly have to be, that, given a fixed set of "input" cells and some "operational" cell, if all "inputs" to the operation end up with a common sub cell after the transformation, then that implies the "operational" cell can be directly transformed into this sub cell without even looking at the "inputs".
I wonder if there is a better way to phrase that. But I think that'd effectively be what induction ought to be for arbitrary combinations of cells.
Note, that it is possible to define Fix, the fixed point operator, aka the Y-combinator as found in combinator calculus (using this same sort of vertices on a wire method to do so)
You could use that for an induction principle, defining Peano Arithmetic in a combinator calculus instead. You can also define the very neat interaction combinators just fine.
Here is the Y-combinator:

And I think Fix can be used for induction, right?
But I don't think that can be used to resolve the issue of proving stuff in a "point-free" manner....


Staging environment is indexed by Google

This is no good 👎
The easiest way to fix this is adding HTTP headers to all responses from staging server:
X-Robots-Tag: noindex, nofollow, noarchive

https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag?hl=en

Agreed. If cyanfish doesn't get to it before I do, I'll do that tonight.

@lakinwecker I am just finishing pull request 😉

GReat!


UI fixes and enhancements

IMPORTANT: Where possible all PRs must be linked to a Github issue
Fixes [link to issue]

[ ] Fixes color issues
[ ] Letter spacing
[ ] Button sizes

Engineer Checklist

[ ] I have written Unit tests for any new feature(s) and edge cases for bug fixes
[ ] I have added any strings visible on UI components to the strings.xml file
[ ] I have updated the  CHANGELOG.md file for any notable changes to the codebase
[ ] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the project's style guide
[ ] I have built and run the FHIRCore app to verify my change fixes the issue and/or does not break the app
[x] I have checked that this PR does NOT introduce breaking changes that require an update to Content and/or Configs? If it does add a sample here or a link to exactly what changes need to be made to the content.

Code Reviewer Checklist

[ ] I have verified Unit tests have been written for any new feature(s) and edge cases
[ ] I have verified any strings visible on UI components are in the strings.xml file
[ ] I have verifed the CHANGELOG.md file has any notable changes to the codebase
[ ] I have verified the solution has been implemented in a configurable and generic way for reuseable components
[ ] I have built and run the FHIRCore app to verify the change fixes the issue and/or does not break the app

This PR introduces breaking changes in ButtonProperties to fix issues with Button sizes. This property existed before ButtonProperty.buttonType  but was never used. Most configs are using this instead. ButtonProperties.smallSized which is a boolean. We will now have 3 types of Buttons (default is MEDIUM). BIG, MEDIUM, and TINY. BIG button to be used in Household Register ServiceCard button, MEDIUM to be used on Individual/Household Profile, and lastly TINY to be used in other registers with actionable Buttons.


Update New-ClientAccessRule.md

I modified the page to account for the fact that it doesn’t work to specify a user with the “-UsernameMatchesAnyOfPatterns” parameter when you are denying access with the “-AnyOfProtocols UniversalOutlook” parameter.  I've tested this and worked with the PG on it, and it does not work.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/client-access/New-ClientAccessRule.md
:white_check_mark:Succeeded
View (exchange-ps)

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.


CLOUDSTACK-8814 - Refactoring the configuration of Routers and VPC routers nics

Hi there,
I refactored the configureDefaultNics() method in order to split the implementations for Routers and VPC Routers.
The following tests were executed:

test_vm_life_cycle
test_routers
test_vpc_router_nics
test_vpc_routers
test_vpc_offerings

@remibergsma @bhaisaab @koushik-das @miguelaferreira @DaanHoogland @karuturi , could you please have a look/test this PR?
Thanks in advance.
Cheers,
Wilder

Tests results:
Test advanced zone virtual router ... === TestName: test_advZoneVirtualRouter | Status : SUCCESS ===
ok
Test Deploy Virtual Machine ... === TestName: test_deploy_vm | Status : SUCCESS ===
ok
Test Multiple Deploy Virtual Machine ... === TestName: test_deploy_vm_multiple | Status : SUCCESS ===
ok
Test Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : SUCCESS ===
ok
Test Start Virtual Machine ... === TestName: test_02_start_vm | Status : SUCCESS ===
ok
Test Reboot Virtual Machine ... === TestName: test_03_reboot_vm | Status : SUCCESS ===
ok
Test destroy Virtual Machine ... === TestName: test_06_destroy_vm | Status : SUCCESS ===
ok
Test recover Virtual Machine ... === TestName: test_07_restore_vm | Status : SUCCESS ===
ok
Test migrate VM ... SKIP: At least two hosts should be present in the zone for migration
Test destroy(expunge) Virtual Machine ... === TestName: test_09_expunge_vm | Status : SUCCESS ===
ok

Ran 10 tests in 1331.675s
OK (SKIP=1)
/tmp//MarvinLogs/test_vm_life_cycle_63T0C0/results.txt (END)
Test router internal advanced zone ... === TestName: test_02_router_internal_adv | Status : SUCCESS ===
ok
Test restart network ... === TestName: test_03_restart_network_cleanup | Status : SUCCESS ===
ok
Test router basic setup ... === TestName: test_05_router_basic | Status : SUCCESS ===
ok
Test router advanced setup ... === TestName: test_06_router_advanced | Status : SUCCESS ===
ok
Test stop router ... === TestName: test_07_stop_router | Status : SUCCESS ===
ok
Test start router ... === TestName: test_08_start_router | Status : SUCCESS ===
ok
Test reboot router ... === TestName: test_09_reboot_router | Status : SUCCESS ===
ok

Ran 7 tests in 640.780s
OK
/tmp//MarvinLogs/test_routers_5RJ3RR/results.txt (END)
Create a vpc with two networks with two vms in each network ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
ok

Ran 1 test in 1239.170s
OK
/tmp//MarvinLogs/test_vpc_router_nics_XE5A1M/results.txt (END)
Test start/stop of router after addition of one guest network ... === TestName: test_01_start_stop_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test reboot of router after addition of one guest network ... === TestName: test_02_reboot_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test to change service offering of router after addition of one guest network ... === TestName: test_04_chg_srv_off_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test destroy of router after addition of one guest network ... === TestName: test_05_destroy_router_after_addition_of_one_guest_network | Status : SUCCESS ===
ok
Test to stop and start router after creation of VPC ... === TestName: test_01_stop_start_router_after_creating_vpc | Status : SUCCESS ===
ok
Test to reboot the router after creating a VPC ... === TestName: test_02_reboot_router_after_creating_vpc | Status : SUCCESS ===
ok
Tests to change service offering of the Router after ... === TestName: test_04_change_service_offerring_vpc | Status : SUCCESS ===
ok
Test to destroy the router after creating a VPC ... === TestName: test_05_destroy_router_after_creating_vpc | Status : SUCCESS ===
ok

Ran 8 tests in 1841.429s
OK
/tmp//MarvinLogs/test_vpc_routers_GVQ115/results.txt (END)
Test deploy virtual machines in VPC networks ... === TestName: test_02_deploy_vms_in_vpc_nw | Status : SUCCESS ===
ok

Ran 1 test in 298.197s
OK
/tmp//MarvinLogs/test_vpc_offerings_OCI7B5/results.txt (END)

I tested the patch, now isolated network VR is coming up and the interfaces are configured in correct order.
eth0 - guest
eth1 - link local
eth2 - public

I've tested the patch as well since I was hitting the exact same issue. All is working fine, and interfaces are configured correctly. :+1:

Other than one minor comment, LGTM

One more doubt. Why the ordering of interfaces are different in regular VR and VPC VR? Has it changed recently or was like this since the beginning? And will it cause more issues down the line when VR or VPC VR scripts are modified?

@koushik-das They have been different for a long time. I think when VPC was invented, they reordered the nics so that the tiers came last (because you can have N of them). Recently in a refactor, the order was also changed in VR. This restores it. If we want the same order, we need to look at all the scripts (cloud-early-config and friends) that use hardcoded nic names. I think this was faster to do.

My issue is also gone, so LGTM from me as well. Thanks for fixing this.

Will proceed with the merge.
Thanks, guys!