iam: AccessKey CRD connection attributes missing + strange...

What happened?

When creating AccessKey for a IAM User some credentials are missing from Connection. Only attribute.secret and attribute.ses_smtp_password_v4 are present in the secret, but I would expect to have accessKey (or username) and secretAccessKey (or password). The  attribute.secret is actually the secretAccessKey. The accessKey is missing with no replacement.
As Connection Details are not part of the contract (documentation) there is no way to tell if this is an actual bug. As there is no other way to extract real credentials (access key and secret) but with Composition, I think this is a bug.
How can we reproduce it?

Replace selector to match an existing IAM User and execute:
apiVersion: iam.aws.upbound.io/v1beta1
kind: AccessKey
metadata:
  namespace: test
  name: test-access-key
spec:
  deletionPolicy: Delete
  forProvider:
    userSelector:
      matchLabels:
        "crossplane.io/composite": simplebucket-example-jsk4w
  writeConnectionSecretToRef:
    namespace: test
    name: test-access-key

Check the created secret:
kubectl get secrets/test-access-key -n test -o yaml

data contains only the two fields:
data:
  attribute.secret: **********=
  attribute.ses_smtp_password_v4: **********=

What environment did it happen in?

Universal Crossplane Version: universal-crossplane-1.10.2-up.1

Provider Version: xpkg.upbound.io/upbound/provider-aws:v0.27.0

Kubernetes version: v1.24.8-eks-ffeb93d

Kubernetes distribution: EKS

This may not be the best, but I made XRD and use it.
# xrd.yaml

apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
  name: xaccessinfos.iam.example.com
spec:
  group: iam.example.com
  names:
    kind: XAccessinfo
    plural: xaccessinfos
  claimNames:
    kind: Accessinfo
    plural: accessinfos
  versions:
  - name: v1alpha1
    served: true
    referenceable: true
    schema:
      openAPIV3Schema:
        type: object
        properties:
          spec:
            type: object
            properties:
              namespace:
                type: string
                description: A namespace for placing resources.
              name:
                type: string
                description: |
                  Default values to use as names for each resource created.
                  An accessKey, secret, and configmap will be created, which will be {name}-access-key, {name}-access-key-secret, and {name}-access-key-id respectively.
              userRef:
                type: string
                description: The User to generate the accesskey for.
        required:
          - namepace
          - name
          - userRef

# composition.yaml

apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
  name: xaccessinfos.example.com
spec:
  compositeTypeRef:
    apiVersion: iam.example.com/v1alpha1
    kind: XAccessinfo
  resources:
  - base:
      apiVersion: iam.aws.upbound.io/v1beta1
      kind: AccessKey
      metadata:
        name: #patched
      spec:
        forProvider:
          userRef:
            name: #patched
        writeConnectionSecretToRef:
          name: #patched
          namespace: #patched
    patches:
    - type: FromCompositeFieldPath
      fromFieldPath: spec.userRef
      toFieldPath: spec.forProvider.userRef.name

    - type: FromCompositeFieldPath
      fromFieldPath: spec.name
      toFieldPath: metadata.name
      transforms:
        - type: string
          string:
            fmt: "%s-access-key"

    - type: FromCompositeFieldPath
      fromFieldPath: spec.name
      toFieldPath: spec.writeConnectionSecretToRef.name
      transforms:
        - type: string
          string:
            fmt: "%s-access-key-secret"

    - type: FromCompositeFieldPath
      fromFieldPath: spec.namespace
      toFieldPath: spec.writeConnectionSecretToRef.namespace

    - type: ToCompositeFieldPath
      fromFieldPath: status.atProvider.id
      toFieldPath: metadata.annotations[access-key-id]

  - base:
      apiVersion: kubernetes.crossplane.io/v1alpha1
      kind: Object
      metadata:
        name: #patched
      spec:
        forProvider:
          manifest:
            apiVersion: v1
            kind: ConfigMap
            metadata:
              name: #patched
              namespace: #patched
            data:
              access-key-id: #patched
        providerConfigRef:
          name: default

    patches:
    - type: FromCompositeFieldPath
      fromFieldPath: spec.name
      toFieldPath: metadata.name
      transforms:
        - type: string
          string:
            fmt: "%s-access-key-id-configmap"
    - type: FromCompositeFieldPath
      fromFieldPath: spec.name
      toFieldPath: spec.forProvider.manifest.metadata.name
      transforms:
        - type: string
          string:
            fmt: "%s-access-key-id"
    - type: FromCompositeFieldPath
      fromFieldPath: spec.namespace
      toFieldPath: spec.forProvider.manifest.metadata.namespace
    - type: FromCompositeFieldPath
      fromFieldPath: metadata.annotations[access-key-id]
      toFieldPath: spec.forProvider.manifest.data.access-key-id
      policy:
        fromFieldPath: Required

If you create these two files with kubectl apply, you can create a resource called Accessinfo. Here is an example manifests.
# example-use.yaml

apiVersion: iam.example.com/v1alpha1
kind: Accessinfo
metadata:
  name: ai-for-user
spec:
  namespace: default
  secret: iam-user
  user: iam-user

To use the above resources, you need to install the k8s-provider.
Accessinfo generate accesskey but not User. So, you also need to create User resource.
You can get access-key-id from configmap ai-for-user-access-key-id, key access-key-id.

Hi @lorand-plensys! Did you have a chance to check if solution from previous comment working for you?

Hi @mrchypark @svscheg as of time of creating an issue, I already had a workaround similar to @mrchypark solution. Although it works with a workaround, it is a bug. On the other hand I still think that the Connection Details should be a part of the documentation (contract).

The issue is relevant.
Can reproduce on the latest provider-aws:v0.31.0


Learning Guide

Hello,
I am totally new to this area.  I would be interested in the following.

High level explanation on the purpose / utility (again for non-experts)
Step by step topic guide to have 'hope' of understanding (maybe just list of expected base knowledge concepts.  ex. Compiler theory -> math -> etc. etc.)

Totally not trying to belittle, just really like to try to understand.
Thank you!

I've given a series of lectures on cubicaltt recently, the notes can be found at: https://github.com/mortberg/cubicaltt/tree/master/lectures
These notes assume a lot more than you are asking for, but as this is a very experimental research project under development I don't think we can provide such a detailed list of background topics. If you are interested in formal verification of software and mathematics I suggest you start by looking at mature systems like Coq or Agda. There are a lot of very good books and tutorials on these systems out there, for instance https://softwarefoundations.cis.upenn.edu/current/index.html.

Awesome!


Incomplete torrents get cached as a failure and not retried

Hi,
I just noticed cross-seed search for a torrent and then added into cache when file was still downloading. Because file went into cache then cross-seed never injected the torrent into qbittorrent.
cross-seed log

In cache folder

Thanks

This is a known limitation of cross-seed search and as currently designed, the app just doesn't have access to enough information to prevent that. Currently the only way to get around this is to use Daemon mode.

Hmm, on second thought we should be able to skip saving it to the cache, at the very least.

Hmm, on second thought we should be able to skip saving it to the cache, at the very least.

Yes that would be great if avoiding saving the file in a cache if its still downloading.

Ah, so taking a look at this again, I'm not sure there's a bug here. I'm assuming this was part of a run of search mode (let me know if it wasn't). If you run it again after the download has finished, does it still not get injected?

Are you using excludeOlder/excludeRecentSearch?

As of https://github.com/mmgoodnow/cross-seed/releases/tag/v2.3.6, torrents will not be considered "searched" by the excludeOlder/excludeRecentSearch flags if the download is unfinished.

Are you using excludeOlder/excludeRecentSearch?

Hi, no I am only using command: search.

If you run search mode again after the download has finished, does it get injected then?

If you run search mode again after the download has finished, does it get injected then?

I have search mode always running but previously where cross-seed cache the file because it was half downloaded still not injected. But I didn't pull the new image tho.

I'm still not sure I understand what's going on here.

Because file went into cache then cross-seed never injected the torrent into qbittorrent.

That's not really how the logic works. The file being cached doesn't have any impact on whether or not the torrent gets injected during the next run.
How often are you running cross-seed? Or are you using the daemon?

I'm still not sure I understand what's going on here.

Because file went into cache then cross-seed never injected the torrent into qbittorrent.

That's not really how the logic works. The file being cached doesn't have any impact on whether or not the torrent gets injected during the next run.
How often are you running cross-seed? Or are you using the daemon?

Hi, I'm running command: search and delay: 60 so its running all the time.

Any updates here?

Oops I should update this earlier but I opened so many issues and completely forgot to close this.
Yes this one is working awesome as you already fixed it few weeks or month ago.
Thanks again


set_payload in a nested payload

Hello.
I tried to change my points payload using Qdrant client. And I face a very non consistent behaviour driving me a bit crazy
My points payload are like:
{
   "payload":{
      "meta":{
         "group_id"<EMAIL_ADDRESS>         "title": "My Document"
      }
   }
}

So basically all my fields are in a dict named meta and I want to modify the group_id with a new value.
I used the following code:
With the following code:
for key, value in uuid_email_mapping.items():
    body = {"group_id": value}
    resp = client.set_payload(
        collection_name=COLLECTION_NAME,
        payload=body,
        key="meta",
        points=qdrant_client.models.Filter(
            must=[
                qdrant_client.models.FieldCondition(
                    key="meta.group_id",
                    match=qdrant_client.models.MatchValue(value=key),
                ),
            ],
        ),
        wait=True,
    )

It doesn't work, it put the new group id at the root like
{
   "payload":{
      "group_id": "new group id",
      "meta":{
         "group_id"<EMAIL_ADDRESS>         "title": "My Document"
      }
   }
}

With the following code:
for key, value in uuid_email_mapping.items():
    body = {"meta.group_id": value}
    resp = client.set_payload(
        collection_name=COLLECTION_NAME,
        payload=body,
        key="meta",
        points=qdrant_client.models.Filter(
            must=[
                qdrant_client.models.FieldCondition(
                    key="meta.group_id",
                    match=qdrant_client.models.MatchValue(value=key),
                ),
            ],
        ),
        wait=True,
    )

It doesn't work, it put the new group id in the meta dict but also with meta prefix, like:
{
   "payload":{
      "meta":{
         "group_id"<EMAIL_ADDRESS>         "title": "My Document",
         "meta.group_id": "new group id",
      }
   }
}

Version of cluster on Qdrant Cloud is 1.11.3
Related PR: https://github.com/qdrant/qdrant-client/pull/536#issuecomment-1994557600

    body = {'meta.group_id': value}
    resp = client.set_payload(
        collection_name=COLLECTION_NAME,
        payload=body,
        points=qdrant_client.models.Filter(
            must=[
                qdrant_client.models.FieldCondition(
                    key='meta.group_id',
                    match=qdrant_client.models.MatchValue(value=key),
                ),
            ],
        ),
        wait=True,
    )
    print(resp)

{
   "payload":{
      "meta.group_id": "new group id",
      "meta":{
         "group_id"<EMAIL_ADDRESS>         "title": "My Document",

      }
   }
}

Driving me a bit crazy

Surprisingly it seem's like it works as expected on localhost but not on qdrant cloud. Very strange ?

Which qdrant-client version are you using? :)

Which qdrant-client version are you using? :)
FYI I cannot reproduce the issue with the REST API on 0.11.x

v1.11.2
Ok maybe it's specific to the client then ? I didn't try with the pure rest API

In this code
for key, value in uuid_email_mapping.items():
    body = {"meta.group_id": value}
    resp = client.set_payload(
        collection_name=COLLECTION_NAME,
        payload=body,
        key="meta",
        points=qdrant_client.models.Filter(
            must=[
                qdrant_client.models.FieldCondition(
                    key="meta.group_id",
                    match=qdrant_client.models.MatchValue(value=key),
                ),
            ],
        ),
        wait=True,
    )

the body should be {"group_id": value} and not {"meta.group_id": value}
This is why the prefix meta is repeated :)

MY POINT BEFORE UPADTING (old group id (UUID) is in meta dict.)

MY UPDATING CODE (see the key="meta" in the code !)

MY POINT AFTER UPDATING (see the root level group_id ? that's the new value not replacing the one in "META")

I swear you will not believe me so I had to make a video out of it because it really doesn't make any sens.
Locally and in your examples everything work fine on my side.
But on my PAID QDRANT CLOUD it really behave differently.
See the screenshots above. Video avaliable for employee only if necessary because it leaks secrets (api key and URL) @agourlay @hh-space-invader

I HAVE A CLUE:
This behaviour seem's to only happens when a payload index exist on the nested key !!!

Group_id and language both has a payload index (type keyword) on them. When I try to modify them with set_paypload with key="meta" it doesn't modify them in the meta key but put a new payload field at the root of the payload.
For any other nested payload field it works fine (like embedding_model, or embedding_model_id)
I knew I wasn't crazy !

Sorry, misread the screenshot, this email is your test value.
Can you share the full Python script for reproducing the issue?

We are continuing the investigation on Discord for a faster feedback loop :curly_loop:

fixed in 1.11.5


notification policy import: only last email gets saved in tfstate

Confirmation

[X] My issue isn't already found on the issue tracker.
[X] I have replicated my issue using the latest version of the provider and it is still present.

Terraform and Cloudflare provider version
Terraform v1.2.9
on windows_386
provider registry.terraform.io/cloudflare/cloudflare v3.23.0
Affected resource(s)
terraform import cloudflare_notification_policy.<ressource_name> <account_id>/<policy_id>
cloudflare_notification_policy
Terraform configuration files
resource "cloudflare_notification_policy" "example_name" {
  account_id = "<account_id>"
  alert_type = "health_check_status_notification"
  enabled    = true
  name       = "example_name"

  description = ""
  email_integration {
    id =<EMAIL_ADDRESS>  }
  email_integration {
    id =<EMAIL_ADDRESS>  }
  filters {
    health_check_id = [<healthcheck_id>]
    status          = ["Healthy", "Unhealthy"]
  }
}

Link to debug output
https://gist.github.com/Done203/14d59eba0dd291c7936ad611d107b9cc
Panic output
No response
Expected output
taken from terraform.tfstate:
{
"version": 4,
"terraform_version": "1.2.9",
"serial": 1,
"lineage": "7171fcc1-5e00-ae83-140e-8c28c867eafb",
"outputs": {},
"resources": [
{
"mode": "managed",
"type": "cloudflare_notification_policy",
"name": "shop_COMPANY_com",
"provider": "provider["registry.terraform.io/cloudflare/cloudflare"]",
"instances": [
{
"schema_version": 0,
"attributes": {
"account_id": "<account_id>",
"alert_type": "health_check_status_notification",
"created": "2022-07-08T12:44:02Z",
"description": "",
"email_integration": [
{
"id"<EMAIL_ADDRESS>"name": ""
}
"email_integration": [
{
"id"<EMAIL_ADDRESS>"name": ""
}
],
"enabled": true,
"filters": [
{
"enabled": [],
"event_source": [],
"event_type": [],
"health_check_id": [
"<healthcheck_id_1>",
"<healthcheck_id_2>"
],
"input_id": [],
"limit": [],
"new_health": [],
"packets_per_second": [],
"pool_id": [],
"product": [],
"protocol": [],
"requests_per_second": [],
"services": [],
"slo": [],
"status": [
"Healthy",
"Unhealthy"
],
"target_host": [],
"target_zone_name": [],
"zones": []
}
],
"id": "CENSORED",
"modified": "2022-07-13T06:46:31Z",
"name": "COMPANY.com",
"pagerduty_integration": [],
"webhooks_integration": []
},
"sensitive_attributes": [],
"private": "CENSORED"
}
]
}
]
}
Actual output
...
"email_integration": [
{
"id"<EMAIL_ADDRESS>"name": ""
}
...
Steps to reproduce

Create a notification policy through the cloudflare website and give it multiple email addresses
Import the notification with terraform

Additional factoids
When looking at the debug logs, it appears that terraform correctly requests the notification policy with all details (including
the multiple email addresses), though it only saves the very last email address in the state file.
Now if my configuration file is matching the current state of the policy, terraform would still make a change since it never saved all adresses.
References
mentioned in issue #1915 (Additional factoids)

I have a potentially related problem. The provider correctly created the notification policy with multiple emails but shows a diff on every plan afterward.
Code:
locals {
  ddos_notification_types = ["dos_attack_l7"]
  notification_email_addresses =<EMAIL_ADDRESS><EMAIL_ADDRESS>}

resource "cloudflare_notification_policy" "DDoS_notification" {
  for_each = toset(local.ddos_notification_types)

  account_id  = var.cloudflare_account_id
  name        = "Policy for DDoS notification alerts"
  description = "Notification policy to alert when account is under DDoS attack"
  enabled     = true
  alert_type  = each.value

  dynamic "email_integration" {
    for_each = local.notification_email_addresses
    content {
      id = email_integration.value
    }
  }
}

If I do a terraform state show, it does list both email blocks:
resource "cloudflare_notification_policy" "DDoS_notification" {
    account_id  = (sensitive)
    alert_type  = "dos_attack_l7"
    created     = "2022-12-15T00:02:26Z"
    description = "Notification policy to alert when account is under DDoS attack"
    enabled     = true
    id          = "SOME_ID"
    modified    = "2023-01-04T18:44:58Z"
    name        = "Policy for DDoS notification alerts"

    email_integration {
        id =<EMAIL_ADDRESS>    }
    email_integration {
        id =<EMAIL_ADDRESS>    }
}

However, a terraform plan tries to re-create the resource with the first one in the list added:
  # cloudflare_notification_policy.DDoS_notification["dos_attack_l7"] will be updated in-place
  ~ resource "cloudflare_notification_policy" "DDoS_notification" {
        id          = "SOME_ID"
        name        = "Policy for DDoS notification alerts"
        # (6 unchanged attributes hidden)

      + email_integration {
          + id =<EMAIL_ADDRESS>        }
      - email_integration {
          - id =<EMAIL_ADDRESS>-> null
        }
      + email_integration {
          + id =<EMAIL_ADDRESS>        }
    }

Same issue as https://github.com/cloudflare/terraform-provider-cloudflare/issues/1917#issuecomment-1371412548 here, every time the Terraform plan will want to re-create the resource (no matter how many times we actually apply)

Seeing the same thing as well when we have multiple email_integration block.


[WIP] Faster HList Intersection

Using the following encodings:

Church encoded natural numbers such that M <= N <=> M <:< N
Sets encoded as intersection types (A with B) such that X in S <=> S <:< X
Frequency tables encoded as sets of Count[K, -N]
Linear Intersection (O(|L|+|M|) in number of implicits searches)

The examples in #793 and #706 compile in a few seconds, but more measurement is needed.

You can add MiMa exclusions for the time being ...

I did a cold one-off benchmark and ran out of patience...
it's here: https://github.com/joroKr21/compiler-benchmark/tree/shapeless-intersection
I was surprised that reversing the list didn't have a big impact in the original implementation.
But using more complex types (like FieldType) was detrimental.
Cold benchmarks, one iteration, one fork, 10 min timeout.

Generic, 9 fields, identical:
- shapeless_2.12 % 2.3.2:   93388.034 ms
- Yinduction-heuristics:    87578.091 ms
- faster-intersection:       6267.404 ms

LabelledGeneric, 9 fields, identical:
- shapeless_2.12 % 2.3.2:     timed out
- faster-intersection:      8319.167 ms

Generic, 9 fields, reversed:
- shapeless_2.12 % 2.3.2: 107118.778 ms
- Yinduction-heuristics:   84841.394 ms
- faster-intersection:      7186.696 ms

LabelledGeneric, 9 fields, reversed:
- faster-intersection:      7935.465 ms

Codecov Report

Merging #795 into master will increase coverage by 0.15%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master    #795      +/-   ##
=========================================
+ Coverage   87.95%   88.1%   +0.15%
=========================================
  Files          64      64
  Lines        1494    1497       +3
  Branches        4       2       -2
=========================================
+ Hits         1314    1319       +5
+ Misses        180     178       -2

Impacted Files
Coverage Δ

core/src/main/scala/shapeless/ops/hlists.scala
93.85% <100%> (+0.54%)
:arrow_up:

Continue to review full report at Codecov.

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

Closing this in favour of #682


fix: prevent to remove heading tag when press the enter key

Please check if the PR fulfills these requirements

[x] It's the right issue type on the title
[x] When resolving a specific issue, it's referenced in the PR's title (e.g. fix #xxx[,#xxx], where "xxx" is the issue number)
[x] The commit message follows our guidelines
[ ] Tests for the changes have been added (for bug fixes/features)
[ ] Docs have been added/updated (for bug fixes/features)
[ ] It does not introduce a breaking change or has a description of the breaking change

Description

related issue(#872)

Thank you for your contribution to TOAST UI product. 🎉 😘 ✨

[4/8] 리뷰 완료! 간단하게 처리되었네요 👍 타이틀에 이슈 번호만 추가해주시면 될 것 같습니다.
fix: prevent to remove heading tag when press the enter key (fix #872)


Allow for mutate flag in apply_patch

Add option for the apply_patch to trigger the mutate flag

Thanks for your PR. I'm a little hesitant to apply it though, the mutation mode is a little dangerous and can do unexpected things so I'm not sure if making it easier to activate is a good thing. It's always possible to instantiate the class directly if you want mutation mode.
Let me know your thoughts

I think this should be ok, since the flag is explicitly required ( and therefore the user knows what they are asking for heh )
Also, the reason we are using this lib in our application is purely to do a faux Immutable.js implementation on top of json.  Basically we want to mutate the original object instead of change the pointer.
It may be a useful use case for more than just us, since most browser based applications are moving towards an Immutable.js approach to data.

I would be happy to have an apply_patch_mutating function, does that sound ok to you?
Do keep in mind that mutate mode is a performance optimisation. You still need to use the return value as it won't always mutate its argument (specifically, when the patch replaces the root value of the document).


[Snyk] Upgrade @graphprotocol/graph-cli from 0.58.0 to 0.59.0

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade @graphprotocol/graph-cli from 0.58.0 to 0.59.0.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 8 versions ahead of your current version.
The recommended version was released 21 days ago, on 2023-10-05.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

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

Comparison is base (c20bd42) 79.18% compared to head (4b4d56f) 77.75%.

:exclamation: Current head 4b4d56f differs from pull request most recent head 836e1c6. Consider uploading reports for the commit 836e1c6 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1863      +/-   ##
==========================================
- Coverage   79.18%   77.75%   -1.43%
==========================================
  Files          27       40      +13
  Lines        2426     3039     +613
  Branches      500      610     +110
==========================================
+ Hits         1921     2363     +442
- Misses        355      487     +132
- Partials      150      189      +39

see 14 files with indirect coverage changes

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


OStrom-Integration delivers no results

Describe the bug
When I am using the new integration of ostrom dynamic prices there is nothing to see in evcc.
As seen in the evcc.yaml I followed the documentation.
I created a production client and took the clientid and clientsecret to the config.
Is it mandatory to have the dynamic prices activ to read the hourly prices from the API?
I am considering changing to it but right now the prices are always higher than the 30 cents of the static contract.
Steps to reproduce

Change the tariffs to ostrom-template as described in the documentation
When opening loading-configuration there is no hourly data
When using a custom tariff data is shown
e.g.
tariffs:
grid:
type: custom
forecast:
source: http
uri: https://api.ostrom.de/v1/spot-prices/ostrom-product-tariff?cityId=xxxx&postalCode=xxxxx
jq: '[ .day .prices ] | transpose | map({ start: ( .[0] | .date [:19] | strptime("%Y-%m-%dT%H:%M:%S") | strftime("%Y-%m-%dT%H:%M:%SZ") ), end: ( .[0] | .date [:19] | strptime("%Y-%m-%dT%H:%M:%S") | mktime + 3600 | s>
feedin:
type: fixed
price: 0.0811

Configuration details
network:
  schema: http
  host: evcc.local
  port: 7070

sponsortoken: xxx

log: debug
levels:
  cache: error

plant: xxx

interval: 30s

meters:
- type: template
  template: huawei-dongle-powersensor
  id: 1
  host: <IP_ADDRESS>
  port: 502
  usage: grid
  modbus: tcpip
  timeout: 15s
  name: grid1
- type: template
  template: huawei-dongle-powersensor
  id: 1
  host: <IP_ADDRESS>
  port: 502
  usage: pv
  modbus: tcpip
  timeout: 15s
  name: pv2

chargers:
  - name: wb1
    type: template
    template: heidelberg
    id: 1
    device: /dev/ttyUSB0
    baudrate: 19200
    comset: 8E1
    modbus: rs485serial

vehicles:
  - name: ev1
    type: template
    template: hyundai
    title: Ioniq5
    user: xxx
    password: xxx
    capacity: 58
    language: de

# doesn't work
tariffs:
  grid:
    type: template
    template: ostrom
    clientid: xxx
    clientsecret: xxx
  feedin:
    type: fixed
    price: 0.0811

# works fine!
#tariffs:
#  grid:
#    type: custom
#    forecast:
#      source: http
#      uri: https://api.ostrom.de/v1/spot-prices/ostrom-product-tariff?cityId=xxxx&postalCode=xxxxx
#      jq: '[ .day .prices ] | transpose | map({ start: ( .[0] | .date [:19] | strptime("%Y-%m-%dT%H:%M:%S") | strftime("%Y-%m-%dT%H:%M:%SZ") ), end: ( .[0] | .date [:1>#  feedin:
#    type: fixed
#    price: 0.0811

site:
  title: Home
  meters:
    grid: grid1
    pv:
    - pv2

loadpoints:
  - charger: wb1
    vehicle: ev1
    mode: pv
    enable:
      delay: 1m
      threshold: -2000
    disable:
      delay: 5m
      threshold: 2500

Log details
Nov 28 12:39:56 raspberrypi evcc[6195]: [site  ] WARN 2024/11/28 12:39:56 planner: tariff not available: cannot create tariff type 'template': cannot create tariff type 'ostrom': Get "https://production.ostrom-api.io/contracts": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

What type of operating system are you running?
Linux
Nightly build

[X] I have verified that the issue is reproducible with the latest nightly build

Version
0.131.7

Unfortunately your report is missing a detailed log file. Without log, we don‘t have the information for diagnosing the issue described. See https://docs.evcc.io/docs/faq#wie-kann-ich-ein-logfile-zur-fehleranalyse-erstellen.

Server antwortet nicht.


Linear attention

Hi Franz, I still feel that the method proposed can be classified as a variant of linear attention. To elaborate, the softmax-log function can be simplified to a form of linear normalization: $$softmax(log(X)){ij}=\frac{X_{ij}}{\sum_{j}X_{ij}}.$$ Consequently, Equation 1 aligns with the instance where $$X=exp(Q)exp(K)^T.$$
Assuming that the output of Equation 1 is 'V', we can then express it as: $$V'_i = \frac{\sum_j exp(Q_i)^Texp(K_j) V_j}{\sum_j exp(Q_i)^Texp(K_j)},$$
which is the equation 4 in [1] with φ=exp.
[1] https://arxiv.org/pdf/2006.16236.pdf

Thank you for posting your comment here! That way everyone can benefit from our discussion.

the softmax-log function can be simplified to a form of linear normalization

Ah, I see what you mean. Yes, that's correct! Applying the composition $\text{Softmax} \circ \log$ is in fact what makes this work. Once you see it, it's obvious in hindsight.
So yes, you're right: eq. (1) on my preprint is expressible as a variant of linear attention. I will update the FAQs shortly to reflect as much. Thank you again!

PS. @shaochenze , I added a link to your comment in the README. Thank you again!


Create application shortcuts didn't do anything.

Cannot create application shortcuts
Steps to reproduce the behavior:

Click to 'Menu'
Go on 'More tools --> create shortcut'
Add shortcuts (open in window)
Didn't do anything

Expected behavior
Create application shortcuts should be placed on the desktop.
Desktop:
Windows XP Professional SP3 x86

Sounds like it may have tried to use some shell interface introduced in Vista. I'll see about adding the XP equivalent.


Improve TIFF I/O of color separation images

I had been assuming that for TIFF photometric mode "separate", it would always be 4 channels and they would be CMYK. Not so!
Turns out that there's a tag called InkSet which says if it's really CMYK or not. If it's not, check the InkNames to provide channel names. Also, the auto-conversion of CMYK to RGB should only happen if it's truly CMYK, because the conversion wouldn't be correct for arbitrary inks.
On output, also, if the request is made to output color separated mode (by setting the attribute "tiff:ColorSpace" to "CMYK" or "color separated"), set those attribute as correctly as we can -- to true CMYK if it appears to be so (4 channels, named C,M,Y,K or Cyan, Magenta, Yellow, Black), but otherwise say it's custom inks and output the channel names as ink names.
Aside: It has always bothered us that TIFF doesn't support channel names (like OpenEXR does). But it does support the InkNames tag. What if we always output the channel names as InkNames, even for non-separated photometric mode. Would there be any negative consequences? Would apps ever misbehave in the presence of an InkNames tag for an RGB photometric image, or would it just be ignored?

Note: the commentary on this is largely happening on #1603

@StephanWoe, does this look good to you?

@StefanWoe, does this look ok to you?

@StefanWoe said in #1603,
I just commented out the following line:
src\tiff.imageio\tiffoutput.cpp 449:
// if (m_photometric == PHOTOMETRIC_RGB)
Then the stored channel names seem to be correct. Without that inknames in the tiff file are not set. The only single call to
TIFFSetField (m_tif, TIFFTAG_INKNAMES,
is inside that case.
Before saving i set:
spec.attribute("tiff:ColorSpace", "color separated");
wich seems correct to me?
The problem has its root maybe in Line 396:
m_photometric = (m_spec.nchannels > 1 ? PHOTOMETRIC_RGB : PHOTOMETRIC_MINISBLACK);

@StefanWoe,

I just commented out the following line:
src\tiff.imageio\tiffoutput.cpp 449:
// if (m_photometric == PHOTOMETRIC_RGB)

Why does that help? Tracing through the prior code in that function, I can see only two conditions in which m_photometric would not be PHOTOMETRIC_RGB:

If there was only one channel in the image (in which case it would be PHOTOMETRIC_MINISBLACK).

If "jpeg" compression is requested (in which case it will be PHOTOMETRIC_YCBCR)

And neither of those things will happen for the multi-ink case.
I guess it can't be harmful, either, but I don't see how it helps or changes anything at all.

@StefanWoe, can you supply a command-line (oiiotool) or short Python (or self-contained C++) example that shows (without the changes you suggest in the earlier comment) this wrong behavior occurring?
By the way, to answer your question,

Before saving i set:
spec.attribute("tiff:ColorSpace", "color separated");
which seems correct to me?

Yes, you need the color space to be "color separated" or "CMYK" in order to output the inks and set the mode to color separated. Otherwise, it will think it's just an "RGB" style image with a lot of extra channels.

Opinions, @StefanWoe?
Should I merge this?

Yes, sure!


OpenShift support

I am trying to use the ShinyProxy operator in an OpenShift cluster. I am able to get all pods running successfully and the ShinyProxy custom resources are working, however the real blocker seems to be with ingress and external access to the ShinyProxy services.
Do you have any recommendations on how to use the operator in OpenShift with the default HAProxy router?

Hi, in general the operator should just work in OpenShift. To make the ingress work, you either have to point an existing ingress controller to the Skipper service or you can configure skipper as the main ingress controller.
However, with the recent release of the ShinyProxy Operator 2.0.0, there is no longer a need for Skipper. Therefore, it should be a lot easier to deploy the operator. The operator will automatically create ingress objects, which can be handled by any Kubernetes ingress controller
Hence, I would advise to checkout this new release. We are looking forward to any feedback!


[Event Request] Page 5415 (Item Avail. by Variant Lines), Event "OnAfterSet" - add var

Hi,
we would like to suggest to add the parameter "var" to ItemVariant in this event. With this you can then use further filters depending on e.g. the item:
Before:

Suggestion:

Thanks!

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


Not all Filess Included

Not a solution but a workaround - seems related to #36
if you play with the days - for example start with 60 and then 90 - most of the time
i'll get all documents on second / third try.

Can you give more information? Which files are not included?

If you are talking about the files for the new transactions (like within the last two days), it is possible that you have not gotten a machine created Abrechnung yet and might have to wait for the Trade Republic machines actually tackle that. This happens especially with savings plans because most of the executions coincide.
If that is not the case you were mentioning please provide an example of what you expected and what actually happened

Closse since outdated


PIL file open error

Hi,
Thank you for this amazing repo. I am trying to train a model. However, I am getting below error. It seems like, issue with PIL reader.
   data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/work/PixPro/contrast/data/dataset.py", line 261, in __getitem__
    image = self.loader(path)
  File "/work/PixPro/contrast/data/dataset.py", line 219, in default_img_loader
    return pil_loader(path)
  File "/work/PixPro/contrast/data/dataset.py", line 202, in pil_loader
    return img.convert('RGB')
  File "/home/users/conda/envs/PixPro/lib/python3.7/site-packages/PIL/Image.py", line 904, in convert
    self.load()
  File "/home/users/conda/envs/PixPro/lib/python3.7/site-packages/PIL/ImageFile.py", line 228, in load
    seek(offset)
ValueError: seek of closed file

I am using dual gpu setup and I have set the parameters accordingly.
Could you please help me?
Thanks

I also met this problem

Thank you @xyl3902596 . That works. It would be great if these changes are made in main program.

Thanks


Remove requirements.txt

Keep the explicit installation of dependencies.

This looks good.

I wish the "update branch" did a rebase and not a merge, we're going to get a lot of stupid merge commits.

You can enable "squashing" for your repo. See "Settings -> Merge button". But I don't know what that does when you needed to rebase.
You can always rebase yourself. If you use a feature branch (like pip-install branch here), then simply:
git rebase origin/master
git push -f origin pip-install

That would update the pull-request. (I have no idea whether that nifty feature is available in BitBucket.)
Also, in your ~/.gitconfig,
[branch]
    autosetuprebase = remote

Then, git pull will be the same as git pull --rebase. Technically, new repos/branches will be automatically configured like this:
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true


chore: Use ubuntu-22.04 for C++ formatting check

Description
Use ubuntu-22.04 for C++ formatting check. This clang-format 14 being used and thus being more compatible with what we have on our computers.
Also directly reformat the code to match the slightly changed style.
How I Tested
Through this PR.

@vincentberenz This will upgrade the clang-format version used for the checks from 10 to 14 and thus will implicitly change our style guide to use that version (or at least a compatible one).
The only change seems to be how lambda functions are formatted (see the second commit) and I actually find the new version better in this regard (it's more consistent with the rest).
I think this should also fix the failing formatting check on your current pull request.
If you agree, I'll apply the same change on the other repos as well.

@vincentberenz This will upgrade the clang-format version used for the checks from 10 to 14 and thus will implicitly change our style guide to use that version (or at least a compatible one). The only change seems to be how lambda functions are formatted (see the second commit) and I actually find the new version better in this regard (it's more consistent with the rest). I think this should also fix the failing formatting check on your current pull request.
If you agree, I'll apply the same change on the other repos as well.

sounds good !


Disable URL fragments?

Is it possible to disable URL fragments?
URL fragments can interfere with the back button. If you went through some tabs you need the the same amount of clicks/tabs to navigate to the previous page via the browser back button. Also, not every user understands URL fragments when copying URLs from the URL bar.
I can imagine that for some sites/pages it makes a lot of sense to utilize URL fragments on others not so much.

Hi @dennisfrank
well, I have the issue for the moment that if the back button is used, the tabs are not updating themselves (I did not manage to find how setting up a "listener" for it), however the benefits are still more important than the problems, so that is why I kept them. :)
Well, this might be an option to add.
Thanks for the idea,
Nicolas

Hi @dennisfrank
the option has been added in last commits, and in the doc.
I hope you don't mind, I've mentionned your request on the plugin page https://a11y.nicolas-hoffmann.net/tabs/
Thanks for the suggestion again 👍

@nico3333fr Awesome! Thank you! :smiley:


fastly-exporter-2.1.0-linux-amd64 doesn't work in alpine

fastly-exporter-2.1.0-linux-amd64 doesn't work in alpine container.
fastly-exporter-2.0.0-linux-amd64:
➜  fastly-exporter cat Dockerfile-2.0.0
FROM alpine:3.8

RUN apk add --no-cache ca-certificates

RUN wget https://github.com/peterbourgon/fastly-exporter/releases/download/v2.0.0/fastly-exporter-2.0.0-linux-amd64 -O /fastly-exporter && chmod a+x fastly-exporter

ENTRYPOINT ["/fastly-exporter", "-endpoint", "http://<IP_ADDRESS>:8080/metrics"]
➜  fastly-exporter docker build --pull -t fastly-exporter-2.0.0 -f Dockerfile-2.0.0 .
[…]
➜  fastly-exporter docker run --rm fastly-exporter-2.0.0:latest
level=error err="-token is required"

fastly-exporter-2.1.0-linux-amd64:
➜  fastly-exporter cat Dockerfile-2.1.0
FROM alpine:3.8

RUN apk add --no-cache ca-certificates

RUN wget https://github.com/peterbourgon/fastly-exporter/releases/download/v2.1.0/fastly-exporter-2.1.0-linux-amd64 -O /fastly-exporter && chmod a+x fastly-exporter

ENTRYPOINT ["/fastly-exporter", "-endpoint", "http://<IP_ADDRESS>:8080/metrics"]
➜  fastly-exporter docker build --pull -t fastly-exporter-2.1.0 -f Dockerfile-2.1.0 .
[…]
➜  fastly-exporter docker run --rm fastly-exporter-2.1.0:latest
standard_init_linux.go:190: exec user process caused "no such file or directory"

It looks like 2.1.0 binary is not linked statically.
/ # ldd fastly-exporter-2.1.0-linux-amd64
	/lib64/ld-linux-x86-64.so.2 (0x7fa4e59f2000)
	libpthread.so.0 => /lib64/ld-linux-x86-64.so.2 (0x7fa4e59f2000)
	libc.so.6 => /lib64/ld-linux-x86-64.so.2 (0x7fa4e59f2000)
/ # ldd fastly-exporter-2.0.0-linux-amd64
ldd: fastly-exporter-2.0.0-linux-amd64: Not a valid dynamic program

Oh sure I can hack that around, it's just a different behavior between versions.

PR: https://github.com/peterbourgon/fastly-exporter/pull/23

Release updated with new release.fish binaries.
I will however still suggest you not rely on wget of release binaries to do the right thing for your containers.


@conda-forge-admin, please add user @srepmub

I'm already listed as a maintainer, but for some reason I don't have "maintainer" rights on the github site..?

[ ] I read the conda-forge documentation and could not find the solution for my problem there.

Issue:

Environment (conda list):

$ conda list

Details about  conda and system ( conda info ):

$ conda info

doesn't work as I'm already "listed"


Add operation-times resource, spec and tests

The operation-times is the resource where D.E.R. stores execution times
of every invoked operation on a service instance.
A suggestion of a better name for this resource is appreciated :)

@cjdcordeiro : After DER executes an operation on a service, it records the execution time on dataclay. This is needed for SLA. For IT-1, SLA will check that the execution time of a service operation is lower than a threshold.
It is indexed by (service_instance_id, operation). The operation is the parameter sent to COMPSs, which is something like $class.$methodname
Example:
{
  "id": URI,
  "service_instance_id": "service-instance/4517980sdfashjl423167",
  "operation": "eu.mf2c.MyFirstService.matmul",
  "datetime": "2018-04-13T10:00:00.0Z",
  "execution_time": 150.1
}

Does it make sense?

@rosogon , but, if a service instance is the execution of some executable (jar or whatever), will the DER issue multiple operation records for a single service instance?

I'm not sure I understand that workflow nor how a regular user/use case would automate the execution of an application...it looks to me that the user would need to maintain some piece of machinery/intelligence outside mf2c in order to make those requests 2-4.
Nevertheless, shall the resource then be named service-instance-operations?

You're right in that the use case have to create the service, make the appropriate calls and terminate the service.
I would not name it service-instance-operations, because I think that it could be confused with an instance that represents the possible operations a service has, and that is not the case. But probably better than the current name, so I can change it.


update dotenv to "^2.0.0"

This fixes a bug where env vars are not set when they start with
non alpha-numeric characters like "" or "$"

Thanks for the PR!


When I try dub build, I get a gigantic error spew

When I cloned this repo and ran dub build in the source directory, I got this:
Fetching libdparse ~master (getting selected version)...
Placing libdparse ~master to /home/koz/.dub/packages/...
WARNING: A deprecated branch based version specification is used for the dependency libdparse. Please use numbered versions instead. Also note that you can still use the dub.selections.json file to override a certain dependency to use a branch instead.
Building libdparse ~master configuration "library", build type debug.
Running gdc...
../.dub/packages/libdparse-master/src/std/d/lexer.d:176: error: user defined attributes cannot appear as postfixes
../.dub/packages/libdparse-master/src/std/d/lexer.d:177: error: semicolon expected following function declaration
../.dub/packages/libdparse-master/src/std/d/lexer.d:177: error: Declaration expected, not 'switch'
../.dub/packages/libdparse-master/src/std/d/lexer.d:204: error: Declaration expected, not 'default'
../.dub/packages/libdparse-master/src/std/d/lexer.d:206: error: unrecognized declaration
../.dub/packages/libdparse-master/src/std/lexer.d:252: error: user defined attributes must be first
../.dub/packages/libdparse-master/src/std/lexer.d:642: error: user defined attributes cannot appear as postfixes
../.dub/packages/libdparse-master/src/std/lexer.d:643: error: semicolon expected following function declaration
../.dub/packages/libdparse-master/src/std/lexer.d:643: error: Declaration expected, not 'return'
../.dub/packages/libdparse-master/src/std/lexer.d:703: error: unrecognized declaration
FAIL ../.dub/packages/libdparse-master/.dub/build/library-debug-linux.posix-x86_64-gdc_2065-35D30CE4E576C2596C21ECA81CC8317E/ libdparse staticLibrary
Error executing command build:
gdc failed with exit code 1.

Am I missing something obvious here?

The compiler you're using doesn't support 2.066 syntax. (The current release is 2.067)

There is nothing to do on the dfmt side. :disappointed: Close?

Given that 2.068 is in the RC phase, yes. I don't want to have to support compilers that are as old as 2.065.


Respect NO_COLOR

I do use an "*ix shell" (namely, rc), but as I hate a shell that looks like an unicorn had puked all over it, I usually use NO_COLOR to get rid of that. zpaqfranz - now that it supports colors - should respect that.

Sadly, there is
But only for... Windows 😄
#ifdef _WIN32
	char *no_color=getenv("NO_COLOR");
	if ((no_color!=NULL) && (no_color[0]!='\0'))
		flagnocolor=true;

I'll fix
PS what do you think of the new list format? Do you like it?

Nobody uses NO_COLOR on Windows! ;-)
Ah, my personal taste is not relevant, I guess.

Nobody uses NO_COLOR on Windows! ;-)
Ah, my personal taste is not relevant, I guess.

Why not? Kaizen matters

Sure, but it’s your tool, not mine. I - personally - wouldn’t even have added dir.


Run SonarCloud only on pull requests to master

Run SonarCloud less often to reduce build times for normal CI builds.

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


[feature] IsDeployed

Is your feature request related to a problem? Please describe.
The GUAC ontology represents a graph of software artifacts, actors, and actions taken by actors. One of the most important actions that an actor can perform on a software artifact is deploying it to a production environment. Software artifacts running in production are exposed to users, either directly or indirectly, and thus vulnerable to attacks by malicious actors. When a vulnerability is present or detected in a software artifact running in production, software operators need to know the location of the vulnerable artifact, so they can either mitigate the risk or attest that the artifact is not actually vulnerable.
Consider an organization that uses Kubernetes clusters to deploy container artifacts. The organization has many teams that manage their own clusters, increasing the attack surface. Suppose a new critical vulnerability affects many of the running container images. The organization can use GUAC to query collected SBOMs and identify the affected images and registries. However, they cannot query which images are running on which clusters. A monitoring system based on GUAC may report false positives, as not all vulnerable images are in use. If GUAC could show the cluster location of the images (e.g., Deployment or DaemonSet), the teams could mitigate the vulnerability more effectively.
Describe the solution you'd like
IsDeployed is a new node that can have edges to Package nodes to denote when a particular package has been deployed. Generally, only top level packages with types such as oci or swid will have edges to IsDeployed.
Here's what the GraphQL schema might look like:
type IsDeployed {
  id: ID!
  "Package that is deployed"
  package: Package!
  "Timestamp when the package was deployed and became active"
  deployedSince: Time!
  "Timestamp when the package was no longer deployed and became inactive"
  deployedUntil: Time
  "List of deployment metadata"
  deploymentMetadata: [DeploymentMetadata!]!
  "Document from which this attestation is generated from"
  origin: String!
  "GUAC collector for the document"
  collector: String!
}

type DeploymentMetadata {
  id: ID!
  timestamp: Time
  key: String!
  value: String!
  origin: String
  collector: String
}

The associated Query and Mutation is not proposed here but would follow similar patterns to the rest of the schema.
This proposal centers on two key timestamps: deployedSince (required) for when a package becomes active, and deployedUntil (optional) for when it's no longer active. An unpopulated deployedUntil implies ongoing activity. IsDeployed will also feature a DeploymentMetadata list for detailed deployment descriptions, allowing users to tailor metadata to their specific deployment environments.
One proposal for how to collect this data would be to receive cdevents from the deployment system that are pushed to a collector via NATS. Another proposal for Kubernetes is to create an admission webhook that can send events about when a deployment occurred. The collection side will have many different options and will ultimately depend on the deployment target for the package.
A major consideration for this proposal is how to effectively prevent data growth. As deployments happen frequently in many organizations, the IsDeployed nodes will grow indefinitely. There should be a mechanism for pruning stale data or archiving data for future use. While this data growth issue exists for GUAC broadly, it will be particularly problematic for in this case. Please feel free to provide feedback on how this can be addressed.
Describe alternatives you've considered
An alternative is to simply not include this in GUAC. Packages that are actively deployed could be tracked by another system altogether. If such a system existed, GUAC can be used to join package and vulnerability data with this system to determine if a user needs to take action on their environments. However, this joining could also be expensive and prone to failure. Since GUAC's charter is to create a graph of the entire software supply chain, including data about where a package is deployed seems fitting and necessary to make actionable decisions.
Additional context
This is still not a comprehensive proposal so any feedback is welcome! If there is positive feedback about this proposal, a separate document can be written to delve into this more in depth.

I like this idea! It might be good to collect/consume this info from KBOM (and/or pluggable other sources) instead of querying cluster(s) directly. An operator running in cluster(s) (like trivy-operator) can produce these results and guac can consume them.

Nice writeup! I've always wondered how this fits into guac / how people are solving this

Thanks for the ping @sozercan . While I think the gist of your comment makes sense, I just need to mention that Trivy KBOM does not include information about workloads, but rather information about the Kubernetes Cluster.

We had a quick discussion about this with @ridhoq during the community meeting. Overall, this is a great feature that would add value. There are a few points that need discussion:

Should we store this information in GUAC or would it be better as an integration due to the dynamic nature of the data?
If stored in GUAC, how often would it need to be updated? As Ridwan stated, it would cause lots of data build-up and would require pruning.
What is the most effective way to obtain this information?
As discussed in the call, this would need to be in the form of an "attestation" (preferably an in-toto attestation). This could be signed and verified later down the line to ensure the trustworthiness of the data.

@ridhoq and I have been discussing this offline. Our view is that we would like to have one single place where we can store all information related to the supply chain (of containers), not only the composition. The reason being if that information is stored in two (or more) separate systems, joining the information becomes more problematic.
We do see the supply chain as a graph (that we would like to search bi-directionally) that starts from acquisition of the base container images and any external packages and ends with deployment and eventually termination of the running container on the runtime nodes.
Two main scenarios we are targeting at the moment are:

Inventory/impact assessment scenario
In this scenario, we would like to identify all assets that are impacted by a certain vulnerability and what is the relation between them (including deployed/running assets), i.e. what is the flow through the supply chain
Remediation sequence scenario
In this scenario, we would like to understand what are the steps for remediating vulnerability that is discovered at runtime (or any other stage of the supply chain). This should answer questions like, what base image needs to be updated, what library needs to be updated, what applications/containers need to be redeployed, etc.

Hope this helps steer the conversation further.

New attestation being developed: https://github.com/in-toto/attestation/pull/341
Will need to determine if this fits into this discussion or not.

Could https://github.com/kubescape/kubescape be used here to get the information?

supports generation of SBOM and VEX from running containers.


Adapt ProtocolParameters - Python

https://github.com/iotaledger/tips-draft/pull/25

Closed by https://github.com/iotaledger/iota-sdk/pull/1276


Make install.ps1 cross-platform.

Hi @Summpot, thanks for your PR!
Unfortunately, I think it's a bit over-ambitious in scope:
1 - You switched from parsing the releases page to using the GitHub API for determining the latest version. That is not an option since the GitHub API is rate-limited, and users providing an API token is not an acceptable requirement for the installer.
2 - You also made the PowerShell installer cross-patform. This is actually something that we did previously (see https://github.com/denoland/deno_install/pull/25/), but that was removed since PowerShell Core is not a widely-used shell on Unix systems. The recommendation is Shell on Unix, PowerShell on Windows.
There is an open PR for making the Shell installer cross-platform: https://github.com/denoland/deno_install/pull/148 However, there's also the argument that we should not specifically support Shell on Windows since the Windows Subsystem for Linux is common now.
Personally, I'm not sure whether we should or should not make the installers cross-platform.
cc @ry - Any thoughts?

Reason? Because powershell supports cross-platform, and this script has no obvious label that it cannot cross-platform (I planned to use this script on linux at the beginning).
As for the rate limit of the Github API,
I think that normal users are unlikely to trigger this limit.

As for the rate limit of the Github API, I think that normal users are unlikely to trigger this limit.

Normal users are very likely to trigger the limit. I have personally triggered the limit from both a company and a university network. Normal users also use CI services where shared servers are used that you have no control over. The CI of this repo has previously hit this rate limit in CI, before we moved to parsing the release page. Again, this is not an option.

this script has no obvious label that it cannot cross-platform

This script is advertised on the https://deno.land homepage where it is very clearly labelled as Windows only: PowerShell (Windows) (or Shell (Mac, Linux) ).

Reason?

Mostly maintenance and complexity.
Let me ask the other way around: Does your Linux distribution not come with some sort of POSIX shell out-of-the-box that you can use to install Deno? Why do you insist on using PowerShell on Linux?
Again, I have previously made the PowerShell installer cross-platform. I think it's a good idea in general. But all code comes with costs. This is something that needs to be carefully considered.


SemVer 2 update places releases in an unexpected order

Release 1.1.0-beta.47 is listed as "older" than 1.1.0-beta009, but was intended to be newer. Without giving up the benefits of SemVer 2 and the new StyleCop.Analyzers.Unstable package, I see three ways this could be fixed:

Switch to 1.1.1-beta.x
Switch to 1.1.x-beta
Switch to 1.2.0-beta.x

Do people have a preference?

💭 I'm initially leaning towards option 3, 1.2.0-beta.x

To stay (somewhat) in line with semver numbering: As there has been no new functionality added, it would make sense to bump it to 1.1.1-beta.x

@vweijsters A fourth option would be to unlist (hide) the earlier 1.1.0 beta releases in the NuGet UI, so the new packages are the first 1.1.0 packages showing in the list.

That's fine with me as well, but I still prefer the 1.1.1-beta.x, as unlisting the packages may result in additional questions.


evaluation session

closes #6

I've queued for merging as I think it's good as is but point stands about multiple models and the course flow

This looks good but I wonder if it's enough to just have the random walk model here? In the ensemble session we pull in the other models without introduction and I had thought we would do that here.

I've added a bit of introduction in #11 (where the different models are also compared), both in the lecture and session. I didn't think there was time to do more and explain all the models etc. given that we're not using stan or showing any model code.

We could keep the r code simulation as extensions?


Glossaries for translation ?

Each translation can be difficult and each language does not always have the same word for each concept used by astro
Glossary is like a white paper where translators refer to their approach in their language and ease the continuity between pages and sentence for a better understanding of the user
This issue is here to discuss how we can address this use case and make it available for each translation to have tools they need for the job
My first suggestion was to add a file named glossary.ts with defined terms and can be used for an auto-generated "glossary" page and components for defining abbreviations (with the <abbr> tag) and other words. But it can be tricky to do things the right way and contain issues with the approach.
The other idea was to create a simple glossary.md page but it can be tricky at a larger scale to maintain and keep track of.
Comment with your ideas if you think of another approach with this (like the use of GitHub's wiki, used for example by the french translation team from react docs)

Hi @Chrissdroid — great idea! Is this mainly intended as a glossary for translators to refer to or a public-facing glossary for Astro users?

I was thinking about translator-only at first glance, but it can technically be also useful for users if we include clear descriptions for each term

For translators I’d suggest adding a Markdown file in your language’s i18n folder, e.g. src/i18n/fr/glossary.md. A .ts file will likely be quite inflexible and we’d need the added wrangling of generating a page from it. With a Markdown file, each team can do what they want, add more or less and different kinds of comments.

I was thinking about translator-only at first glance, but it can technically be also useful for users if we include clear descriptions for each term
But if the docs are well written, we dont technically need this for users
It's more like a chart for translators to refer to and know what words can translate to

Alternatively we could look at keeping this elsewhere so you can update and modify it more easily without needing to go through the PR process each time, but having it in the repo does help to keep things centralised.

I don't think making a PR when it changes is a problem in the long term, at the start, yes, because it needs to be adjusted first but then it won't normally change that much after that (except when a major release have a new concept to introduce)

You might wish to START with a shared Google Doc (e.g.) to at least get quick, easy collaboration on an initial version.
I'm thinking of our poor PRs that only @delucis & I (mostly) will approve!
It's a lot of bureaucracy and "process" for that initial task!

@sarah11918 totally agree with that !
For the first iterations, this'll hopefully be done by each group on their side before coming with something (at least for the i18n-fr we'll discuss with everyone to agree on something that'll be good for everyone involved) and then PR'it when we're happy with the results


Recent changes in archive format made it's paths absolute

I noted that download page has changed recently and my CI process for build docs now is broken because new zip archive contains absolute pathnames:
% /usr/bin/unzip -l /tmp/theme/highlight-archive.zip | head
Archive:  /tmp/theme/highlight-archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    38854  2023-08-04 21:16   /DIGESTS.md
     1514  2023-08-04 21:16   /LICENSE
     1717  2023-08-04 21:16   /README.md
        0  2023-08-04 21:16   /es/
    76121  2023-08-04 21:16   /es/core.js
    20322  2023-08-04 21:16   /es/core.min.js
    76121  2023-08-04 21:16   /es/highlight.js

Because of that, unzip (at least on Ubuntu) returns 1 exit code:
% /usr/bin/unzip -o /tmp/theme/highlight-archive.zip -d unpacked
...
warning:  stripped absolute path spec from /languages/markdown.min.js
 extracting: unpacked/languages/markdown.min.js
warning:  stripped absolute path spec from /languages/xml.min.js
 extracting: unpacked/languages/xml.min.js
warning:  stripped absolute path spec from /languages/yaml.min.js
 extracting: unpacked/languages/yaml.min.js

% echo $?
1

Expected behavior
Archive contains relative filenames and can be unpacked without warnings and with exit code 0.

New website behavior?

Fixed in 23da75b. Thank you for the report!


APPS-782: provide option to disable compile-time instance type evaluation

add -instanceTypeSelection and -defaultInstanceType options
do not evaluate instance types or store instance type db in applet metadata when -instanceTypeSelection is set to dynamic

This PR already has the change to use rank-based selection


X-Client-Info header

we're rolling out a header similar to Stripe's App-Data in all of the client libs so issues can be debugged more easily between the client and the backend
the javascript libs are done already: https://github.com/supabase/supabase-js/pull/238
the format is: X-Client-Info: supabase-js/1.11.0
for client libs that wrap others (like how supabase-js wraps gotrue-js) we allow the wrapper lib to overwrite the wrapped lib's header (given that we can infer the gotrue-js version based on which supabase-js was used to make the call)
any help with rolling this out here would be incredible

May this issue be closed already?


Adding possibility for TOTP using Google Authenticator

For our own environment I added 2FA login using TOTP and the Google Authenticator.
Hope you like this addition.

Can you please provide screenshots of the flow to see what it looks like.

Following are screenshots with totp disabled:

Following are screenshots with totp enabled:

I squashed the commits and fixed last comments.

Any way to get this merged? Very nice feature to add.

A new fresh pull request will be created


Error while compiling

Hey Armin, this is probably just a usage error but I was wondering if you knew what's causing this error?
I've installed node.js and installed node-sass globally, but with this code:
// out: main.css, compress: true
I'm seeing this:
"error while compiling.
"Error: command failed: /bin/sh: node-sass: command not found"
Does this mean I haven't installed node-sass properly?
When I try from the terminal I'm seeing:
"Provide a Sass file to render
Example
node-sass --output-style compressed foobar.scss foobar.css
cat foobar.scss | node-sass --output-style compressed > foobar.css
"
Any thoughts? Thanks :)

Well, perhaps the execution call in my code only works on Windows systems. I have to test it on a Linux OS. I will answer your comment soon!

What OS do you use? Linux or a Mac OS?
I installed Linux Mint (64-bit) and tried the plugin. Everthing worked fine after installing npm and node-sass (global installation with parameter -g).
Please help me to find the difference?! :)

Hey Armin, sorry I didn't see the notification for this! Thanks for replying.
I'm using a Mac OS. I got the the compile working in terminal with 'node-sass main.scss style.css', so node-sass is definitely installed properly. Auto-compile is throwing the same error. Any known bugs with Mac OS? :)

Here a simple, but not satisfying solution for your problem: Try to start atom from terminal by changing to corresponding directory and enter atomcommand.
When you are interessted in this problem, have a look at this thread.
I'm working on a solution.

Please try newest version 0.6.0. and tell me if it helps you?!
I implemented a small fix for Mac OS. This fix adds path /usr/local/bin to $PATH variable if not already there, so shell can find node-sass command. Modified path is restored after calling node-sass command.

Hey I installed the 0.6.0 version, still getting same error. "bin/sh: node-sass: command not found"

Hm... Can you answer me following questions:

Which version of Mac OS do you use?
How do you start Atom? Via Dock? Via terminal?
Can you please check path /usr/local/bin. Is there an executable called node-sass?

OS X Yosemite 10.10.2
I open Atom via the application / dock
yep, node-sass is there.

Thanks for your information! It's a lil bit strange that I cannot reproduce your problem...
Now I replaced my first fix attempt with an "absolute path" fix. On Mac OS platforms node-sass is executed via absolute path. Therefore I added a new option to sass-autocompile so users can edit it -- the default value is /usr/local/bin.
Please try version 0.6.1 and tell me if it works now!? Thanks :)

It worked! :+1:
Thanks for your help, this will save me so much time.  :)

Great to hear! :)
But I do not understand why my first solution did not work...

It was probably me messing something up... :monkey:

Hm, I don't think so. But I cannot find the the right answer why I has not worked... The problem was that the shell, used by Dock, does not look in /usr/local/bin for commands, so my first fix added this path to the $PATH variable. After calling node-sass command this path has been removed from $PATH. So node-sass should be actually found!
But hey... It's working now ;) And it's a simpler and bit more flexible fix!

Lol sorry I mean 'I was messing up...'!

Hey Armin,
unfortunately I get the same error in version 0.6.3 on OS X Yosemite 10.10.3.
Maybe you can help me, too!?
Thanks!

Yes, I think we can get it work for you! ;)

Is node-sass command working in terminal? If not, you have to install node.js and then node-sass (via terminal: npm install node-sass -g).
Can you check where node-sass executable is placed? Probably not in /usr/local/bin? You can use which node-sass command in terminal to check the path! If path is not /usr/local/bin, put the visible path to the option Path to node-sass-command. (it's the last option)

Did this help you?

Thanks for your reply!
The node-sass command is working in terminal.
The node-sass executable is placed in /usr/local/bin. The node-sass file in /usr/local/bin linked to /usr/local/lib/node_modules/node-sass/bin so I tried this path as path to node-sass, but didn't work either. :(
Do you have any further suggestions?

Well... I'm a lil bit helpless :-/
The only thing, I could imagine, is that if process.platform is "darwin" is false on your system. But I don't know why this should be the case. Because else the given path (or its default value) and node-sass command ist combined to an absolute path e.g. /usr/local/bin/node-sass and this executable exists on your system.
Can you open the Developer Tools (View → Developer → Toggle Developer Tools) and run process.platform in Console? What string is printed there then?

process.platform is "darwin"

Okay... Then I have no idea what's wrong then!? Perhaps the execution string is wrong... But it's only a guess. Can you try to create a SCSS file at a path with no spaces and so special chars? Does it compile? Do you have any special characters in your working directory?
Another thing you can try is to output the execString variable in sass-autocompile-view.coffee. Therefore open this file /Users/<username>/.atom/packages/sass-autocompile/lib/sass-autocompile-view.coffee and modified line 172 from:
execString = @buildExecString params

to:
execString = @buildExecString params
console.log execString

After that reload Atom (View → Reload), so the changes are applied, open Developer Tools, go to Console and try to compile a SCSS file. Then you see the content of execString. Please post it!

I made sure that there are no spaces or special characters in the path.
execString is /usr/local/bin/node-sass --output-style nested "path-to-scss-file" "path-to-css-file"

Now I'm completely out of ideas... :( Do you have the latest node.js version and latest Atom version installed? Can there any problem with 32 and 64 bit processes?
The only thing I can offer is to debug my package direct on your Mac, when you allow. For this contact me via<EMAIL_ADDRESS>

I have the latest versions of both Node.js and Atom.
Debugging on my Mac would be great, thank you! I'll contact you... :)

So... We solved the problem now! It was a corrupt node-sass installation. Everything is fine with sass-autocompile ;)

Finally after Armin spent a lot of time with my Mac (thank you for that :)) he found the problem.
For everybody who has the same issue on its Mac, just start Atom via terminal instead of the icon in the dock and it will work fine.

I have the same problem.
From Atom runned by terminal everything works fine, but i want to run it from dock (opening terminal every time when I want run Atom little not comfortable).

Hey!
I do not exactly know what I have done at that time. I think, I removed node-sass via npm uninstall node-sass -g and reinstalled it via npm install node-sass -g -- it's important to use the -g parameter so node-sass command is callable via shell. After that everything worked.
Perhaps you can try to compile a SCSS file via shell and see if that works? E.g. node-sass input.scss ouput.css

I restarted my mac, and everything is working now. Magic? Maybe...
But solution was simple :) Thank you, plugin is perfect.

Well... That sounds great ;) Would be really interessting what the problem was...
Thanks!

Same error here on Ubuntu.
Error: Command failed: /bin/sh -c node-sass …

Now, I have already tried to use the (let’s just call it) “Mac trick” by going to the settings page and configuring the path /home/tec/npm/bin/ but this doesn’t fix it.
Error: Command failed: /bin/sh -c node-sass …

This raises a question: I know it says "Mac Only", but does that practically mean you are actually filtering this setting, only reading it when detecting "Darwin", aka a Mac OS? If, you should probably get rid of that selectiveness as it might offer an option to fix things on Ubuntu too.
As for what works: starting atom from the shell. Assuming paths et al are correctly parsed, this indicates some sort of "rights" problem… especially since my Ubuntu hits the exact same wall as a Mac.

Just checked your code, and my gut feeling obviously was correct. You should at least to kill or modify your darwin filtering.
I changed sass-autocompile-view.coffee by commenting out line 228 and addapting the indents accordingly to read the node-sass path from the settings and that fixed things alltogether.
More specific, a simple change from
    # If it's Mac OS we have to add macOsNodeSassPath to command and to environment variable
    # PATH so shell AND node.js can find node-sass command
    if process.platform is "darwin"
            path = require('path')
            command =<EMAIL_ADDRESS>command)
            environment.PATH +=<EMAIL_ADDRESS>
to
    # If it's Mac OS we have to add macOsNodeSassPath to command and to environment variable
    # PATH so shell AND node.js can find node-sass command
    # if process.platform is "darwin"
    path = require('path')
    command =<EMAIL_ADDRESS>command)
    environment.PATH +=<EMAIL_ADDRESS>
and – of course – having set a path in the according settings box, lets me start atom without tthat "start from terminal" fix.
The result produces a nice…
    Rendering Complete, saving .css file...
    Wrote Source Map to /home/tec/GithubAtom/main.css.map
    Wrote CSS to /home/tec/GithubAtom/main.css

Bingo!
In the unlikely case you really think you need to filter out that setting per operating system, at least add the following to the list (devtools output):
    process.platform
    "linux"

Had a bit of time on my side, so I wrapped up an according pull request: https://github.com/armin-pfaeffle/sass-autocompile/pull/20

Hey!
Thanks for your report! Will be fixed in next version. I think I will publish it today or at the beginning of next week.

Hey! I published a the version 0.10.0 right now. Please check the renamed option Path to 'node-sass' command. This should work on every system now.
Thanks for your pull request, but I modified a lot of things, why I had no use for that.

Having the same issue. I'm a 5k iMac with a fresh install of 10.11 (El Capitan).
Installed homebrew and node.js without a problem and installed atom and this plugin per your instructions.
When trying to save a .scss file it says, "/bin/sh: node-sass: command not found".
Node-sass appears to have been installed to "/usr/local/bin/node-sass" when using your instructions on GitHub. Should it be somewhere else, or is there a setting to change to get it to work at that location?

I had the same problem. With the @ChrisChiera solution, Atom had to run from the terminal to compile. I added the path to my init.cofee file (Init Script) and now, Atom works well when I starting it from the icon!
process.env.PATH = ["/bin",
                    "usr/bin",
                    "usr/local/bin",
                    "usr/local/bin/node_modules/node-sass/bin",
                    ].join(":")

Thanks!


SPIR-V -> HLSL : cross compiling bindings overlap

Simple reproducer:
#version 460

layout (location = 0) out vec4 fragColor;

layout(binding = 0, std430) readonly buffer A { vec4 a[]; };
layout(binding = 0, std430) readonly buffer B { uint b[]; };

void main()
{
	fragColor = vec4(0.4, 0.4, 0.8, 1.0);
}

Been cross-compiled to HLSL as:
// error: resource _22 at register 0 overlaps with resource _17 at register 0, space 0
ByteAddressBuffer _17 : register(t0);
ByteAddressBuffer _22 : register(t0);
...

Seemingly there is 'simple' solution for SSBO - to use only a single binding. However, I don't know, if there is a solution for textures.
Any opinions on should this be implemented in any way or not? Thanks!

Would need similar hacks as MSL where multiple OpVariables alias the same binding. This breaks down if different qualifiers like globallycoherent are applied though.
Textures won't work here. Need to stamp out different space variables that application root signature must resolve. Descriptor aliasing really isn't feasible with HLSL.

Would need similar hacks as MSL where multiple OpVariables alias the same binding

I've checked MSL codegen and it doesn't look quite right:
https://shader-playground.timjones.io/b4739d6b673576df6b38fb0ad49bc48c
In generated shader there is an issue: buffer now consumes multiple bind-points, what is a problem for engine (and also defeat the purpose of feature).
In my end, engine exposes maxBuffers/maxTextures so consuming extra bind-point will break abstraction.
Proposed change (buffers only):
HLSL merge qualifiers:
readonly + writeonly = RWByteAddressBuffer
if any of overlapped buffers is coherent, then globallycoherent will be used on merged binding.
Overlap of multiple uniform buffers, can be compiled as:
cbuffer M : register(b0)
{
    uint _data_16_26[MAX_OF_SIZES/4];
};

static const A _16 = (A)_data_16_26; // need to be careful about structure declaration, assuming tight packing here
static const B _26 = (B)_data_16_26;

MSL use reinterpret_cast:
fragment main0_out main0(device A& _14 [[buffer (0)]])
{
    const    device B& _15 = reinterpret_cast<const device B&>(_14);
    volatile device C& _16 = reinterpret_cast<volatile device C&>(_14);
             device D& _17 = reinterpret_cast<device D&>(_14);

It' possible to use const_cast as well, if needed.
Uniform/Storage overlap is more tricky as shader is not allowed to cast from device to constant and vise-versa. Probably it's OK to promote constant to device on shader side, effectively turning uniform buffer into readonly storage buffer.


How to change color of value above the bar

Dear All,
Do you have any ideas how to change color for the value above the bar?

As you can can see, value '563', '531', etc still in default color. Do you have any ideas how to change the color?
Thanks!

The labels above your bars are not a supported feature of Chart.js yet, so unfortunately we won't be able to offer any advice.  When we can support this natively (hopefully very soon with 2.0), you will easily be able to change the color. Closing for now.


freebsd: include libkvm in build image

Cross builds targeting FreeBSD currently fail for projects depending on version 0.2.105+ of the libc crate due to a new dependency on libkvm, introduced here: https://github.com/rust-lang/libc/commit/9ab890d42b8435517369320ae6a259386049917a#diff-75cac48df6376b0d5783bc764c591d1a896a92429653beda3f0b3e93aa8c339fR290
The compilation error looks like:
error: linking with `x86_64-unknown-freebsd12-gcc` failed: exit status: 1
...
  = note: /usr/local/lib/gcc/x86_64-unknown-freebsd12/6.4.0/../../../../x86_64-unknown-freebsd12/bin/ld: cannot find -lkvm
          collect2: error: ld returned 1 exit status

This PR adds the static and shared libkvm binaries to the build image to resolve this issue.

The build error was a certificate issue with curl
+ curl --retry 3 -sSfL https://ftp.gnu.org/gnu/binutils/binutils-2.32.tar.gz -O
curl: (60) server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

I just tried to build this locally and it worked. Perhaps it was a fluke?

Perhaps it was a fluke?

I agree, lets try again
bors retry
note that this wont get published rn, see #609

Is it worth trying this again? The failures do still look unrelated to the changes here. I was also able to build locally.

@Emilgardis can we please get this merged? This is currently entirely broken without this change.

@Emilgardis can we please get this merged? This is currently entirely broken without this change.

Yes, this is to be included, however CI is completely broken right now, see #609
If you need this right now, you can use your own images.
See https://github.com/rust-embedded/cross#custom-docker-images
Sorry for the non-satisfactory workaround for this specific issue. You'd probably need to download the base.txz freebsd again.

included in #609


[FLINK-17352][docs] Fix doc links using site.baseurl w/ link tag

What is the purpose of the change
There are 100+ broken links in the docs, due to misuse of the {% link %} liquid tag. This tag includes site.baseurl automatically, so specifying
{{ site.baseurl }}{% link foo.md %} includes the baseurl twice. Since the baseurl in development is empty, it's easy to make a mess without realizing it.
Brief change log
Removed site.baseurl everywhere it could be found in combination with the link tag.

@alpinegizmo I found a number of broken links still within the docs.
http://localhost:4000/concepts/stream-processing.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/concepts/programming-model.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/concepts/runtime.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/internals/stream_checkpointing.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/concepts/flink-architecture.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/dev/best_practices.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/ops/memory/config.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/concepts/programming-model.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/concepts/runtime.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/dev/dev/table/python/installation.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/fig/times_clocks.svg:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/internals/stream_checkpointing.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/dev/table/sql.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/zh/ops/memory/config.html:
Remote file does not exist -- broken link!!!
--
http://localhost:4000/s3.zh.mdops/deployment/hadoop.html:
Remote file does not exist -- broken link!!!

I fixed what I could, many of the links are on pages that have already been translated. I've opened a follow up ticket.
https://issues.apache.org/jira/browse/FLINK-17353


Feature - Behaviours, Hooks and Components

Removed hof-controlers
Bumped hof-form-wizard to 3.0.0
Bumped hof-template-mixins to 3.1.0
Removed default controller
Tweaked tests to use behaviours rather than custom controllers
Added hof-component-date and hof-behaviour-confirm-page to example app
Added date component example to example app
Shaved many a yak

@lennym would like your 👌 when you get time


#137 fix

Chang List:

tests were updated to Selenium v2.52.0

fix of #137. Page object tools were updated. By.Name locator strategy is deprecated for Android and iOS. It is still valid for the Selendroid mode.

#136


Expose compareItem, compareEntity and checkNumber

These were previously marked as operators, but unfortunately it is not possible for us to always compile the correct comparison.
Given the following example:
export function f(p1: Value, p2: Value) {
  if (p1 == p2) {
    notify("Equals!");
  }
}

It is impossible to know whether the user meant compareItem, compareEntity or checkNumber (with ==).
One approach, which I've seen traces of in the code, might be to add virtual properties on Value that allows the user to indicate whether they want to interpret it as an item, entity or number.
But as a user, I would prefer to be able to simply write
if (compareItem(p1, p2)) {
  // ...
}

which matches what I'm used to from the game, and clearly shows my intent.
This also allows me to write:
switch (checkNumber(p1, p2)) {
  case ">=":
  case "=":
    notify("Hello World");
    break;
}

While only invoking checkNumber once. It would be nice to be able to write:
if (p1 >= p2 || p1 == p2) {
  notify("Hello World");
}

But this requires more work with the compiler, and is still ambiguous since the user could have meant:
(compareNumber(p1, p2) == ">=" || compareItem(p1, p2))

The implementation of the == operator can be kept, and perhaps still improved, but I'd like to also be able to use these instructions as-is.

My initial thought was we could use '==' and '===' to decide, but that only works for 2 comparison types and it seems like there's actually 3.


Lift @agoric/assert

The @agoric/assert package is currently published from the agoric-sdk repository. As we would like to take a dependency upon assert in ses, and use it to carry more complete exception metadata, we should move it down the layer cake.
This change will not address other standing issues with its API or the need for a guard package as mentioned by @dtribble offline.

See #440

@erights addressed this by moving the core of @agoric/assert into the SES shim proper.

@erights addressed this by moving the core of @agoric/assert into the SES shim proper.


Remove use of unstable feature -- it's not required

Ah! I never got rid of this after I got rid of the alias. I wish clippy found these

I'll tag this once I get back to a computer


Duplicate KongConsumer in another namespace causes infinite loop and halts config updates

NOTE: GitHub issues are reserved for bug reports only.
For anything else, please join the conversation
in Kong Nation https://discuss.konghq.com/c/kubernetes.

Summary
Creating a KongConsumer with a username already used in another KongConsumer in another namespace causes ingress-controller to keep looping on items in a queue, with no successful sync.
I believe the root cause is that KongConsumer resources are namespaced, but the implementation of Kong is not, and enforces unicity on the username. This seems to indicate that Kong should either allow for duplicate consumers with the same username, or that KongConsumer should be made a cluster-wide resource.
Kong Ingress controller version
0.7.1
Kong or Kong Enterprise version
1.4
Kubernetes version
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.5", GitCommit:"20c265fef0741dd71a66480e35bd69f18351daea", GitTreeState:"clean", BuildDate:"2019-10-15T19:16:51Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.10-gke.27", GitCommit:"145f9e21a4515947d6fb10819e5a336aff1b6959", GitTreeState:"clean", BuildDate:"2020-02-21T18:01:40Z", GoVersion:"go1.12.12b4", Compiler:"gc", Platform:"linux/amd64"}

Environment

Cloud provider or hardware configuration: GCP
OS (e.g. from /etc/os-release): Container-Optimized OS
Kernel (e.g. uname -a): Linux gke-staging-cluster-high-mem-pool-3-a54925d6-kxmx 4.14.137+ #1 SMP Thu Aug 8 02:47:02 PDT 2019 x86_64 Intel(R) Xeon(R) CPU @ 2.30GHz GenuineIntel GNU/Linux
Install tools:
Others:

What happened
After creating a KongConsumer in namespace foo with username john, ingress-controller goes into a infinite loop over all the resources and keeps giving the same error:  err entity already exists
Below is a log extract:
-------------------------------------------------------------------------------
Kong Ingress controller
  Release:    0.7.1
  Build:      1527700
  Repository: git@github.com:kong/kubernetes-ingress-controller.git
  Go:         go1.13.1
-------------------------------------------------------------------------------

I0423 12:08:39.164428       1 main.go:407] Creating API client for https://<IP_ADDRESS>:443
I0423 12:08:39.175639       1 main.go:451] Running in Kubernetes Cluster version v1.14+ (v1.14.10-gke.27) - git (clean) commit 145f9e21a4515947d6fb10819e5a336aff1b6959 - platform linux/amd64
I0423 12:08:39.205273       1 main.go:187] kong version: 1.4.3
I0423 12:08:39.205320       1 main.go:196] Kong datastore: postgres
I0423 12:08:39.469398       1 controller.go:224] starting Ingress controller
I0423 12:08:39.498745       1 status.go:201] new leader elected: ingress-kong-7ffd98dc7-bwfjg
I0423 12:08:42.929407       1 kong.go:66] successfully synced configuration to Kong
I0423 12:08:46.145526       1 kong.go:57] no configuration change, skipping sync to Kong
I0423 12:08:52.270131       1 kong.go:57] no configuration change, skipping sync to Kong
I0423 12:08:55.555902       1 kong.go:57] no configuration change, skipping sync to Kong
W0423 12:18:15.112724       1 parser.go:1079] service demo-test/bilirubin does not have any active endpoints
I0423 12:18:15.262662       1 kong.go:66] successfully synced configuration to Kong
I0423 12:18:18.549525       1 kong.go:66] successfully synced configuration to Kong
I0423 12:18:39.250688       1 kong.go:57] no configuration change, skipping sync to Kong
I0423 12:18:42.589141       1 kong.go:57] no configuration change, skipping sync to Kong
I0423 12:18:45.917752       1 kong.go:57] no configuration change, skipping sync to Kong
E0423 12:26:15.589535       1 controller.go:119] unexpected failure updating Kong configuration:
entity already exists
W0423 12:26:15.589595       1 queue.go:112] requeuing foo/john, err entity already exists
E0423 12:26:18.923322       1 controller.go:119] unexpected failure updating Kong configuration:
entity already exists
W0423 12:26:18.923361       1 queue.go:112] requeuing foo/john, err entity already exists
E0423 12:26:22.265718       1 controller.go:119] unexpected failure updating Kong configuration:
entity already exists
W0423 12:26:22.265848       1 queue.go:112] requeuing foo/john, err entity already exists

Expected behavior
The new consumer should be created and synced, and available for
Steps To Reproduce

Create a KongConsumer in namespace bar with username john
Create a KongConsumer in namespace foo with username john
Create a KongPlugin in namespace foo of type basic-auth
Create an Ingress in namespace foo, with plugin (3) activated

It would have been extremely useful for the log to mention which was the entity causing the error.
To investigate the issue, I had to remove resources one by one until the error stopped showing up.

It would have been extremely useful for the log to mention which was the entity causing the error.
To investigate the issue, I had to remove resources one by one until the error stopped showing up.

Yes, totally reasonable.
This is a known issue internally and users do run into this once in a while.
What experience would you like to have in a case where there are duplicate KongConsumer resources? We have the following options:

KongConsumer resource that was created first takes precedence
The other way around of the first option; where the KongConsumer resource that was created last should take precedence
The draconian option of when there is a conflict, don't create a consumer in Kong

To signal the error, the controller can update the Status of the KongConsumer resource to signal an error. Is that helpful and sufficient?

What experience would you like to have in a case where there are duplicate KongConsumer resources? We have the following options:

KongConsumer resource that was created first takes precedence
The other way around of the first option; where the KongConsumer resource that was created last should take precedence
The draconian option of when there is a conflict, don't create a consumer in Kong

I reckon the first option would make more sense. It is the more logical, since this is the one that is actually stored in the DB.

To signal the error, the controller can update the Status of the KongConsumer resource to signal an error. Is that helpful and sufficient?

It would definitely be helpful. I am not running the admission controller, so I don't really have a clear picture of what it is doing, but is the consumer clash something that could be raised by the admission controller as well, to try and prevent the issue as early as possible?
From a documentation standpoint, I think it would be helpful to mention somewhere in the documentation for KongConsumer that, despite the fact that these resources are namespace scoped, Kong enforces unicity on the "username".
I believe it would also be nice to mention that this username has nothing to do with the username basic-auth secrets, meaning that 2 separate KongConsumers with different usernames could use basic-auth credentials that have the same actual basic-auth username)
In my particular case, I am going to regroup all my KongConsumer objects in the kong namespace where my ingress controller is deployed, because to me, it makes more sense to run kubectl get kc -n kong rather than kubectl get kc --all-namespaces. It would provide a simpler way to access all consumers at once, and avoids having to chase them all over.

I reckon the first option would make more sense. It is the more logical, since this is the one that is actually stored in the DB.

+1. I was thinking about the same thing.

I am not running the admission controller, so I don't really have a clear picture of what it is doing, but is the consumer clash something that could be raised by the admission controller as well, to try and prevent the issue as early as possible?

It already catches this specific error if you do set it up.

From a documentation standpoint, I think it would be helpful to mention somewhere in the documentation for KongConsumer that, despite the fact that these resources are namespace scoped, Kong enforces unicity on the "username".

Noted. Tracking this internally. We will gladly accept a PR.

Considering this resolved. Please re-open if needed.


Speeding up Python tests

Use assert_array_equal to speedup the test suite significantly.
Also some clean up including splitting test_read_write into test_write and test_read.

/merge


showcase improvements

Curate the showcase based on what technology/solution is used.
For example, the NFT project uses an NFT Drop contract, SDK for Front-End, and so on.

Showcase for Marketplace, DAOs.


Multiple images for social metadata

Extracted from https://github.com/codingteam/loglist/pull/176#discussion_r72796247

Check that: https://indieweb.org/The-Open-Graph-protocol#Does_not_support_SVG_images - the URL says it all :(

You wanna close that then?

Yes I do wanna close this.

Too late! Ha-ha!

:crying_cat_face:


[ERROR]  No service key "undefined" found for service instance "xx-db"

Hi @jung-thomas
when executing npm run hana, I get the following error.
Retrieving data from Cloud Foundry...
[ERROR] No service key "undefined" found for service instance "cv-db".
This wasn´t the case weeks ago,
I also specified the key of my instance via command:
hana-cli serviceKey [instance] [key]
Maybe you have any idea?
Thank you.
BR
Rufat

What is npm run hana? There is no such npm script in this repository. I assume this is from your own project. You are using hana-cli serviceKey to create the default-env.json I take it.  But I don't see how else this is related to hana-cli.

HI @jung-thomas
yes, you are right, it is my own script:  "hana": "cds deploy --to hana:cv-db --auto-undeploy"
I thought the error was related to hana-cli. Now, I think it is not, more to deployment process. Sorry for the confusion.
BR
Rufat


Foam suffers from precision artifacts on Switch

When running on Switch slightly away from the origin, foam textures suffer from extreme artifacting caused by low precision texture coordinates (i_worldXZUndisplaced).
The cause of this issue is simply that lodAlpha_worldXZUndisplaced_oceanDepth is half precision, which on most platforms is actually defined as a float. On Switch however, this is now correctly compiled to a mediump vec4, which is not enough precision to store world coordinates.
Changing lodAlpha_worldXZUndisplaced_oceanDepth to a float4 resolves the issue on Switch.

Just another note, this issue sometimes does not appear, depending on what registers are around when doing the coord related math. I found sometimes it would actually do them in full precision anyway since it had those registers around (I was making changes to the ocean shader and was wondering why at random the foam was breaking haha)

Apologies it took us a while to get back to you. Thank you very much for tracking this down. The worldXZ should definitely be full precision.


Improve error handling of internal libraries

We are not currently catching many exceptions thrown by the libraries we use. We should do that and convert them into Brownify errors. As long as we know which exceptions to expect, this model makes it easy to use exception handling internally within the library and perform logging either at the command line program or at a select number of strategic places within the library.

This was just merged in.


Add a wiki: Jiggywikki

An anonymous user has submitted a new wiki via our submission form.
Link to origin wiki: https://banjokazooie.fandom.com
Link to destination (independent) wiki: https://banjokazooiewiki.com

This has been added and will be released in v1.1.3