Google Accessor delete_file() will not successfully delete a given spreadsheet id

In GitLab by @tramyn on Jan 29, 2020, 14:55
There are test classes that are set up to create a copy of the SD2 Dictionary spreadsheet. GenerateStruturedRequestTest and IntegrationIpsTest are two test classes that currently calls Google Accessor delete_file() to delete a copied spreadsheet. This method will currently delete a given document ID but it does not work when deleting a given spreadsheet ID. This current issue will cause copies of these dictionary spreadsheets to populate the SD2 google drive folder and will require me to manually remove these copied files.

In GitLab by @jakebeal on Jan 29, 2020, 17:57
A potential band-aid: make a "test files" directory so that they are at least all hidden away in their own trash-can.

In GitLab by @jakebeal on Apr 20, 2020, 09:15
assigned to @tramyn

In GitLab by @tramyn on Apr 21, 2020, 23:46
mentioned in merge request !104

In GitLab by @tramyn on Apr 21, 2020, 23:46
created merge request !104 to address this issue

In GitLab by @tramyn on Apr 24, 2020, 15:06
This issue should be resolved. There are test cases set up here to validate this change. One thing to note is deletion for a given file id will only work if the user account authorizing this deletion is the owner of the file. Deletion of a given file id for non owners of the file will not work otherwise. I have also added additional feature to create a file from a specified Google Drive folder. This feature will allow intent parser to have more control where files are created. If it turns out that there are issues completely removing a file that intent parser does not have full authority over, then we at least have control over where intent parser are creating files.
For additional context, this issue was found from test cases that were created for integration testing. Because intent parser went through a refactoring stage, I will need to update these test cases to work from the structural change. For now, I have marked most of these test to skip testing. I will proceed and mark this issue as resolved because there are test cases now set up to test for this exact behavior.
Once integration tests are back up and running again and the same issue occurs, then I can revisit this issue.

In GitLab by @tramyn on Apr 26, 2020, 19:45
closed via merge request !104

In GitLab by @tramyn on Apr 26, 2020, 19:45
mentioned in commit 7502f6e07ff918f6d989dba3029a5c0c81fbdd79

In GitLab by @tramyn on Jun 12, 2020, 18:58
mentioned in commit b293ae76701971f17f023e08c22e372e50824e64


Update user documentation

Adding debian jessie installation.
Updating configuration bit documentation.
Fixes #366

Coverage remained the same at 80.417% when pulling caa1076521aa1c5e6dc9b37e5863a2757c35d26b on mterzo:docs into df915834a49cb1a2a09d76be99ff880d02fd277d on voxpupuli:master.

Coverage remained the same at 81.275% when pulling 1713f8ec95f665d9e467629aeb7d45475d2a8ecb on mterzo:docs into 9bd07848387aaa1574ec0dad3792a9726fb9d542 on voxpupuli:master.

@bastelfreak thanks!


Multiple space inserted on window switching

This is currently due to not properly ignoring special keybinds like alt tab (or workspace switching, etc) and so the key still gets sent to the window. Hopefully it will be fixed sometime.

This should be fixed now.

I cannot reproduce this now. Maybe you can close it @dzhou121 .


adding scala-lib packages to whitelist

This is simply a partial fix for getting Scala working; we've established that Scala libraries need to be whitelisted. However, the libraries also need to be loaded, which is not fixed in this PR.

Can one of the admins please verify this patch?

@GooeyHub: add to whitelist

Hooray Jenkins reported success with all tests good!

Curiously, would adding stuff like Scala IO to the whitelist indirectly expose options for file access and such? Or would that still break (as intended) if you tried to reach it through some Scala class?

In my experience it will typically rely on java libs to do the heavy
lifting, in which case it will break, but I can remove scala.io from the
list for now to be safe.
On Dec 2, 2017 2:36 PM, "Rasmus Praestholm"<EMAIL_ADDRESS>wrote:

Curiously, would adding stuff like Scala IO
http://www.scala-lang.org/api/2.12.3/scala/io/index.html to the
whitelist indirectly expose options for file access and such? Or would that
still break (as intended) if you tried to reach it through some Scala class?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/MovingBlocks/Terasology/pull/3155#issuecomment-348714725,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AA37jvMwLoQHP1Xqo3c52Wf_-wy2U-Zyks5s8aa_gaJpZM4QzJ49
.

@Cervator I removed scala.io for now

Hooray Jenkins reported success with all tests good!

Hmm, on that note there might be more things to consider ... :D
I just looked at scala.sys real quick and there is an exit() in there and other rather fundamental sounding things (like hooking up on-exit threads to run). Sounds like that might also be a bit of a wasp's nest of potential Fun :-)
For instance right now if I place:
System.exit(0);
In a module the sandbox defeats it gracefully:
java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "exitVM.0")
And the game keeps running. That may also actually be a great way to test this. If you try a Scala style system exit, will the sandbox catch it when it defers to System.exit - if it does? If that's the case it may be safe - as long as we indirectly block things like thread manipulation and so on.
Not saying a system quit is necessarily a great example of a thing to be scared of. It may be somewhat of a question what we're actually trying to guard against. A modder could sneak in a system exit triggered by some obscure thing, get a module accepted in a variety of larger collections, then go crash servers? That could potentially corrupt worlds, even if the server OS itself remains safe.

@Cervator I wanted to test out your suggestions regarding security, but am running into further surprises that need addressing first (using Nanoware now, but not sure it matters). It seems that there is an issue somewhere with sandboxing in loading scala objects (similar to static classes in Java in usage, but maybe not in implementation under the hood - not sure), which end in a $ when used from Java. E.g., to even use a Seq I got a java.lang.NoClassDefFoundError: scala/Predef$ - this was fixed by adding scala.Predef$.class to the class whitelist on my hacked branch of Nanoware that loads Scala libraries directly in the engine, but since this class whitelist is directly referencing an object that is known statically, we may need to think of another workaround - the classes whitelisted use static references, but package references only use strings (dynamic whitelisting).
Another problem is that if I use a scala List instead of a scala Seq, I get this similar error:
07:47:37.055 [main] ERROR o.t.engine.ComponentSystemManager - Failed to load system ScalaLib:ScalaCommands
java.lang.NoClassDefFoundError: scala/collection/immutable/List$
        at org.terasology.ScalaCommands.<init>(ScalaCommands.scala:9)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at java.lang.Class.newInstance(Class.java:442)
        at org.terasology.engine.ComponentSystemManager.loadSystems(ComponentSystemManager.java:96)
        at org.terasology.engine.modes.loadProcesses.RegisterSystems.step(RegisterSystems.java:53)
        at org.terasology.engine.modes.StateLoading.update(StateLoading.java:242)
        at org.terasology.engine.TerasologyEngine.mainLoop(TerasologyEngine.java:413)
        at org.terasology.engine.TerasologyEngine.run(TerasologyEngine.java:368)
        at org.terasology.engine.Terasology.main(Terasology.java:163)

However, it should be covered by the fact that scala.collection is already whitelisted, so what I suspect is happening is that somewhere the sandboxing code isn't accounting for "classes" ending in $. I can try to dig into this further but am a bit hampered by even my normal (non Nanoware) workspace being a bit wacky. I ran gradlew idea and opened the project, but still many things appear missing:

Gotcha. Yep, may need to leave this to simmer for a bit until the Gradle overhaul is further along and we've played with the sandbox more :-)


it seems that it is not working with icon fonts and background-position in addition to overflow clip with border radius

it seems that it is not working with icon fonts , background-position , overflow clip with border radius

https://demo.interface.club/limitless/demo/template/html/layout_1/full/form_layout_vertical.html

a temporary solution, that worked for me, was to download the icons (as .svg in my case) as files and add them as  to your html


Support actix-web 2.x

This patch bumps actix-web dependency from 1.x to 2.x, while bumping futures from 0.1 to 0.3.
As the new futures comes with its own Mutex implementation, this patch removes futures-locks dependency too. This means that we have to use async/await to deal with lifetime-bound futures.

Thanks!


[Feature Request] support timely refresh the filtering

Hi,
I want to use https://greasyfork.org/en/scripts/375575-endless-google or this one https://chrome.google.com/webstore/detail/infinite-scroll-for-googl/acjdmkdcbbhokaleofmalpcnnkpgphpb,
However, those tools can work but not cooperate with uBlacklist properly. Seems uBlacklist just does the filtering once.

I'm not going to support all other extensions/userscripts that modify Google search result pages, although pull requests are welcome.
If you like, AutoPagerize and its derivatives are good alternatives that work with uBlacklist.
uAutoPagerize
https://chrome.google.com/webstore/detail/uautopagerize/kdplapeciagkkjoignnkfpbfkebcfbpb


Add Hatch

Tool name
Hatch
Tool license
MIT
Add or update?

[X] Add
[ ] Update

Desired version
1.6.0
Approximate size
No response
Brief description of tool
Hatch is a modern, extensible, and standards-compliant Python project manager. I am a maintainer of this tool.
Its first stable release was announced on Python's dev forum in April and the project was swiftly adopted by Python's official packaging team in the following weeks.
By having Hatch preinstalled, Python projects would save ~10-40 seconds (example) of setup time depending on the OS image. Additionally, since there is functionality for the entire life cycle of a project (building -> environment management for testing -> versioning -> publishing), projects could opt-in to a unified workflow and remove the need for other tools like pypa/gh-action-pypi-publish for publishing to PyPI which alone takes ~30 seconds (example) to build and use.
The most prevalent feature is Hatch's environment management which is used by projects like MkDocs, organizations like Project Jupyter, and companies like Datadog and Instagram. It can also be used as a general purpose task runner, not just for Python projects.
Here is a non-exhaustive listing of users: https://hatch.pypa.io/dev/users/
URL for tool's homepage
https://hatch.pypa.io/latest/
Provide a basic test case to validate the tool's functionality.
hatch --version

Platforms where you need the tool

[ ] Azure DevOps
[X] GitHub Actions

Runner images where you need the tool

[X] Ubuntu 18.04
[X] Ubuntu 20.04
[X] Ubuntu 22.04
[X] macOS 10.15
[X] macOS 11
[X] macOS 12
[X] Windows Server 2019
[X] Windows Server 2022

Can this tool be installed during the build?
python -m pip install hatch==1.6.0

Tool installation time in runtime
~10-40 seconds
Are you willing to submit a PR?
Yes, but I would need guidance

Are you willing to submit a PR?

Yes, but I would need guidance

Actually, I think I did it!

https://github.com/actions/runner-images/pull/6371
https://github.com/actions/runner-images/pull/6372
https://github.com/actions/runner-images/pull/6373

This was very easy to contribute, great job 😄

Hi @ofek , we will take a look and get back to you, thank you.

Hi @ofek we decide not to add Hatch to images, considering installation time, thank you.

it can be installed from pip in 7 seconds

Not on macOS nor Windows


Timer and TimerComponent APIs are inconsistent

Taking a look at Timer and TimerComponent, I realized they have a different nomenclature on their APIs:
On TimerComponent, the length/duration of the timer is called period and it is a named parameter. That is a good name for when repeat is true.
But on the underlying Timer implementation, it is actually called limit and it is not a named parameter. That name feels better for non-repeating timers.
-> I do not have a strong preference for the parameter name, but I think it should be consistent.
-> I think whether it is named-parameter or not should also be consistent - but I do tend to prefer the named-parameter on this matter, as it is more readable from the call site.
Thoughts? I can happily update one or the other depending on everyone's preferences.
It is a breaking change, but I think keeping them consistent is very important to keep simplicity and avoid confusion for our users (for example when changing code from one to the other).

Should we add this to the list of breaking V2 changes, or do it directly? #1938

I considered putting it there, but it came to me we do allow some minor breaking changes.
This seems pretty mild to me, as it is just a trivial rename.
But no strong opinions either way -- I leave it up to you guys.

I'd like to suggest one more breaking change.
The onTick in TimerComponent seems redundant because Timer also stores an onTick callback. TimerComponent unnecessarily exposes a public onTick method which is registered with the internal Timer. The default implementation of TimerComponent.onTick invokes the _onTick which is provided by the user. This seem an uncessary indirection.
On top of that, one cannot change the callback of TimerComponent dynamically, but it is possible to change it for the Timer. This can leads to a following confusing code.
final tc = TimerComponent(period: 1, onTick: myCallback1);

final b1 = tc.onTick == tc.timer.onTick; // True
final b2 = tc.onTick == myCallback1; // False
final b3 = tc.timer.onTick == myCallback1; // False

tc.timer.onTick = myCallback2; // Only way to changes the callback.

final b4 = tc.onTick == tc.timer.onTick; // False.
final b5 = tc.onTick == myCallback1; // True.

// At this point, tc essentially still keeps a reference to myCallback1 even though it is not going to be called by the internal timer.

To avoid this and keep the API simple, we can completely remove the TimerComponent.onTick and directly set the user provided callback on the internal Timer.

Sounds good to me!


Added "Use Cases of Blockchain" ( #31 to #40)

[ ] I have read freeCodeCamp's contribution guidelines.
[ ] My pull request has a descriptive title (not a vague title like Update index.md)
[ ] My pull request targets the master branch of freeCodeCamp.
[ ] None of my changes are plagiarized from another source without proper attribution.
[ ] My article does not contain shortened URLs or affiliate links.

If your pull request closes a GitHub issue, replace the XXXXX below with the issue number.
Closes #XXXXX

Closed and Reopened this PR to attempt to resolve a specific Travis build failure.


scala-stream-collector should set X-Forwarded-For to user.ipAddress

in scala-stream-collector current code, it's wrongly set proxy or load balancer ip address to user.ipAddress. Instead, it should grab it in http header - X-Forwarded-For that is the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer.

Hi @liningalex , we actually fix this in the enrichment step instead of in the collector. Scala Common Enrich has access to the headers for the event and will use the X-Forwarded-For header (if it exists) as the IP address. The relevant ticket is here. Closing since I believe that makes this ticket unnecessary.


Data Domains — Where do I start? / Piethein Strengholt

URL: https://towardsdatascience.com/data-domains-where-do-i-start-a6d52fef95d1
Review (1-2 sentences): Good and practical article about data domains. Not only from a data team perspective but also from a development perspective.

Published in Digest #35.


Error Trying to import Zabbix 4 Template

Describe the bug
Hello asand3r, thanks for your great work!
I have a zabbix 4.0.5 with your v0.6.6 and zabbix 4.0 template running ok.
I am trying to update to version v0.6.7/v0.6.8. the Python script is running ok and created the cache database on /var/tmp/zbx-hpmsa.
My problem is when i try to import teh updated templates. i Receive a message:
Invalid tag "/zabbix_export/version": unsupported version number.
Tryed to chage to version 4.0 on the xml file but receive the message:
Invalid tag "/zabbix_export/templates/template(1)": unexpected tag "tags".
Screenshots

Server side (please complete the following information):*

OS: CentOS Linux release 7.6.1810
Python version: 3.6
Version v0.6.7 and v0.6.8

Additional context
Add any other context about the problem here.

Hi, @flpfandrade.
Yeap, I know. Sorry, I've exported template from 4.2 and now it's minimal supported version with 0.6.8+. You can take template for 4.0 from 0.6.6 or 0.6.7 releases.

I've moved templates to master branch from 0.6.6.

Hi thanks for the support!
Can I use the v0.6.6 template with the Python script form version 0.6.8 running?

Yes, it will work, but 0.6.7 and 0.6.8 contains a couple of important changes, such adding new item prototypes. You can check their release notes and implement it yourself or wait while I'm install 4.0. again and export correct template version again.


Add a simple PrometheusRule to check successful Frontend deployment

This PR adds a simple Prometheus rule to check that Frontend has been successfully deployed. It uses the kube_deployment_status_condition deployment metric to check that, for each namespace Frontend is deployed into, the frontend deployment returns true for both being Available and Progressing.
Evaluating the status of a deployment within Kubernetes does not seem to be as trivial within Prometheus as one might expect. According to the docs, a deployment which is Available means that the minimum number of replicas have been satisfied, as specified in a Deployment spec; it doesn't necessarily mean that the entire deployment is complete. A deployment which is Progressing means either that the deployment is creating pods etc and is actually in progress, or that it has completed successfully, specifying the Reason as NewReplicaSetAvailable.
Unfortunately, Reason does not appear to be available within the kube_deployment_status_condition deployment metric and as such we can't use it to properly check whether a deployment was successful. For this reason, this commit is only checking for any deployments of Frontend where Progressing is false and ReplicaFailure is true.
It's also worth noting that the reason behind this rule is to check that Prometheus fires the alert when appropriate (when a deployment of frontend fails) and that this firing alert shows up in AlertManager; it isn't necessarily intended as a best-practice example of what a good PrometheusRule should look like.
Trello: https://trello.com/c/G90Aq8u8

Given that the intent is simply to demonstrate an alert rule and kube_deployment_status_condition turns out to be a bit tricky to work with, I'd consider going with a really trivial and easy-to-understand example, like say FrontendNoPodsRunning count(up{job="frontend", namespace="$labels.namespace"}) == 0 (edit: oops sorry forgot the count())

Thanks, I might if it's all the same add your example alert here in addition to the deployment success / failure example.


Limit for MS Family

I was going through the quotas and limits for vCPU for Standard MS Family and it is zero.
May I know the reason for that?

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

ID: 7ebe6d3a-2307-1e9a-69f1-f8aeb2397266
Version Independent ID: dac51441-6f31-0ef2-55e1-70377b7a59f0
Content: vCPU quotas for Azure
Content Source: articles/virtual-machines/windows/quotas.md
Service: virtual-machines-windows
GitHub Login: @cynthn
Microsoft Alias: cynthn

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

@jeetgarg For this size family, the vCPU (core) quota in your subscription is initially set to 0 in each region. This is the same for every user in Azure. In order to use these sizes, you need to request a vCPU quota increase for this family in an available region.
You can do that here: https://docs.microsoft.com/en-us/azure/azure-supportability/resource-manager-core-quotas-request

That is my question Micah, why is it so?
Because using ASR, I got this assigned as the VM size and that means either I go and change the size or raise a request to increase the quota.
Both of the options require more efforts so I am wondering why is it so that it is set to zero?

These VMs are in high demand and have less availability than the general use VM sizes. They are also more expensive. So we set them to 0 to avoid overuse by people who may not need the size. We do the same thing for the N Series VMs (GPU Enabled). Hence, we require users to submit a core increase and provide a business justification for using them. I can understand it is annoying to have to request an increase but also, it is a simple process that only takes a short amount of time. We have an entire team dedicated to core increases so they move quite fast with the requests.

Thanks Micah for this information.


Callback system or mutex for updates required

I want to update content based on external events.  For example, I might like to make a dashboard which updates its content every 2 seconds.
To do this, code needs to be able to perform operations on the same goroutine as the rest of the rendering library.  Calling e.g. SetText from a key event callback works fine; calling SetText from anywhere else after calling ui.Run is a bug: the race detector will complain loudly and correctly.  (The race detector is awesome.)
The 'audioplayer' example demonstrates the issue.  Running go run -race ./example/audioplayer/main.go and pressing enter on any of the list items will promptly generate a stream of data race warnings.
Either a mutex of some kind, or, the ability to insert callback functions into a queue is necessary so UI updates can be made without waiting for key/mouse/resize events and without triggering the race detector.  Looking at the queue and select loop already in ui_tcell.go, I'd say just extend that: export a method that's roughly like handleResizeEvent but accepts a cb func(), have it do ui.eventQueue <- callbackEvent{cb}, and add a branch to the handleEvent switch that responds to a callbackEvent by simply running the user's func() in the current goroutine.  Races averted!
Related:

same user story: https://github.com/marcusolsson/tui-go/issues/15

Getting a bit late here, but if that all sounds reasonable I'll write a quick PR tomorrow! :)

Closed by #35


Remove 20200819 pipeline

It has done its job and the index is full of bad things

I propose we change the pipeline/index naming conventions to protect our collective mental health

I propose we change the pipeline/index naming conventions to protect our collective mental health

Particularly when pipelines are created for specific purposes, I wouldn't mind naming that way.
e.g. catalogue-loris_expts, catalogue-inferrer_morememory

We used to call the indexes along those lines
That's probably a better policy for the stack.

You could also just version it? 1,2,3,4,5 etc?

I like having dates in there personally, but maybe having additional context too would be useful

We used version numbers in the strings because for a while we ran a V1 and a V2 API concurrently. The version numbers were to distinguish which API an index was attached to, because they had different internal models.
Nick’s right – the date is useful, especially when we need to delete old indexes. Being able to see when an index was created (and when it was intended to be used) is helpful.
Personally my preferred approach would be something like
catalogue-{date}-{description}


Diagnosys: Also update state on exam end, when there is no more action

We found a bug in the diagnosys script where the progress and score is not updated after answering the last question.
The easiest way to test this is to take any diagnosys test and skip all question except the last one, answer that one correctly and you will see that you have no progress and points.
Adding this one line seems to fix the problem.

Thanks!


Thanos receiver pod keeps restarting while saying store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error

I am newbie here and tying to understand thanos receiver work flow.
Whats happening ?
While checking logs from prometheus and thanos receiver side, I am hitting with below error
level=error ts=2021-03-26T18:22:25.041639445Z caller=multitsdb.go:334 component=receive component=multi-tsdb tenant=default-tenant msg="failed to start tsdb asynchronously" err="mkdir \": permission denied" level=error ts=2021-03-26T18:22:25.041684545Z caller=handler.go:330 component=receive component=receive-handler err="store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error"
Configuration of thanos receive:
hashring.json
    [
      {
        "endpoints": [
            "<IP_ADDRESS>:10901"
        ]
      }
    ]

thanos receive deployments:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.app.name }}
  labels:
    app: {{ .Values.app.label }}
  namespace: {{ .Values.app.nameSpace }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Values.app.name }}
  strategy:
    rollingUpdate:
      maxSurge: 2
      maxUnavailable: 0
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: {{ .Values.app.name }}
      annotations:
        sidecar.istio.io/inject: {{ .Values.template.annotations.istioSidecarInject | quote }}
    spec:
      containers:
        - name: {{ .Values.app.name }}
          image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          args:
            - receive
            - --log.level=info
            - --grpc-address=<IP_ADDRESS>:{{ .Values.app.receiveGrpcPort }}
            - --http-address=<IP_ADDRESS>:{{ .Values.app.receiveHttpPort }}
            - --remote-write.address=<IP_ADDRESS>:{{ .Values.app.receiveHttpWritePort }}
            - --grpc-grace-period=2m
            - --tsdb.path="/var/thanos/receive/objstorage/"
            - --objstore.config-file=/var/thanos/receive/config/thanos-objstorage.yaml
            - --receive.local-endpoint=<IP_ADDRESS>:10901
            - --receive.hashrings-file=/var/thanos/receive/hashring/thanos-receive-hashring.json
            - --tsdb.retention={{ .Values.tsdbRetensionPeriod }}
            - --receive.replication-factor=1
            - --receive.hashrings-file-refresh-interval=3m
            - --tsdb.wal-compression
            - --tsdb.no-lockfile
            - --label=receive="true"
            - --label=replica="$(REPLICA_NAME)"
          env:
          - name: REPLICA_NAME
            valueFrom:
              fieldRef:
                fieldPath: metadata.name
          livenessProbe:
            httpGet:
              path: /-/healthy
              port: 10902
              scheme: HTTP
            periodSeconds: 60
              #initialDelaySeconds: 30
          ports:
            - name: grpc-receive
              containerPort: {{ .Values.app.receiveGrpcPort }}
            - name: http-receive
              containerPort: {{ .Values.app.receiveHttpPort }}
            - name: http-write
              containerPort: {{ .Values.app.receiveHttpWritePort }}
          volumeMounts:
          - name: thanos-receive-server-config
            mountPath: /var/thanos/receive/config
          - name: thanos-receive-server-hashring
            mountPath: /var/thanos/receive/hashring
          - name: thanos-objstorage
            mountPath: /var/thanos/receive/objstorage
            readOnly: false
          resources:
            requests:
              cpu: {{ .Values.resources.request.cpu }}
              memory: {{ .Values.resources.request.memory }}
            limits:
              cpu: {{ .Values.resources.limit.cpu }}
              memory: {{ .Values.resources.limit.memory }}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: FallbackToLogsOnError
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        fsGroup: 2000
        runAsGroup: 2000
        runAsNonRoot: true
        runAsUser: 2000
      serviceAccount: {{ .Values.app.nameSpace }}
      serviceAccountName: {{ .Values.app.nameSpace }}
      terminationGracePeriodSeconds: 30
      volumes:
      - name: thanos-receive-server-config
        configMap:
          name: thanos-objstorage-config
          defaultMode: 420
      - name: thanos-receive-server-hashring
        configMap:
          name: thanos-receive-hashring-config
          defaultMode: 420
      - name: thanos-objstorage
        emptyDir: {}

I understood that , there is a permission denied error while creating a dir. I am confused about which and where receiver is trying to make a directory is it on azure storage or is it internal to pod ? Also for what reason it is creating it ? Also why permission denied if it is creating internally? Also, pod is restarting with this error.
Can some one help me out here since I am struggling with this.
Logs from thanos receive:
 level=error ts=2021-03-26T18:22:24.737394278Z caller=handler.go:330 component=receive component=receive-handler err="store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error" level=info ts=2021-03-26T18:22:24.838760534Z caller=multitsdb.go:271 component=receive component=multi-tsdb tenant=default-tenant msg="opening TSDB" level=error ts=2021-03-26T18:22:24.838845033Z caller=multitsdb.go:334 component=receive component=multi-tsdb tenant=default-tenant msg="failed to start tsdb asynchronously" err="mkdir \": permission denied" level=error ts=2021-03-26T18:22:24.838885233Z caller=handler.go:330 component=receive component=receive-handler err="store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error" level=info ts=2021-03-26T18:22:24.94020909Z caller=multitsdb.go:271 component=receive component=multi-tsdb tenant=default-tenant msg="opening TSDB" level=error ts=2021-03-26T18:22:24.940285489Z caller=multitsdb.go:334 component=receive component=multi-tsdb tenant=default-tenant msg="failed to start tsdb asynchronously" err="mkdir \": permission denied" level=error ts=2021-03-26T18:22:24.940363389Z caller=handler.go:330 component=receive component=receive-handler err="store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error" level=info ts=2021-03-26T18:22:25.041541646Z caller=multitsdb.go:271 component=receive component=multi-tsdb tenant=default-tenant msg="opening TSDB" level=error ts=2021-03-26T18:22:25.041639445Z caller=multitsdb.go:334 component=receive component=multi-tsdb tenant=default-tenant msg="failed to start tsdb asynchronously" err="mkdir \": permission denied" level=error ts=2021-03-26T18:22:25.041684545Z caller=handler.go:330 component=receive component=receive-handler err="store locally for endpoint <IP_ADDRESS>:10901: get appender: TSDB not ready" msg="internal server error"

I am confused about which and where receiver is trying to make a directory is it on azure storage or is it internal to pod ?
This would be in the container
Also for what reason it is creating it ?
This is for the tsdb data location
Also why permission denied if it is creating internally? Also, pod is restarting with this error.
Right, this took me a while too. :D
It's because of the quotes in your path;

 - --tsdb.path="/var/thanos/receive/objstorage/"

Remove those, so you'll have;
- --tsdb.path=/var/thanos/receive/objstorage

For some reason it would otherwise escape the path (I think) so it becomes something like
--tsdb.path=\" /var/thanos/receive/objstorage\"
``
and then the system things it has to create `\ /var...` and that's not possible.

Btw I can recommend checking the initial design proposal for your questions on the 'why' here; https://thanos.io/tip/proposals/201812_thanos-remote-receive.md/
but I would recommend not using EmptyDir for the tsdb path. Use a PV for persistence storage

---

Perhaps we should sanity check the config more if possible though (:

@wiardvanrij  Thanks for your help. I tried and it worked.


Update scalatest to 3.1.0

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

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

Applied Migrations

https://raw.githubusercontent.com/scalatest/autofix/e4de53fa40fac423bd64d165ff36bde38ce52388/3.0.x/rules/src/main/scala/org/scalatest/autofix/v3_0_x/RenameDeprecatedPackage.scala
https://raw.githubusercontent.com/scalatest/autofix/e4de53fa40fac423bd64d165ff36bde38ce52388/3.1.x/rules/src/main/scala/org/scalatest/autofix/v3_1_x/RewriteDeprecatedNames.scala

labels: semver-minor, scalafix-migrations

https://github.com/sphereio/sphere-scala-libs/pull/157


Can Sortable work with divs instead of lists?

I have a thumbnail photo gallery of divs:

Description for this photo

    ....

Will SortableJS work with such code or does my gallery have to be made from listbox?

It will work with Divs


LXD master: can't compile because raft.h missing

Required information

Distribution: Arch Linux
Distribution version: 5.1.15-arch1-1-ARCH
The output of "lxc info" or if that fails:

Kernel version: 5.1.15-arch1-1-ARCH
LXC version:
LXD version: latest master: 60a99fb4bbdd6799d1088661effdbbe555f8ac92
Storage backend in use: ZFS

Issue description
Installation of latest master branch does not succeed because of
Parsing meta tags from https://gopkg.in/juju/environschema.v1?go-get=1 (status code 200)
get "gopkg.in/juju/environschema.v1": found meta tag get.metaImport{Prefix:"gopkg.in/juju/environschema.v1", VCS:"git", RepoRoot:"https://gopkg.in/juju/environschema.v1"} at https://gopkg.in/juju/environschema.v1?go-get=1
github.com/gosexy/gettext (download)
github.com/mpvl/subtest (download)
github.com/juju/httprequest (download)
CC=cc go install -v -tags "libsqlite3"  ./...
github.com/CanonicalLtd/go-dqlite/internal/bindings
# github.com/CanonicalLtd/go-dqlite/internal/bindings
../../CanonicalLtd/go-dqlite/internal/bindings/server.go:9:10: fatal error: raft.h: No such file or directory
    9 | #include <raft.h>
      |          ^~~~~~~~
compilation terminated.
make: *** [Makefile:19: default] Error 2
==> ERROR: A failure occurred in build().
    Aborting...
Error making: lxd

Steps to reproduce

Start the installation of lxd yay -S lxd ----editmenu
If asked to edit PKGFILE say yes
In Line 61 change git checkout lxd-${pkgver} to git checkout master (To include the bugfix from #5875 )

Information to attach
I figured out, that /home/myuser/.cache/yay/lxd/src/go/deps/raft/include/raft.h actually exists.
That path also is present in CGO_CFLAGS
echo $CGO_CFLAGS
-I/home/myuser/.cache/yay/lxd/src/go/deps/sqlite/ -I/home/myuser/.cache/yay/lxd/src/go/deps/libco/ -I/home/myuser/.cache/yay/lxd/src/go/deps/raft/include/ -I/home/myuser/.cache/yay/lxd/src/go/deps/dqlite/include/

[ ] Any relevant kernel output (dmesg)
[ ] Container log (lxc info NAME --show-log)
[ ] Container configuration (lxc config show NAME --expanded)
[ ] Main daemon log (at /var/log/lxd/lxd.log or /var/snap/lxd/common/lxd/logs/lxd.log)
[ ] Output of the client with --debug
[ ] Output of the daemon with --debug (alternatively output of lxc monitor while reproducing the issue)

You need to wipe your go/deps directory and run 'make deps' and follow the instructions at the end of it.
This will pull the needed dependencies including libraft


Potential perf issue

Why the destructuring assignment is needed here (and on some other places):
https://github.com/rayepps/radash/blob/master/src/object.ts#L34
/**
 * Map over all the keys of an object to return
 * a new object
 */
export const mapKeys = <
  TValue,
  TKey extends string | number | symbol,
  TNewKey extends string | number | symbol
>(
  obj: Record<TKey, TValue>,
  mapFunc: (key: TKey, value: TValue) => TNewKey
): Record<TNewKey, TValue> => {
  return Object.keys(obj).reduce(
    (acc, key) => {
      acc[mapFunc(key as TKey, obj[key])] = obj[key];
      return acc;
    },
    {} as Record<TNewKey, TValue>
  )
}

might be more performant. Or, maybe this one:
export const mapKeys = <
  TValue,
  TKey extends string | number | symbol,
  TNewKey extends string | number | symbol
>(
  obj: Record<TKey, TValue>,
  mapFunc: (key: TKey, value: TValue) => TNewKey
): Record<TNewKey, TValue> => {
  const acc = {} as Record<TNewKey, TValue>;
  const fn = ([key, value]) => {
    acc[mapFunc(key as TKey, value)] = value;
  };
  Object.entries(obj).forEach(fn);
  return acc;
}

Hello @dragansmlinus 👋 I don't think I understand the issue your describing. Could you give a bit more information? What 'destructuring assignment' are you referring to?

Ok, so I think I got what the OP meant
The question is: "Why, in reduce functions (or similars) are you returning a new accumulator and destructuring the previous one, instead of assigning the keys/values to the accumulator you already have?"
Here is an example of the issue mentioned by the OP
return Object.keys(obj).reduce(
    (acc, key) => ({
      ...acc,
      [obj[key]]: key
    }),
    {} as Record<TValue, TKey>
  )

as you can see, here we are destructuring acc (...acc) and returning a new acc at every iterations, while what the OP is suggesting is a version withouth destructuring
return Object.keys(obj).reduce(
    (acc, key) => {
      acc[obj[key]] = key
      return acc
    },
    {} as Record<TValue, TKey>
  )

Based on a preliminary analysis, the second version seems to be faster by 2x or more, but I will try to write a better benchmark to validate so

@matteosacchetto  Really, the bigger the number in the array, the bigger the difference between the two.
to make it easier, I took it based on your test and put it here on jsben.
Of course, I didn't see everyone who will exucult this function with an array of 1000 elements, but even with simpler arrays of 5 keys we already see a difference of being 2x faster and this is scaling.
https://jsben.ch/qnk3u
5 objects
func1 = 100% (2941513)
func2 = 43.3% (1327926)
10 objects
func1 = 100% (2252751)
func2 = 27.39% (610724)
50 objects
func1 = 100% (428450)
func2 = 9.84% (42159)
100 objects
func1 = 100% (265228)
func2 = 0.51% (1362)
500 objects
func1 = 100% (53844)
func2 = 0.08% (42)
One thing that sticks in my mind is that if we make this change (which in my opinion is valid) we should be creating a test jest to always validate that the next changes in this function will be below this new level of performance, and at this point I really I don't have much experience. Or maybe this thing of creating a performance test wasn't even valid.

@MarlonPassos-git yeah, that's the same performance improvement I saw. Already with small objects it improves by 2x.
I agree that this change is valid and would drastically improve performance across the board of functions included in this library.
I do think it is a valid idea to have a sort of performance benchmark to prevent alterations which would reduce performance of the basic solution. I do not know though if something like this is possible though... Unfortunately I do not have any experience on this..

@matteosacchetto  a more agnostic way to test the performance of a function would be with performance.now().
I made this sketch, theoretically it would work fine. Everything would depend that the first time we were going to test the performance of a function manually we should set the value of limit.
As I never had to deal specifically with this type of test, I don't know if this would be the best way.

What do you think @rayepps  ?

I love it.
For changing the code, I want to be mindful about how far we go down the performance rabbit hole to make sure we're not trading away the simplicity of Radash.
I'm a huge fan of adding a performance/benchmark regression to the CI. It might be a bit of work to setup but its all simple. I've setup some similar workflows in the past.


How train a model with custom LMDB files in DIGITS

Hello,
I encounter with some models which are based on Caffe and can load in the DIGITS, but I can not train them in the DIGITS just because they do not get their input data in the DIGITS's defined separate LMDB files.
The DIGITS creates or gets four LMDB files, one for training images, one for training labels, one for validation images and one for validation labels, but many existing models do not follow these.
For example I have a model which posses its own two parts based LMDB files, one for training and one for validation. I want to make these two LMDB files outside the DIGITS and use them to train a model inside the DIGITS afterwards.
How can I train a model in the DIGITS in such situations?

no idea?

Have a look at this and see if you can find an answer to your question:
https://github.com/NVIDIA/DIGITS/tree/digits-5.0/examples/regression#alternative-method-manually-creating-lmdb-files

No, as I mentioned I have created these LMDB files before. They are two LMDB files and the model accepts these two files as input (not like 4 LMDB parts in DIGITS).
The model's .prototxt file loads successfully inside DIGITS, but because the shape of the data-set is different than DIGITS default, I can not train the model.

When creating a dataset under "other" in DIGITS you can specify one LMDB for training features, optionally one LMDB for training labels. Optionally you can also provide one LMDB for validation features (and one LMDB for validation labels). So in DIGITS you have a choice of providing between 1 and 4 LMDB files.
You cannot provide 2 separate LMDBs for training features. If this is what you want to do, then DIGITS does not support this.

No, there is one LMDB file for training and one for validation. I gonna test your suggestion. Please do not close this thread till I post the results.

I got an error.

Pretty explicit error, right? You need to either set the shape in your Datum objects or use JPG/PNG encoding. Have a look at the LMDB creation examples.

The thing is that I have successfully trained the network using these LMDB files in the command line. is this a requirement if DIGITS?

Which command line are you referring to?

The author of the model has offered a python file, which is called from the Caffe root and trains the model.

To answer your question, DIGITS requires that you explicitly set the shape of your Datum objects when they are not encoded. Can we close this issue?

I did :-)


Can't compile on Ubuntu (libcrypto-config.cmake is missing)

Hi. I'm trying to build the v2 version with the commands provided in the README files:
git clone --branch v0.5.3 https://github.com/awslabs/aws-crt-cpp.git
git clone https://github.com/awslabs/aws-iot-device-sdk-cpp-v2.git

rm -rf aws-crt-cpp-build
mkdir aws-crt-cpp-build
cd aws-crt-cpp-build

cmake -DCMAKE_INSTALL_PREFIX="/usr" -DBUILD_SHARED_LIBS=ON -DBUILD_DEPS=ON ../aws-crt-cpp
cmake --build . --target install
cd ..

rm -rf aws-iot-device-sdk-cpp-v2-build
mkdir aws-iot-device-sdk-cpp-v2-build
cd aws-iot-device-sdk-cpp-v2-build

cmake -DCMAKE_INSTALL_PREFIX="/usr" -DBUILD_SHARED_LIBS=ON ../aws-iot-device-sdk-cpp-v2
cmake --build . --target install

It fails with the following error:

CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):
By not providing "FindLibCrypto.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"LibCrypto", but CMake did not find one.
Could not find a package configuration file provided by "LibCrypto" with
any of the following names:
LibCryptoConfig.cmake
libcrypto-config.cmake

Add the installation prefix of "LibCrypto" to CMAKE_PREFIX_PATH or set
"LibCrypto_DIR" to a directory containing one of the above files.  If
"LibCrypto" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/s2n/cmake/s2n-config.cmake:8 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/x86_64-linux-gnu/aws-c-io/cmake/aws-c-io-config.cmake:4 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/x86_64-linux-gnu/aws-c-http/cmake/aws-c-http-config.cmake:3 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/aws-crt-cpp/cmake/aws-crt-cpp-config.cmake:3 (find_dependency)
CMakeLists.txt:93 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/rob/src/aws-v2/aws-iot-device-sdk-cpp-v2-build/CMakeFiles/CMakeOutput.log".
See also "/home/rob/src/aws-v2/aws-iot-device-sdk-cpp-v2-build/CMakeFiles/CMakeError.log".

My system is Ubuntu 18.04. libssl-dev (version 1.1.1-1ubuntu2.1~18.04.4) is installed. http://packages.ubuntu.com cannot find any package with LibCryptoConfig.cmake or libcrypto-config.cmake inside.
Am I missing something?

Did you build your own openssl compatible libcrypto (openssl, boringssl, libressl)? If so where did you install it?
If not, have you installed the header files from apt?
Sent from my iPhone

On Oct 13, 2019, at 12:20 PM, dbmoderro<EMAIL_ADDRESS>wrote:
Hi. I'm trying to build the v2 version with the commands provided in the README files:
git clone --branch v0.5.3 https://github.com/awslabs/aws-crt-cpp.git
git clone https://github.com/awslabs/aws-iot-device-sdk-cpp-v2.git
rm -rf aws-crt-cpp-build
mkdir aws-crt-cpp-build
cd aws-crt-cpp-build
cmake -DCMAKE_INSTALL_PREFIX="/usr" -DBUILD_SHARED_LIBS=ON -DBUILD_DEPS=ON ../aws-crt-cpp
cmake --build . --target install
cd ..
rm -rf aws-iot-device-sdk-cpp-v2-build
mkdir aws-iot-device-sdk-cpp-v2-build
cd aws-iot-device-sdk-cpp-v2-build
cmake -DCMAKE_INSTALL_PREFIX="/usr" -DBUILD_SHARED_LIBS=ON ../aws-iot-device-sdk-cpp-v2
cmake --build . --target install
It fails with the following error:
CMake Error at /usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package):
By not providing "FindLibCrypto.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by
"LibCrypto", but CMake did not find one.
Could not find a package configuration file provided by "LibCrypto" with
any of the following names:
LibCryptoConfig.cmake
libcrypto-config.cmake
Add the installation prefix of "LibCrypto" to CMAKE_PREFIX_PATH or set
"LibCrypto_DIR" to a directory containing one of the above files. If
"LibCrypto" provides a separate development package or SDK, be sure it has
been installed.
Call Stack (most recent call first):
/usr/lib/x86_64-linux-gnu/s2n/cmake/s2n-config.cmake:8 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/x86_64-linux-gnu/aws-c-io/cmake/aws-c-io-config.cmake:4 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/x86_64-linux-gnu/aws-c-http/cmake/aws-c-http-config.cmake:3 (find_dependency)
/usr/share/cmake-3.10/Modules/CMakeFindDependencyMacro.cmake:48 (find_package)
/usr/lib/aws-crt-cpp/cmake/aws-crt-cpp-config.cmake:3 (find_dependency)
CMakeLists.txt:93 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/rob/src/aws-v2/aws-iot-device-sdk-cpp-v2-build/CMakeFiles/CMakeOutput.log".
See also "/home/rob/src/aws-v2/aws-iot-device-sdk-cpp-v2-build/CMakeFiles/CMakeError.log".
My system is Ubuntu 18.04. libssl-dev (version 1.1.1-1ubuntu2.1~18.04.4) is installed. http://packages.ubuntu.com cannot find any package with LibCryptoConfig.cmake or libcrypto-config.cmake inside.
Am I missing something?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

@JonathanHenson I didn't build openssl or libcrypto. Could you please point me out which header files need to be installed? libssl-dev 1.1.1 is already installed.

You need to set CMAKE_PREFIX_PATH to where the crt's artifacts were installed (/usr here).

@bretambrose Thanks! This helped much. However, now I see another error :)
/home/rob/src/aws-v2/aws-iot-device-sdk-cpp-v2/discovery/source/DiscoveryClient.cpp:155:53: error: ‘aws_http_header_block’ has not been declared
                         [](Crt::Http::HttpStream &, aws_http_header_block, const Crt::Http::HttpHeader *, std::size_t) {
                                                     ^~~~~~~~~~~~~~~~~~~~~

I cannot find the declaration of aws_http_header_block anywhere.

That's a fairly recent addition to the http API.  I would guess either
(1) You have a too-old snapshot of aws-cpp-crt or
(2) Our versioning links between the v2 SDK and the CRT are out of sync.
Looking at your original steps, I would try getting the v0.5.4 of the cpp-crt.  I think our README is still listing v0.5.3 which is where the confusion got introduced.

@bretambrose Thanks! I've tried v0.5.4. Still no luck though. New errors appeared:

HEAD is now at eefe2a6 Fixed mixed shared/static build closures. (#22)
[ 42%] No patch step for 'AwsCCompression'
[ 43%] No update step for 'AwsCCompression'
[ 45%] Performing configure step for 'AwsCCompression'
-- The C compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/lib/ccache/cc
-- Check for working C compiler: /usr/lib/ccache/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdbool.h
-- Looking for stdbool.h - found
-- Performing Test HAS_WGNU
-- Performing Test HAS_WGNU - Failed
-- Performing Test HAVE_SYSCONF
-- Performing Test HAVE_SYSCONF - Success
-- Performing Test HAS_SANITIZERS
-- Performing Test HAS_SANITIZERS - Failed
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
CMake Error at /tmp/xxx/B/lib/aws-c-common/cmake/aws-c-common-config.cmake:7 (include):
include could not find load file:
/tmp/xxx/B/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake

Call Stack (most recent call first):
CMakeLists.txt:74 (find_package)

It tries to include the .../static/... cmake file while the build type is shared.

Can you list the current set of steps you are executing (from a fresh install)?

Sorry cmake caching is hopelessly broken.... can you wiipe out the old build and try again? I think it’s in deps_build in your build directory.
Sent from my iPhone

On Oct 14, 2019, at 2:30 PM, dbmoderro<EMAIL_ADDRESS>wrote:
@bretambrose Thanks! I've tried v0.5.4. Still no luck though. New errors appeared:
HEAD is now at eefe2a6 Fixed mixed shared/static build closures. (#22)
[ 42%] No patch step for 'AwsCCompression'
[ 43%] No update step for 'AwsCCompression'
[ 45%] Performing configure step for 'AwsCCompression'
-- The C compiler identification is GNU 7.4.0
-- Check for working C compiler: /usr/lib/ccache/cc
-- Check for working C compiler: /usr/lib/ccache/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stdbool.h
-- Looking for stdbool.h - found
-- Performing Test HAS_WGNU
-- Performing Test HAS_WGNU - Failed
-- Performing Test HAVE_SYSCONF
-- Performing Test HAVE_SYSCONF - Success
-- Performing Test HAS_SANITIZERS
-- Performing Test HAS_SANITIZERS - Failed
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Check if compiler accepts -pthread
-- Check if compiler accepts -pthread - yes
-- Found Threads: TRUE
CMake Error at /tmp/xxx/B/lib/aws-c-common/cmake/aws-c-common-config.cmake:7 (include):
include could not find load file:
/tmp/xxx/B/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake
Call Stack (most recent call first):
CMakeLists.txt:74 (find_package)
It tries to include the .../static/... cmake file while the build type is shared.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.

@bretambrose @JonathanHenson I do a clean build inside a temporary empty directory with the following commands:
git clone --branch v0.5.4 https://github.com/awslabs/aws-crt-cpp.git
git clone https://github.com/awslabs/aws-iot-device-sdk-cpp-v2.git

# installation directory
B="$PWD/B"

mkdir aws-crt-cpp-build
cd aws-crt-cpp-build

cmake -DCMAKE_INSTALL_PREFIX="$B" -DCMAKE_PREFIX_PATH="$B" -DBUILD_SHARED_LIBS=ON -DBUILD_DEPS=ON ../aws-crt-cpp
cmake --build . --target install
cd ..

mkdir aws-iot-device-sdk-cpp-v2-build
cd aws-iot-device-sdk-cpp-v2-build

cmake -DCMAKE_INSTALL_PREFIX="$B" -DCMAKE_PREFIX_PATH="$B" -DBUILD_SHARED_LIBS=ON ../aws-iot-device-sdk-cpp-v2
cmake --build . --target install

Still no luck, it fails with the error mentioned above:

include could not find load file:
/tmp/xxx/B/lib/aws-c-common/cmake/static/aws-c-common-targets.cmake

Sorry, it's v0.5.5 you'll want.  It fixed a static/dynamic library mismatch with compression.

@bretambrose Thanks! 0.5.5 did the job. I guess it would be great to update the README file.
Are there any examples how to use aws-crt-cpp or aws-iot-device-sdk-cpp-v2 to publish an MQTT message in C++ in particular. I'm trying to compile the following code:
    Io::EventLoopGroup eventLoopGroup(2);
    Io::DefaultHostResolver defaultHostResolver(eventLoopGroup, 1, 5);
    Io::ClientBootstrap bootstrap(eventLoopGroup, defaultHostResolver);

    MqttClientConnectionConfig config =
            MqttClientConnectionConfigBuilder("", "")
            .WithEndpoint("")
            .WithPortOverride(1)
            .WithCertificateAuthority("")
            .Build();

I link against -laws-crt-cpp, however it says

/usr/bin/ld: main.o: undefined reference to symbol 'aws_mem_release'
//opt/aws-v2/lib/libaws-c-common.so.0unstable: error adding symbols: DSO missing from command line

Basic pub/sub to an mqtt server can be seen in the CRT samples:
https://github.com/awslabs/aws-crt-cpp/blob/master/samples/mqtt_pub_sub/main.cpp
The Iot SDK is an additional layer on top of the CRT for AWS Iot specific services like Jobs, Shadows, Greengrass, etc...

Hmmm.... cmake should be handling that for you... it’s not intentional. We need to get to the bottom of that and fix it.

One last question: are you using cmake and find-package (on the aws crt) when building your own executable or are you building in a different manner?  Like Jonathan said, if you use cmake idiomatically (if such a thing could be said to exist) the linking setup should only require the crt and not the tree of aws-c-* dependencies underneath it.

@bretambrose I use qmake with Qt. Hence no cmake features :) . It would be great to have a note about that in the README. E.g. how to link against aws-crt in cmake-based projects, and how to link w/o using cmake. Thanks anyways.

Ah.... that makes sense, we didn’t realize you weren’t using cmake all the way up. We can add a sample link line to the readme if that would help:

You need to set CMAKE_PREFIX_PATH to where the crt's artifacts were installed (/usr here).

The main problem is that almost all AWS packages use non-standard CMake paths. In openSUSE/SLE, I always have to patch all CMakeLists.txt of every AWS package we ship.
The correct folder for the cmake files is $LIBDIR/cmake/$PACKAGE, not ${LIBRARY_DIRECTORY}/${PROJECT_NAME}/cmake/.
When you use proper cmake paths, you can also this part in each CMakeLists.txt:
# This is required in order to append /lib/cmake to each element in CMAKE_PREFIX_PATH
set(AWS_MODULE_DIR "/${CMAKE_INSTALL_LIBDIR}/cmake")
string(REPLACE ";" "${AWS_MODULE_DIR};" AWS_MODULE_PATH "${CMAKE_PREFIX_PATH}${AWS_MODULE_DIR}")
# Append that generated list to the module search path
list(APPEND CMAKE_MODULE_PATH ${AWS_MODULE_PATH})


crochet.core cannot be debugged with user-level tools

This is a really unfortunate consequence of packages not supporting mutual dependencies. Everything depends on crochet.core, including crochet.debug, consequently crochet.core cannot have any dependencies. Due to the strict capabilities on open coupled with dependencies, it's not possible for core to open the debugging package.
This will require some more thinking around both debugging tools and the roles of dependencies, capabilities, and provided services.
Also marginally related to #10.

This is addressed by the tracing package. However, for debugging tests, it's still necessary to allow them to be ran from the playground (which is in the roadmap anyway).


feat: move sql lab save and copy buttons

SUMMARY:
In all cases:
On an Unsaved Query:

Show “Save As” button
** This opens the Save Query modal

On a saved query:

Show “Save” button
** This opens the Save Query modal
Copy Link button is active and shows tooltip
Copy Link copies a link to the clipboard
Confirmation toast shows after user has copied the link

When the {{SHARE_QUERIES_VIA_KV_STORE}} feature flag is enabled:
User has the ability to copy a share link for an unsaved query
On an Unsaved Query:

Copy Link button is active and shows tooltip
Copy Link copies a link to the clipboard
Confirmation toast shows after use has copied the link

When the {{SHARE_QUERIES_VIA_KV_STORE}} feature flag is disabled:
On an unsaved query:

Copy Link is disabled and shows tooltip about saving first

BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF
Before:

After:

TEST PLAN
jest tests should pass.
ADDITIONAL INFORMATION

[ ] Has associated issue:
[x] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

Codecov Report

Merging #12069 (d5d648d) into feat-sql-toolbar (16d47e0) will decrease coverage by 14.80%.
The diff coverage is 56.81%.

@@                  Coverage Diff                  @@
##           feat-sql-toolbar   #12069       +/-   ##
=====================================================
- Coverage             67.54%   52.73%   -14.81%
=====================================================
  Files                   956      437      -519
  Lines                 46963    15692    -31271
  Branches               4578     4055      -523
=====================================================
- Hits                  31719     8275    -23444
+ Misses                15131     7417     -7714
+ Partials                113        0      -113

Flag
Coverage Δ

cypress
52.73% <56.81%> (-0.40%)
:arrow_down:

javascript
?

python
?

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

superset-frontend/src/components/Icon/index.tsx
100.00% <ø> (ø)

...erset-frontend/src/SqlLab/components/SqlEditor.jsx
47.50% <46.15%> (-5.31%)
:arrow_down:

...rontend/src/SqlLab/components/ShareSqlLabQuery.jsx
80.00% <70.00%> (-13.55%)
:arrow_down:

...erset-frontend/src/SqlLab/components/SaveQuery.tsx
62.16% <75.00%> (-25.94%)
:arrow_down:

...uperset-frontend/src/dashboard/util/dnd-reorder.js
0.00% <0.00%> (-100.00%)
:arrow_down:

...rset-frontend/src/dashboard/util/getEmptyLayout.js
0.00% <0.00%> (-100.00%)
:arrow_down:

...dashboard/components/resizable/ResizableHandle.jsx
0.00% <0.00%> (-100.00%)
:arrow_down:

.../src/dashboard/util/getFilterScopeFromNodesTree.js
0.00% <0.00%> (-93.48%)
:arrow_down:

...set-frontend/src/views/CRUD/alert/ExecutionLog.tsx
11.76% <0.00%> (-88.24%)
:arrow_down:

...src/dashboard/components/gridComponents/Header.jsx
10.52% <0.00%> (-86.85%)
:arrow_down:

... and 810 more

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 16d47e0...d5d648d. Read the comment docs.

I exited a few tests that I think would be better tested with RTL that we can focus on after the break.

@hughhhh @betodealmeida this is ready for review

retry cypress


Invalid codegen for multiple instance variable setting

Test case:
class Cls
    def initialize()
        @a = 0
        @b = 1

        set_values
        check_state
    end

    def set_values(c=2)
      @a = @b = c
    end

    def check_state
      if(@a != @b)
        puts "Invalid state"
      end
    end
end

Cls.new()

Expected behavior (and CRuby 3.0.1p64 behavior): Nothing is output
Actual behavior MRuby git HEAD: "Invalid state" is output
mrbc output:
irep 0x1d6e7e0 nregs=4 nlocals=3 pools=0 syms=2 reps=0 ilen=20
local variable names:
  R1:c
  R2:&
file: util.rb
   10 000 OP_ENTER      0:1:0:0:0:0:0
   10 004 OP_JMP                010
   10 007 OP_JMP                012
   10 010 OP_LOADI_2    R1                      ; R1:c
   11 012 OP_SETIV      @b      R1              ; R1:c
   11 015 OP_SETIV      @a      R3
   11 018 OP_RETURN     R3

Note that @a is getting set by R3 which is uninitialized in the scope of this routine.
This bug does not exist for non-IV a/b and it does not exist if the variables are set sequentially. I have not checked for class variables or global variables if a similar issue exists.

Thanks for the quick bug fix :+1:

Sorry for the silly bug.


Update process interface interface

With this, we update the process and cross-section interface to adopt the new phase space points. This solved #57.
TODOs

[x] update tests for process interface
[x] update test implementation for processes
[x] update process interface description
[x] update tests for cross-section and probability
[x] update building of cross sections and probabilities
[x] update perturbative compton
[x] old interface (incl. versions for vectors of inputs)
[x] cleanup

@AntonReinhard I think this is ready for review. You are right, deleting lots of code is a lot of fun 😆
BTW: In contrast to #59 the functions _incoming_flux and _total_probability can not be defined on PhaseSpacePoint, because the latter always contain outgoing momenta, which these functions do not depend on. In general, there are cases, where one wants a PhaseSpacePoint but only with the incoming particles: an IncomingPhaseSpacePoint, maybe.

In contrast to #57 the functions _incoming_flux and _total_probability can not be defined on PhaseSpacePoint, because the latter always contain outgoing momenta, which these functions do not depend on. In general, there are cases, where one wants a PhaseSpacePoint but only with the incoming particles: an IncomingPhaseSpacePoint, maybe.

That makes sense. I think it would be nice to have an IncomingPhaseSpacePoint, but if that one exists, then an OutgoingPhaseSpacePoint probably should too, and having three times the essentially same struct seems bad for code duplication.
I think there are a few options to consider:

Have the current PhaseSpacePoint be made up of an incoming and an outgoing PhaseSpacePoint. Those two should be symmetric, so only one definition is really needed. Problem: There'll likely be more memory footprint and checking required, since a PhaseSpacePoint would need to make sure that the process, model, and ps_def of the incoming and outgoing parts are the same. I think this would also nicely allow to have a product definition of vectors of incoming and outgoing halves.
Allow our PhaseSpacePoint to have 0 length in or out particle vectors. We could then add some functions like has_incoming and has_outgoing to make sure the required parts are given where needed. Since the length of the vectors are part of the type info it should be possible to dispatch on this too, though I'm not sure if partial template specializations are a thing in Julia. Otherwise, the function definitions might get long again... Something like these:

const IncomingPSP = PhaseSpacePoint{PROC, MODEL, PSDEF, PSELT, IN_P, 0} where {PROC, MODEL, PSDEF, PSELT, IN_P}
const OutgoingPSP = PhaseSpacePoint{PROC, MODEL, PSDEF, PSELT, 0, OUT_P} where {PROC, MODEL, PSDEF, PSELT, OUT_P}

There might be more ideas, but these two came to mind.

In contrast to #57 the functions _incoming_flux and _total_probability can not be defined on PhaseSpacePoint, because the latter always contain outgoing momenta, which these functions do not depend on. In general, there are cases, where one wants a PhaseSpacePoint but only with the incoming particles: an IncomingPhaseSpacePoint, maybe.

That makes sense. I think it would be nice to have an IncomingPhaseSpacePoint, but if that one exists, then an OutgoingPhaseSpacePoint probably should too, and having three times the essentially same struct seems bad for code duplication.
I think there are a few options to consider:

Have the current PhaseSpacePoint be made up of an incoming and an outgoing PhaseSpacePoint. Those two should be symmetric, so only one definition is really needed. Problem: There'll likely be more memory footprint and checking required, since a PhaseSpacePoint would need to make sure that the process, model, and ps_def of the incoming and outgoing parts are the same. I think this would also nicely allow to have a product definition of vectors of incoming and outgoing halves.
Allow our PhaseSpacePoint to have 0 length in or out particle vectors. We could then add some functions like has_incoming and has_outgoing to make sure the required parts are given where needed. Since the length of the vectors are part of the type info it should be possible to dispatch on this too, though I'm not sure if partial template specializations are a thing in Julia. Otherwise, the function definitions might get long again... Something like these:

const IncomingPSP = PhaseSpacePoint{PROC, MODEL, PSDEF, PSELT, IN_P, 0} where {PROC, MODEL, PSDEF, PSELT, IN_P}
const OutgoingPSP = PhaseSpacePoint{PROC, MODEL, PSDEF, PSELT, 0, OUT_P} where {PROC, MODEL, PSDEF, PSELT, OUT_P}

There might be more ideas, but these two came to mind.

Understood! I agree that having two distinct types for incoming and outgoing phase spaces adds some duplications and boilerplate code.
Having the special cases in the current implementation, which switch off the in- or out-channel seems reasonable. But we should be careful that we do not end up checking for has_incoming over and over again because this adds lots of indirections. Intuitively, having some type of product type sounds like the best solution, but I currently can't see the solution of the cost-benefit calculation.

Having the special cases in the current implementation, which switch off the in- or out-channel seems reasonable. But we should be careful that we do not end up checking for has_incoming over and over again because this adds lots of indirections.

Since we have all the information in the type info now, it should be enough to dispatch on IncomingPSP and have any necessary checks done at compile time. I think I like the idea of the aliases.


refactor by using ghutils module

much good, thankee @ralphtheninja!

Oh hold on. I just created this commit on top of old master. Let me rebase.

actually, this is not applying cleanly, can you rebase or something?

Working on it. See above :)

@rvagg There we go.
Q: I need some functionality to create releases and upload assets. Do you have that use case laying around somewhere or should that be a separate module or in this module?

@ralphtheninja no I don't have any examples of that, to be honest I've never even touched that API so I have no opinions, happy for you to make additions here or otherwise though

:+1:


LGG.RdAta

So I was able to do this... however I want to be able to analyze the data in the same way its done here:
https://bioconductor.org/packages/release/bioc/vignettes/maftools/inst/doc/maftools.html
do I need to convert the LGG.Rdata into a maf file?
Or in other words I want to analyze the data for LGG in the same way that you have done for in the maftools file (R and man folders)... is this possible to do?
This is what I have done in R:

TCGAmutations::tcga_load(study= "LGG")
Loading objects:
tcga_lgg_mc3
Successfully loaded TCGA LGG!
Please cite https://doi.org/10.1016/j.cels.2018.03.002 for MAF source.
tcga_lgg_mc3
An object of class  MAF
ID summary   Mean Median
1:             NCBI_Build      NA     NA     NA
2:                 Center      NA     NA     NA
3:                Samples     511     NA     NA
4:                 nGenes   11767     NA     NA
5:        Frame_Shift_Del     921  1.806      1
6:        Frame_Shift_Ins     325  0.637      0
7:           In_Frame_Del     372  0.729      0
8:           In_Frame_Ins      14  0.027      0
9:      Missense_Mutation   24953 48.927     23
10:      Nonsense_Mutation    1729  3.390      1
11:       Nonstop_Mutation      18  0.035      0
12:            Splice_Site     728  1.427      0
13: Translation_Start_Site      39  0.076      0
14:                  total   29099 57.057     28
getSampleSummary(x=tcga_lgg_mc3)
Tumor_Sample_Barcode Frame_Shift_Del Frame_Shift_Ins In_Frame_Del In_Frame_Ins
1:         TCGA-DU-6392              56             133            1            0
2:         TCGA-DU-6407               6               0            2            0
3:         TCGA-HT-8564              52              10           24            0
4:         TCGA-DU-7294               0               0            0            0
5:         TCGA-DU-7298               2               0            0            0

506:         TCGA-HT-7680               0               0            0            0
507:         TCGA-HT-8558               0               0            0            0
508:         TCGA-HT-8107               0               0            0            0
509:         TCGA-P5-A5EY               0               0            0            0
510:         TCGA-P5-A5F6               0               0            0            0
Missense_Mutation Nonsense_Mutation Nonstop_Mutation Splice_Site
1:              9642               664                8         262
2:              1482                53                0          69
3:               337                20                0           8
4:               323               104                2          11
5:               212                65                0           8
506:                 2                 0                0           0
507:                 2                 0                0           0
508:                 1                 0                0           0
509:                 1                 0                0           0
510:                 1                 0                0           0
Translation_Start_Site total
1:                      6 10772
2:                      0  1612
3:                      0   451
4:                      0   440
5:                      2   289
506:                      0     2
507:                      0     2
508:                      0     1
509:                      0     1
510:                      0     1

Hi,
Those are ready to use pre-compiled maf objects. i.e, you don't have to do anything - just use maftools commands on them and they should work. You dont have to read them or convert them to anything.
For example:
TCGAmutations::tcga_load(study= "LGG")
lollipopPlot(maf = tcga_lgg_mc3, gene = "TP53")

load('LGG.RData')
slotNames(tcga_lgg_mc3)
[1] "data"                           "variants.per.sample"            "variant.type.summary"
[4] "variant.classification.summary" "gene.summary"                   "summary"
[7] "maf.silent"                     "clinical.data"

So I loaded the LGG data.... but now I want to do the same things that are on the (https://bioconductor.org/packages/release/bioc/vignettes/maftools/inst/doc/maftools.html#14_support_and_acknowledgements website), ie I want to combine the clinical and maf file together... can you please help me? ....
laml.maf = system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools') #path to TCGA LAML MAF file
laml.clin = system.file('extdata', 'tcga_laml_annot.tsv', package = 'maftools') # clinical information containing survival information and histology. This is optional
laml = read.maf(maf = laml.maf, clinicalData = laml.clin)
I know how to get the maf file out of the RData using the write.mafSummary function... but how do i extract the clinical data..
thank you and sorry for the confusion

Hi,
Once again, you don't have read the data - as they have already read and stored as maf objects. Just load the object and pass it to maftools functions.
Instead of laml as in example, you would be passing  tcga_lgg_mc3.
But if you are trying to manipulate clinical data, you can use getClinicalData function to extract the associated clinical information.


Write scraper for PACER NEF emails that can pull out the links and anything else

One of the first things we're going to need to do is start parsing the NEF emails for links and other metadata that we can grab. I'll attach a few example emails in a sec.

OK, getting these emails mostly anonymized took awhile, sorry for the delay. Here's two HTML emails (in a single file). I'm told there's also an option for plaintext emails, but I suspect few people actually want that and I guess we can put it off until the future if nobody actually turns that on (we'll get failing examples of those eventually if people are using it).
nef-examples.mbox.txt

As far as fields for these go, I'd start by looking at the field names in the test assets directories, where we have dockets as HTML parsed to JSON. For example, these test fixtures probably have most if not all of the field names you need:
https://github.com/freelawproject/juriscraper/tree/master/tests/examples/pacer/dockets/district
And you can see how those are usually used, here:
https://github.com/freelawproject/juriscraper/blob/master/tests/local/test_DocketParseTest.py#L115
The parser itself might live in juriscraper.pacer.nef_email.py.


Inconsistent results when queries split by time

So I'm trying to pull a dataset across 7 years for a modest query. I first tried one request with the standard pool size and I got around 40k results. As I increased the pool size, the number of results continually increased to maximum (about 45k after setting the pool size to 150). I got curious, and split the request in two by date, and ended up seeing the results increase yet again. (I think it was 49k?)
I split the requests into smaller and smaller time periods and kept getting more results (upwards of 60k), so I figured, why not program a for loop to make the pull request in monthly increments. I set the pool size back down to 28 per the recommendation in the readme, and I ended up only pulling about 37k results. Setting it to 31, gave me 39k results.
Does twitterscraper operate differently in a for loop than it does when hard coded and run?

Did you find an optimal time period for sampling? Did you try sampling by weeks instead of months? Sorry this doesn't answer your question, but I'm working on something similar and wanted to see


Authentication Api endpoint table

Depends on issue #43
Add an authentication endpoint table here, when the controller is done.

Closed in #33


Jumps to wrong monitor  when one of the monitors is rotated

Instead of jumping between monitors 2 and 3, in either direction, in the following layout, the mouse jumps to monitor 1...

Note that the rotated monitor, i.e., monitor 3, is configured as "Portrait (flipped)".
Configuration: UnStick and Jump are enabled.

Can you be more specific, describing step by step the mouse movement, then explain what happens and then what you expect to happen? It's confusing to me since it's possible that my interpretation of what you may consider to be "wrong" functionality may be intended by others.

The issue regards moving between the highlighted edges...


[Bug]

Describe the bug
When using the discord webhook, I noticed that the callsign, and the officers name and callsign are conjoined together.
To Reproduce
Steps to reproduce the behavior:

Set a valid webhook URL within the admin panel.

Look at the readout from the discord webhook

Expected behavior
A space or a space and a vertical line separating the officers name and callsign.
Screenshots
If applicable, add screenshots to help explain your problem.
https://prnt.sc/10ic0b9
^ screenshot
Desktop (please complete the following information):
Discord with CAD Version 1.4.0
Additional context
N/A

Whoops, that’s my bad. I’ll fix it in the next release:)


Need help on changing support_website and support_website_text string

Description of problem:
I am able to change the logo to my custom image by following skin-simple readme
But I want o customize both support_website and support_website_text string also.
How reproducible:
Steps to Reproduce:

skin.js
From peeking at https://github.com/ManageIQ/manageiq-ui-service/blob/master/client/app/core/appliance-info.service.spec.js
I came up with following skin.js

[root@miqr2wk01 skin-test]# pwd
/opt/manageiq/manageiq-ui-service/skin-moto
[root@miqr2wk01 skin-test]#

[root@miqr2wk01 skin-moto]# more skin.js
(function() {
  'use strict';

  var text = {
    app: {
      name: 'Test ManageIQ Service UI', // app name
    },
    login: {
      brand: 'Test  VM Self-Service Catalog ', // login screen
    },
    applianceInfoData: {
     product_info: {
      'support_website': 'http://test.com/issues', // Using
      'support_website_text': 'Test  ManageIQ Support'
     },
    },
  };
  angular.module('app.skin', [])
    .constant('Text', text)
    .config(configure);

  /** @ngInject */
  function configure(routerHelperProvider, exceptionHandlerProvider) {
    exceptionHandlerProvider.configure('[SUI] '); // error prefix
    routerHelperProvider.configure({docTitle: 'Lenovo ManageIQ Service UI: '}); // page title
  }
})();

2. rebuild

``
cd /opt/manageiq/manageiq-ui-service;yarn build

<snipped>
Child extract-text-webpack-plugin ../node_modules/extract-text-webpack-plugin/dist ../node_modules/css-loader/index.js?importLoaders=1&sourceMap=true!../node_modules/sass-loader/lib/loader.js??ref--5-3!assets/sass/styles.sass:
     66 assets
      [14] ../node_modules/css-loader?importLoaders=1&sourceMap=true!../node_modules/sass-loader/lib/loader.js?{"data":"$img-base-path: '/ui/service/'","sourceMap":true,"includePaths":["/opt/manageiq/manageiq-ui-service/client/assets/sass","/opt/manageiq/manageiq-ui-service/node_modules/bootstrap-sass/assets/stylesheets","/opt/manageiq/manageiq-ui-service/node_modules/patternfly/dist/sass/patternfly","/opt/manageiq/manageiq-ui-service/node_modules/font-awesome/scss","/opt/manageiq/manageiq-ui-service/node_modules/@manageiq/font-fabulous/assets/stylesheets"]}!./assets/sass/styles.sass 1.9 MB {0} [built]
            factory:125ms building:5899ms = 6024ms
        + 81 hidden modules
Done in 124.65s.
[root@miqr2wk01 manageiq-ui-service]#

login to /ui/sevice again to check the Site(square) icon

Actual results:

Expected results:
MangeIQ.org text got changed to "Test ManageIQ Support"
Additional info:

@AllenBW

I change the text in appliance-info.service.spec.js

[root@miqr2wk01 manageiq-ui-service]# git diff ./client/app/core/appliance-info.service.spec.js
diff --git a/client/app/core/appliance-info.service.spec.js b/client/app/core/appliance-info.service.spec.js
index f42601c..02dd902 100644
--- a/client/app/core/appliance-info.service.spec.js
+++ b/client/app/core/appliance-info.service.spec.js
@@ -3,8 +3,8 @@ describe('Appliance Info Service', () => {
   const applianceInfoData = {
     'product_info': {
       'copyright': 'Copyright (c) 2017 ManageIQ. Sponsored by Red Hat Inc.',
-      'support_website': 'http://www.manageiq.org',
-      'support_website_text': 'ManageIQ.org'
+      'support_website': 'http://mytest.com/issues',
+      'support_website_text': 'My MIQ Support'
     },
     'identity': {
       'name': 'Administrator',
[root@miqr2wk01 manageiq-ui-service]#

The do "cd /opt/manageiq/manageiq-ui-service;yarn build"
The text in About icon still not changed.

anything .spec.js is a test file, sadly won't change anything 😭
I believe the setting you are looking for is in the ops-ui under Configuration
if yah scroll to the bottom yah should see something that looks like this:

@AllenBW
I located the "Custom Support URL" and make changes to it but it doesn't reflect to /ui/serivce GUI.
Do I need to restart evm or httpd ?
Also this doesn't make sense to me, since ui-classic and ui-service resides in different paths.

Yep!  SUI runs off the api served by the default server, which provides the support url and description (we get this info when yah log into the sui).  It isn't a skinable part. Ok ok so I directed you to the wrong custom support url.. ACTUALLY you to:
root region server -> help tab and you'll see something like this:

lemme know if that works for yah @tjyang

@AllenBW, I think this is a bug, IMHO.
To rule out complexity of multi appliances in same region, I did the test on another gapri-2 with all-in-one roles on same appliance called wk04.
All the settings to set support URL won't past on to ui/service node.js program.

Changes in classic ui Help Menu under configuration, region setting.

Custom Support URL change.

Displayed.

@tjyang sui displays what it is provided, this is a bug for elsewhere, but before submitting I would clear your browser session storage and maybe restart the server...
ss of the source info...

@AllenBW
This is what did from a fresh downloaded  Gapri-2 vmware image and also browse it from different computer.

I did all the web page URL redirecting to https://www.cnn.com

Classic-UI result

Service-UI result

@tjyang again, not an SUI issue as it correctly displays what it is supplied.. would recommend submitting an issue against https://github.com/ManageIQ/manageiq-api
gonna close this for now, but please feel free to reference it in the future


[core] Implement consistent disabled state

[x] I have followed (at least) the PR section of the contributing guide.

Closes #19343
Screenshots of changes made
Note that by using opacity rather than color or backgroundColor, we can still see the components in color.

Unresolved
General
In general, I'm not quite sure when to use theme.palette.action.disabled and .disabledBackground opposed to .disabledOpacity. I changed the hardcoded disabled opacity values and adapted the different inputs to keep their color when disabled (as seen in the screenshot from the material design states website).
Should we always use disabledOpacity? Is there a reason not to use it?
Components where theme.palette.action.disabledBackground is used for disabled state:

Accordion
Button
Fab

Components where theme.palette.action.disabled is used for disabled state:

Button
ButtonGroup
Fab
Icon
NativeSelect
OutlinedInput
SvgIcon
PaginationItem

Are the uses of these correct or should we use theme.palette.action.disabledOpacity instead?
Below I've checked out the Accordion component in more detail, including screenshots of the different implementations (background vs opacity).
Accordion
The Accordion component is not supported by the official google material design specs.
How should the disabled state look like?
At the moment it's setting the backgroundColor to disabledBackground, which looks like this:

We could also follow the other changes made in this PR and set the opacity instead, which would look like this (depending on the background element color):

Or we combine the backgroundColor and the opacity:

Switch
The $disabled class is applied to the switchBase, which is the knob. To display the disabled switch according to the material design spec, we need to set the opacity on the root class. As there is no way in CSS to do something like $root:has( > $switchBase$disabled), we need a breaking change here.
Spec:

Our version:

When should we change the colors vs the change of opacity? The Material Design specification doesn't provide a lot of relevant information about it. I couldn't find more references online, one on a11y: https://uxdesign.cc/is-it-ok-to-grey-out-disabled-buttons-8afa74a0fae. One argument for using opacity: https://uxmovement.com/buttons/why-you-shouldnt-gray-out-disabled-buttons/.
Pros of opacity:

Simpler for overrides of complex components, e.g. switch.
A reminder of what the active state looks like.

Pros of color:

No confusion possible, it's disabled, the diff between the disabled state and active state is strong.

While the Material Design spec "allows" selection control to use opacity, I have doubts that it's an improvement.
Looking at https://ant.design/components/checkbox/, https://evergreen.segment.com/components/checkbox, https://developer.microsoft.com/en-us/fluentui/#/controls/web/checkbox, https://gestalt.netlify.app/Checkbox we might not want to use inheritance, as mentioned in the specification, it's only an option available, not mandatory: "Components can inherit a disabled state".

For the accordion, I have always found the current implementation ugly (too dark). Happy to use the opacity.

When should we change the colors vs the change of opacity? The Material Design specification doesn't provide a lot of relevant information about it

Always opacity: https://material.io/design/interaction/states.html#disabled

The language they use is confusing:
They start with opacity which suggest it's the default approach:

Disabled states are displayed at 38% opacity of the enabled state.

But then, they put color change at the dame level than opacity:

Disabled states can also indicate they are not interactive through color changes and reduced elevation.

And finally, they forbid opacity for buttons and a couple more components:

Disabled states cannot be inherited by: floating action buttons (FABs), bottom and side sheets, dialogs, menus, tooltips, and alerts, or navigational components (such as app bars, tabs, bottom navigation and steppers).

But then, they put color change at the same level than opacity:

No, they add it as a possibility. They're not saying opacity is the only way. It's the default approach but a color change is also allowed.

And finally, they forbid opacity for float action buttons and a couple more components:

They forbid inheritance of disabled states not opacity. This statement is more about semantics than visuals and give examples why that is:

If the action represented in the FAB is unavailable, the FAB should not appear in the composition.

i.e. the listed components should not implement this state. If they're disabled they should not appear at all.
It's important to read these documents carefully. The chose words are used for a reason not for decoration.

They forbid inheritance of disabled states not opacity

What's the difference between "inheritance" and "opacity"?
Looking at their visuals:

What they describe as implementing inheritance looks exactly like using opacity. So I have understood them as synonyms.

@eps1lon Ok, so to summarize what the spec says: both opacity and color are available options?

What's the difference between "inheritance" and "opacity"?

These words aren't related at all. "inheritance of a state" and "opacity" are correlated. If you forbid "inheritance of state" you can still allow changing of opacity. If you forbid opacity then you don't necessarily forbid inheritance of state. Just don't interpret the text and take it literal. Seems like you're replacing multiple words in the text which obviously can create confusion. By sticking to the text you should see things much clearer.

both opacity and color are available options, and it's up to the implementation to decide?

No, it's

@eps1lon Ok, so to summarize what the spec says: both opacity and color are available options, and it's up to the implementation to decide?

It looks like there's something lost in translation to French.

Disabled states are displayed at 38% opacity of the enabled state.

This is always true.
In the following sentence they say

Disabled states can also indicate they are not interactive through color changes and reduced elevation.

"can also" ("zusätzlich" in German) i.e. "in addition" or "Disabled states have lowered opacity. Additionally they MAY indicate they are disabled through color changes and reduced elevation" (e.g. a disabled button has reduced elevation).
These sentences do not contradict each other. The second one builds on top of the first one.

@eps1lon In, we have the enabled and disabled state.

How is #C1C1C1 38% of opacity with #4D00EA?

How is #C1C1C1 38% of opacity with #4D00EA?

Why are you asking me this question?

@eps1lon Sorry, I was talking to myself, I was trying to share the missing step of the reflection to make the spec sound (for myself). Hopefully, I have made it clearer for people wondering too. If I have created confusion, then I have would have failed.

@LorenzHenk For the switch, do you see a way to resolve the current opacity issue?

@LorenzHenk Maybe we should break down the effort into multiple pull requests:

start by replacing hard-coded values with design tokens. It would already bring value and it will be easier to merge.
revisit the usage of opacity vs background colors and colors.

..., how is moving the opacity to the root element a breaking change? Should we use this as an opportunity to redesign the component (rewrite)?

Because in the documentation it says that the disabled class is applied to the internal SwitchBase component (excerpt below, api page here).

Pseudo-class applied to the internal SwitchBase component's disabled class.

If we apply the disabled class to the root instead, wouldn't that be a breaking change?

1. start by replacing hard-coded values with design tokens. It would already bring value and it will be easier to merge.

Sure, I can do that.

Sure, I can do that.

Great, thanks for solving this part with #22570, I have also done #22566 to simplify the logic a bit.
From what in understand, the last important step is to handle the usage of theme.palette.grey[400].
Regarding moving from the usage of CSS background color + color to opacity, I think that we can keep the discussion open but not move forward with it until we have a compeling argument for. The specification allows us a lot of freedom in the implementation.

@LorenzHenk Thanks for the investigation! I'm closing, I think that we will need to revamp the whole palette color, all at once before v5-beta. I have tried to push the effort but failed. I think that handling the disabled state, alone, won't work. shouldn't we have a greyscale available in the palette that works no matter the light-dark theme? The disabled color opacity doesn't work with the slider and switch. Do we even need the colors to have opacity in the first place? The slider is documented as grey in the spec, so does the native input range behave: https://material.io/components/sliders#continuous-sliders.