Unbounded actions in datasets

Hi,
I find that action values in some datasets (e.g., BallCircle, CarCircle, DroneCircle) are out of bounds of environments (i.e., [-1, 1]). However, the actions in D4RL are bounded, and when using train_trpol_expert.py to collect new data, we also get bounded actions.
So I want to know if everything is okay. Should I directly clip the actions when I use the datasets?

Hi,
I find that action values in some datasets (e.g., BallCircle, CarCircle, DroneCircle) are out of bounds of environments (i.e., [-1, 1]). However, the actions in D4RL are bounded, and when using train_trpol_expert.py to collect new data, we also get bounded actions.
So I want to know if everything is okay. Should I directly clip the actions when I use the datasets?

@liuzuxin @Ja4822 @HenryLHH @yihangyao Same issues here.  May I know how do you resolve it? @qianlin04

Hi @zgong11 and @qianlin04 , sorry for the oversight. For some BulletSafetyGym environment, there are indeed such issues. You can either clip the actions in the datasets or just ignore them, because the BulletSafetyGym environment will clip the actions to the correct range [-1, 1], as shown here.

Hi @liuzuxin , thanks for your reply. Actually, I'm a bit confused about the difference between the publicly available datasets and the ones generated by code, but there don't seem to be any unexpected issues when I directly use the clipped actions in my project.


[WIP] Add Rotate UI #112

ref: https://github.com/pdfme/pdfme/issues/112

This Rotate UI is stuck by Rotate problem on multiline text #142
First Fix  #142 , after that  Reimplement Rotate UI


VSDX file download for diagram

Please provide a VSDX file download for the SVG diagram as you do for the other 3 reference architectures for web apps, https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/#web-applications.
Thanks

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

ID: df354e21-f263-30a9-1a5c-1460f2bf16a9
Version Independent ID: 73d2f19b-00a0-fe4d-7042-15d27f586565
Content: Web application monitoring on Azure
Content Source: docs/reference-architectures/app-service-web-app/app-monitoring.md
Service: architecture-center
Sub-service: reference-architecture
GitHub Login: @adamboeglin
Microsoft Alias: pnp

Hi @softwarecraft - Thank you for your feedback! We have assigned this issue to the author to review further and take the right course of action.

AB#160245 - Thanks for reporting - this issue is under review

@softwarecraft , you could download the image (righ click, save image as) as an SVG and then pull in to Visio on your end.


docs: fix typo in defineProduct example

🔗 Linked issue

❓ Type of change

[x] 📖 Documentation (updates to the documentation, readme, or JSdoc annotations)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] 🧹 Chore (updates to the build process or auxiliary tools and libraries)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
Update the defineProduct example to use appropriate syntax and format for offers.

📝 Checklist

[ ] I have linked an issue or discussion.
[x] I have updated the documentation accordingly.

Thanks!


WiFi promiscuous timestamp differs by 140+ms (IDFGH-8878)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
Arduino ESP32 version 2.0.5 based on the ESP-IDF v4.4.2
Operating System used.
Windows
How did you build your project?
Other (please specify in More Information)
If you are using Windows, please specify command line type.
CMD
Development Kit.
DOIT ESP32 DEVKIT V1
Power Supply used.
USB
What is the expected behavior?
I expect timestamps differs by 10 microseconds at most.
What is the actual behavior?
Timestamps differs by more than 140ms (140000 microseconds).
Timestamp stored in wifi_promiscuous_pkt_t->wifi_pkt_rx_ctrl_t received in wifi promiscuous rx callback function differs from micros() called immediately in that function by more than 140,000 microseconds but code is running smoothly.
Steps to reproduce.
Run the following code:
#include <WiFi.h>
#include <esp_wifi.h>

void promiscuous_rx_cb(void *buf, wifi_promiscuous_pkt_type_t type) {
  unsigned long t_cb = micros(); // local time when callback is called

  const wifi_promiscuous_pkt_t *ppkt = (wifi_promiscuous_pkt_t *)buf;
  unsigned int t_rx = ppkt->rx_ctrl.timestamp; // local time when this packet is received

  String type_str;
  switch(type){
    case WIFI_PKT_MGMT: type_str = "WIFI_PKT_MGMT"; break;
    case WIFI_PKT_CTRL: type_str = "WIFI_PKT_CTRL"; break;
    case WIFI_PKT_DATA: type_str = "WIFI_PKT_DATA"; break;
    case WIFI_PKT_MISC: type_str = "WIFI_PKT_MISC"; break;
  }

  Serial.printf("rx_cb is called: %s\t t_rx:%u t_cb: %lu, t_diff: %lu\n", type_str, t_rx, t_cb, (t_cb - t_rx));
}

void setup()
{
  unsigned long t1 = micros();
  Serial.begin(115200);
  unsigned long t2 = micros();

  wifi_init_config_t wifi_init_config = WIFI_INIT_CONFIG_DEFAULT();
  unsigned long t3 = micros();

  esp_wifi_init(&wifi_init_config);
  unsigned long t4 = micros();

  WiFi.mode(WIFI_STA);
  unsigned long t5 = micros();

  esp_wifi_set_promiscuous(true);
  unsigned long t6 = micros();

  esp_wifi_set_promiscuous_rx_cb(&promiscuous_rx_cb);
  unsigned long t7 = micros();

  ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE));
  unsigned long t8 = micros();

  Serial.printf("t1: %lu, d: %lu\n", t1, t1);
  Serial.printf("t2: %lu, d: %lu\n", t2, t2-t1);
  Serial.printf("t3: %lu, d: %lu\n", t3, t3-t2);
  Serial.printf("t4: %lu, d: %lu\n", t4, t4-t3);
  Serial.printf("t5: %lu, d: %lu\n", t5, t5-t4);
  Serial.printf("t6: %lu, d: %lu\n", t6, t6-t5);
  Serial.printf("t7: %lu, d: %lu\n", t7, t7-t6);
  Serial.printf("t8: %lu, d: %lu\n", t8, t8-t7);
}

void loop() {

}

Debug Logs.
18:55:49.198 -> t1: 33205, d: 33205
18:55:49.198 -> t2: 34503, d: 1298
18:55:49.198 -> t3: 34540, d: 37
18:55:49.198 -> t4: 52917, d: 18377
18:55:49.198 -> t5: 148575, d: 95658
18:55:49.198 -> t6: 148874, d: 299
18:55:49.198 -> t7: 148918, d: 44
18:55:49.198 -> t8: 149267, d: 349
18:55:50.681 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:1486147 t_cb: 1632695, t_diff: 146548
18:55:51.677 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:2483852 t_cb: 2630371, t_diff: 146519
18:55:52.645 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:3485173 t_cb: 3631713, t_diff: 146540
18:55:53.685 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:4484143 t_cb: 4630684, t_diff: 146541
18:55:54.647 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:5482801 t_cb: 5629336, t_diff: 146535
18:55:55.674 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:6486301 t_cb: 6632820, t_diff: 146519
18:55:56.665 -> rx_cb is called: WIFI_PKT_MGMT	 t_rx:7483587 t_cb: 7630110, t_diff: 146523

More Information.
I am working with Arduino-ESP 2.0.5 and create the issue there but was redirected here because it's ESP-IDF function: https://github.com/espressif/arduino-esp32/issues/7540
based on this issue: https://github.com/espressif/esp-idf/issues/2468
I already disabled sleep mode
based on this issue: https://github.com/espressif/esp-idf/issues/2706#issuecomment-441407932
timer is started when WiFi clock is enabled. When esp_wifi_start()/esp_wifi_set_promiscuous() is returned, the timer is started.
I stored timestamp when this method is called and it also mismatches by 2 miliseconds (148575 vs 146548) so I can't even create a correction variable.

Did you try to disable wifi power saving?
I'm getting better results if I call esp_wifi_set_ps(WIFI_PS_NONE) immediately after initializing wifi interface.
    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_wifi_init(&cfg));
    ESP_ERROR_CHECK(esp_wifi_set_ps(WIFI_PS_NONE));

@PavelDrabek The timestamp in the rx_ctrl represents the time the packet was received by the hardware, the timer is started when esp_wifi_start() is returned. And the micros() will call esp_timer_get_time(), the esp timer is started when the system starts. These two timers have different time bases.

Thanks for reporting, will close due to short of feedback, feel free to reopen with more updates.
Thanks for using our Espressif product!

C

so if i wanted to capture the actual date and time (to be displayed in wireshar) i would need to constantly call gettimeofday
like so, would that be problematic performance wise?
int r = gettimeofday(&p, NULL);
  if (r == 0) {
  	pcap_rec.pcap_rec_hdr.ts_sec=p.tv_sec;
  	pcap_rec.pcap_rec_hdr.ts_usec=p.tv_usec;
  }
  if (_sock && pcap_rec.pcap_rec_hdr.orig_len > 0) {
    if (!onSend(_sock, msg, total_size)) {
      _sock = 0;
      sniffer_stop();
    }
  }
  sniffer_packet_t sniffer_packet = sniffer_to_packet_data(pcap_rec);


Fix *[]string type

encoding/json is able to handle pointers to slices, but ffjson generates code that doesn't compile.
type Foo struct {
   Bar *[]string
}

Here's a patch to get it working.

Thank you!


Altme implents this: Interesting?

https://italia.github.io/eudi-wallet-it-docs/versione-corrente/en/index.html

Used protocols and formats have been discussed. We will eventually support SD-JWT.


⚠ Samsung has degraded performance

In 83fbf05, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 2782 ms

Resolved: Samsung performance has improved in 13f21a2.


Returning training history as a Pandas DataFrame

Currently what I'm doing is:
history = trial.run(epochs=5, verbose=0) # using Jupyter-compatible printer
pd.DataFrame.from_records(dict(v, train_samples=k[0], val_samples=k[1])
                          for k, v in history)

Another plus of the DataFrame method is that the Trial object can order metrics (e.g. loss comes before accuracy, etc.), and it can include information in addition to metrics (such as time taken per epoch, etc.).
What are your thoughts on adding Pandas as a dependency and having this changed? I'm happy to put in a PR with the code above. I also understand if you don't want to add Pandas as a dependency.

I like the idea of being able to do more with history. Ideally, the history would be an object with methods for getting data frames, numpy matrices etc. That way only the to_pandas method (or whatever it would be called) would need to import pandas, so it would only need to be a dependency in requirements.txt not setup.py. I'll have a look at doing something like this

Finally got round to coming up with a solution for this. There is now an example showing the recommended way to get a data frame from history. We've simply updated the format of history so that it is always just a list of records, this means that a data frame can be made with a simple one-liner and it is more obvious what the training / validation steps are. I hope that helps!


Bump up runtime-spec/image-spec to the latest version

v1.MediaTypeImageLayer  in latest image-spec has changed, need to be bumped up to the latest version.
This commit is only focused on bumping the vendored image-spec and runtime-spec to v1.0.0-rc2. cobra and pflag doesn't tag releases, so I'm pinning this at our currently-vendored commit. I'm not aware of any reason we can't advance this to a later pflag commit, but haven't done enough research to say for sure.
Signed-off-by: Ye Yin<EMAIL_ADDRESS>

Bumping image-spec to a tagged release sounds great to me.
On Wed, Nov 02, 2016 at 02:37:44AM -0700, Ye Yin wrote:

M vendor/github.com/opencontainers/runtime-spec/specs-go/config.go (44)
M vendor/github.com/opencontainers/runtime-spec/specs-go/state.go (2)
M vendor/github.com/opencontainers/runtime-spec/specs-go/version.go (2)

I still think we should be pinning runtime-spec 1.

@wking Updated, PTAL.

a4857bc15 looks good to me :).

Look good to me

lgtm :)

Can we merge it then? Everything is broken at the moment with this PR not merged (namely umoci).

LGTM  we could merge this.

LGTM

Aren't @coolljt0725 and @xiekeyang maintainers?
@caniszczyk PullApprove is broken (again).

@xiekeyang @coolljt0725 hi, can you merge this pr ?

On Thu, Nov 10, 2016 at 12:41:54AM -0800, Sn0rt wrote:

@xiekeyang @coolljt0725 hi, can you merge this pr ?

Neither were maintainers when this PR was last bumped [1,2], so I
suspect someone needs to kick PullApprove or @hustcat needs to
force-push with a new hash (e.g. after rebasing on master).

@hustcat  try with @wking  's suggesntion

needs to
force-push with a new hash (e.g. after rebasing on master).

@coolljt0725 rebased and force-pushed, PTAL.

Doesn't seem to have helped.  Maybe PullApprove freezes the approver set at PR creation?  @caniszczyk?

Screw this.
@coolljt0725 @xiekeyang Can one of you please just manually merge it and push it?

@cyphar  manually merge failed
Delta compression using up to 8 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (27/27), 4.83 KiB | 0 bytes/s, done.
Total 27 (delta 18), reused 5 (delta 3)
remote: Resolving deltas: 100% (18/18), completed with 16 local objects.
remote: error: GH006: Protected branch update failed for refs/heads/master.
remote: error: Required status check "code-review/pullapprove" is pending.
To https://github.com/opencontainers/image-tools
 ! [remote rejected] master -> master (protected branch hook declined)
error: failed to push some refs to 'https://github.com/opencontainers/image-tools'

it still need pullapprove

Dammit. Yeah, it looks like GitHub only lets you do manual merges if the PR has all protection checks passing. This is just getting silly now...

Maybe an admin can kick PullApprove as described in pullapprove/support#33.

LGTM

LGTM

@coolljt0725 @xiekeyang sorry for the delay on looking at this, was busy with KubeCon :)

@caniszczyk  thank you :)

Yey!


Font size / Preview

Bug Description
In editor preview of font
Expected Behaviour

Steps to Reproduce

Screenshots

Do not alter or remove anything below. The following sections will be managed by moderators only.
Acceptance Criteria
QA Instructions

@pbakaus I believe the UX is locked on this, right? Can we proceed with it?

yes!

Sounds good then, I'll take it on the next sprint

Is this the same as  https://github.com/google/web-stories-wp/issues/309 ?

@pbakaus @jauyong what is the details of this issue? Is this same with #309 ?

Closing this as duplicate of #309


duplicate messages when paging

If the database looks like this:
F
E
D
C
B
A
And I request the first three pages, I get this:
F
E
D
Now imagine B gets updated. The database looks like this:
B
F
E
D
C
A
I request page 2 via the Link header:
Link: <https://api.github.com/repositories/70602016/issues?direction=desc&page=2&per_page=5&sort=updated&state=all>; rel="next", <https://api.github.com/repositories/70602016/issues?direction=desc&page=5&per_page=5&sort=updated&state=all>; rel="last"

This gives me:
D
C
A
So I'm processing event D twice, which people might not expect.
It would be nice if Github provided a pointer when paging, e.g. "give me the next N events older than this one."

Is this an issue for GitHub API or the go-github client library? Is there something go-github can do, or is this something only GitHub can fix on their side?

Github would have to add some sort of token to the paging API and then go-github would have to expose that somehow.

I think they already use that approach for some endpoints. Instead of doing page=123, you specify something like since=foo or after=foo.
For example, see:

https://developer.github.com/v3/users/#get-all-users
https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository

Additionally, while it's not a part of their API, I did notice that the commits view pagination has changed on the website. It used to have a page=123 parameter in the URL, but now it's after=foo.
For example, if you visit https://github.com/google/go-github/commits/master and click on "Older" button at the bottom, the link is something like https://github.com/google/go-github/commits/master?after=Y3Vyc29yOpvmzhaPppo8wtsnp3aVCkLRjCrgKzM0.

Closing issue for lack of activity/interest. Feel free to reopen.


Fix documentation for complement

The documentation of complement leaves isNil in the example without a clear definition, and the REPL is picking out isNil from the scope of R (so it does work...). However, that seems unclear to someone reading the example without running the REPL as this var seems to come out of nowhere.

Absolutely.  Thank you very much!


graphics: Rendering is wrong on some devices (maybe the max texture size < 8192)

The rendering is not done correctly on some devices (I confirmed this problem on ZenFone ZB551KL-BK16)
You can check the maximum size of texture at http://webglreport.com/.
The cause is https://github.com/hajimehoshi/ebiten/commit/a60976f260f3d9257a87281a4860fac00d7dca8c. I'll revert this, and I'll fix this asap.
CC @nf

Hmm, this seems not so easy to fix since the const MaxImageSize can be refed before OpenGL initialization. I'd need to deprecate this const unfortunately.


How should set colors work?

It is not too hard to add a color change view or change the colors in the pattern, and given the few remaining requirements. How should this work? Fragment? In view selection? Tool? Series of alert dialogs? The simple ability to do this, is easy. How should the design work?

I like the way they do it on DST Viewer Pro (https://play.google.com/store/apps/details?id=com.faya.dstreader&hl=en). There are plenty of color picker options, for example (https://android-arsenal.com/tag/18) Choosing the colors at the statistics/properties/details or as a separate tool would be intuitive enough.

Updated the color property, tool, thing as a fragment. Just does random color each time it is pressed though. Basically set it up to be better than DST Viewer Pro. I don't have any idea how they screwed up the refresh of that stuff so badly. But, they build a bitmap each time something changes and might even do so for the items in the ListView too. The proper way is a subclassed pattern in the ListView:
https://www.bignerdranch.com/blog/customizing-android-listview-rows-subclassing/ which is how I have it set. It's a bit odd, but lets you use XML for the individual items.

Added a colour picker.


Feature Request: support arbitrary kubernetes resources in values

Details
Describe the solution you'd like:
Some applications from k8s-at-home like radarr had additional resources beyond what the common chart provided.  It would be useful to be able to specify extra resources like this directly in the values for app-templates.
The bedag/raw chart provides a good model for doing this.  The values .Values.resources and .Values.templates are provided as arrays of kubernetes resource objects that are rendered into the helm chart, with templates rendered with the tpl function.
Because resources is already a reserved value in the top level of app-template, I propose .Values.extraManifests and .Values.extraManifestTemplates (though if anyone wants to propose something better, go for it).
Additional Information:
Links:
https://github.com/bedag/helm-charts/tree/master/charts/raw
https://artifacthub.io/packages/helm/main/raw
The bedag/raw template is licensed under Apache-2.0

I could see this being useful for rendering out custom resources. For example, you could create a helm chart that only applies ClusterIssuers from cert-manager.
Take a HelmRelease for cert-manager for example:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: cert-manager
  namespace: cert-manager
spec:
  interval: 15m
  chart:
    spec:
      chart: cert-manager
      version: v1.10.0
      sourceRef:
        kind: HelmRepository
        name: jetstack-charts
        namespace: flux-system
  install:
    createNamespace: true
    remediation:
      retries: 5
  upgrade:
    remediation:
      retries: 5
  values:
    installCRDs: true

You could then apply the ClusterIssuer CR in a HelmRelease that depends on the cert-manager helm release:
---
apiVersion: helm.toolkit.fluxcd.io/v2beta1
kind: HelmRelease
metadata:
  name: &app cert-manager-issuers
  namespace: default
spec:
  interval: 15m
  chart:
    spec:
      chart: app-template
      version: 0.2.2
      sourceRef:
        kind: HelmRepository
        name: bjw-s-charts
        namespace: flux-system
  install:
    createNamespace: true
    remediation:
      retries: 5
  upgrade:
    remediation:
      retries: 5
  dependsOn:
    - name: cert-manager
      namespace: cert-manager
  values:
    customResource:
		 - apiVersion: cert-manager.io/v1
			kind: ClusterIssuer
			metadata:
			  name: letsencrypt-production
			spec:
			  acme:
			    server: https://acme-v02.api.letsencrypt.org/directory
			    email: "${SECRET_EMAIL}"
			    privateKeySecretRef:
			      name: letsencrypt-production
			    solvers:
			      - dns01:
			          cloudflare:
			            email: "${SECRET_EMAIL}"
			            apiKeySecretRef:
			              name: cloudflare-token-secret
			              key: cloudflare-token
			        selector:
			          dnsZones:
			            - "${SECRET_PUBLIC_DOMAIN}"

I know this is absolutely insane idea 🤣

@gclawes can you give a better example of what you mean by some deployments require an extra manifests? @bjw-s and I believe this might be out of the scope of the common library but I think we'd be open to PRs.

I linked to the templates for radarr in the original issue: https://github.com/k8s-at-home/charts/tree/master/charts/stable/radarr/templates
This has a PrometheusRule and ServiceMonitor in addition to the rendered common template.  If I were to deploy radarr with bjw-s/app-template, it would be useful to be able to deploy these custom resources like this in the same helm release as the man app, rather than managing them in a separate release.
Unfortunately I'm currently restricted from making PRs due to work, I wish I could contribute one here.

While the technical implementation could be relatively straightforward I'm going to vote against implementing this. It feels like quite the anti-pattern. Resources not supported by the library chart should be deployed as sidecar manifests.

There's also the serviceMonitor option incoming for the next version, I don't think we would go so far as to add prometheusRule value though since that would look pretty ugly on the deployment side. Due to the LoC that CR can be a raw manifest.


removed redirecting pages and updated links

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Exchange-Server-2013/accessibility-for-people-with-disabilities-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/accessing-public-folders-with-outlook-2016-for-mac-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/add-a-sip-address-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/add-an-auto-attendant-extension-number-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/add-an-e-164-number-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/add-an-extension-number-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/add-ins-for-outlook-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/address-book-policy-procedures-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/address-list-procedures-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/administrator-audit-logging-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/allow-message-waiting-indicator-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/allow-message-waiting-indicator-mwi-on-a-um-ip-gateway-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/allow-or-prevent-a-user-from-creating-call-answering-rules-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/allow-users-to-make-calls-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/anti-spam-and-anti-malware-protection-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/assign-an-address-book-policy-to-mail-users-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/backup-restore-and-disaster-recovery-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/change-an-e-164-number-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/change-an-extension-number-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/change-the-default-offline-address-book-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/checklist-deploy-exchange-2013-um-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/checklist-integrate-exchange-2013-um-with-lync-server-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/checklist-upgrade-exchange-2007-um-to-exchange-2013-um-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/checklist-upgrade-exchange-2010-um-to-exchange-2013-um-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/configuration-notes-for-supported-session-border-controllers-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configuration-notes-for-supported-voip-gateways-ip-pbxs-and-pbxs-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-a-dial-plan-for-users-who-have-similar-names-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-a-fully-qualified-domain-name-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-an-auto-attendant-for-users-who-have-similar-names-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-business-hours-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-custom-mailtips-for-recipients-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-email-forwarding-for-a-mailbox-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-exchange-online-public-folders-for-a-hybrid-deployment-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-global-address-list-properties-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-legacy-on-premises-public-folders-for-a-hybrid-deployment-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-legacy-public-folders-where-user-mailboxes-are-on-exchange-2013-servers-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/configure-mobile-phones-to-access-email-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-offline-address-book-distribution-properties-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-protected-voice-mail-from-authenticated-callers-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-group-of-users-that-can-be-contacted-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-group-of-users-that-outlook-voice-access-users-can-contact-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-limit-on-personal-greetings-for-outlook-voice-access-users-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-listening-port-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-maximum-call-duration-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/configure-the-voip-security-setting-exchange-2013-help.md
:white_check_mark:Succeeded

Exchange-Server-2013/connect-a-voip-gateway-ip-pbx-or-session-border-controller-to-um-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/connect-a-voip-gateway-to-communicate-with-a-pbx-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/connect-um-to-a-supported-voip-gateway-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/connect-um-to-your-telephone-system-exchange-2013-help.md
:white_check_mark:Succeeded
View

Exchange-Server-2013/copy-ediscovery-search-results-to-a-discovery-mailbox-exchange-2013-help.md
:white_check_mark:Succeeded
View

This comment lists only the first 50 files in the pull request.
For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Updated regexp to support fixed tokens and sequential symbols

Your wish is my command. Semantic versioning should now be separate tokens.


log-viewer visible by public, unauthorized users

Hi, I have just installed this using the documentation instructions.
/log-viewer is loading and can see all log files while not logged in on both local and production environments.
I see now that it is set by default to allow everyone to see log files
I followed this to restrict it to only authorized users.
https://log-viewer.opcodes.io/docs/3.x/configuration/access-to-log-viewer#authorizing-users
Bug
I would say that it's a bug to have a log viewer automatically open to the public.
Is there a way to restrict this to logged in users by default?

I got this problem before. And after some try and error, i got this working by using the Gate like this.
Gate::define("viewLogViewer", fn () => auth()->user()->isAdmin());

instead of this
Gate::define('viewLogViewer', function (?User $user) {
        return $user->isAdmin();
});

I use the global helper instead of grab the user from the function parameter like in the documentation.
I hope it helps.

Hi
I would like to add extra thing here, our team have used Cloudflare to limit access to log-viewer url from whitelisted IPs only

hey all, thanks for bringing this up!
Starting with v3.3.0, Log Viewer will be unauthorized in production by default, if no gate or auth callback is set up.

I have been using a middleware since forever:
'middleware' => ['web', 'auth', 'role:support|superadmin'],
Now, this is no longer enough! Not great for a non major release.

I have been using a middleware since forever:
'middleware' => ['web', 'auth', 'role:support|superadmin'],
Now, this is no longer enough! Not great for a non major release.

Hey @zoispag , you're not using the \Opcodes\LogViewer\Http\Middleware\AuthorizeLogViewer middleware, so I don't what exactly is blocking your access here 🤔
The change should only apply to the default installations where the above middleware is applied by default. If you're not using that middleware then you're responsible for the access to the Log Viewer - and looks like you did add it already.
So, it should be working for you just fine 🤔

It doesn't however. I get 403 when it tries to access the log files. Maybe a bug?

@zoispag , do you also use the same middleware in api_middleware configuration? Or maybe you're calling LogViewer::auth() somewhere else in the system?

hey @zoispag , try the new release, v3.3.1 which should fix the issue.

Hi @arukompas. My published config was apparently a very old one, with no api_middleware in place. So for the API only, it was using \Opcodes\LogViewer\Http\Middleware\AuthorizeLogViewer::class which started failing. I updated the api_middleware to
'api_middleware' => [EnsureFrontendRequestsAreStateful::class, 'auth', 'role:support|superadmin'],

and now it works. Thanks for pointing me to the direction. Once I removed the AuthorizeLogViewer::class from the api_middleware array, I no longer need to create a Gate for the API to work.

By the way I would like to apologize for "bitching" earlier.
I had a very bad start of the day!
Apologies again and thanks for the quick reaction!! 💪🏼

@zoispag no worries at all, it kept me on my toes! :)
Enjoy the rest of the week 💪


Limit buffer to packet length

@mranney any reason to not slice prior to each decode rather than passing in an offset? That way each decoder starts at 0 and ends at raw_packet.length?

Performance reasons only. You wouldn't think it, but Buffer.prototype.slice is expensive. I didn't think so either until I saw it consistently showing up on profile runs.

For now then will limit it to this usage.


ValueError: not enough values to unpack (expected 2, got 0)

Hello,Thanks for the detailed tutorials. during the replication process, I encountered a stumbling block while trainning RVQ. I encountered this problem, how should I solve it?
Reading ./checkpoints/t2m/Comp_v6_KLD005/opt.txt
Loading dataset t2m ...
100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 4384/4384 [00:06<00:00, 659.12it/s]
Traceback (most recent call last):
File "train_vq.py", line 114, in
eval_val_loader, _ = get_dataset_motion_loader(dataset_opt_path, 32, 'test', device=opt.device)
File "/data2/momask-codes-main/motion_loaders/dataset_motion_loader.py", line 20, in get_dataset_motion_loader
dataset = Text2MotionDatasetEval(opt, mean, std, split_file, w_vectorizer)
File "/data2/momask-codes-main/data/t2m_dataset.py", line 158, in init
name_list, length_list = zip(*sorted(zip(new_name_list, length_list), key=lambda x: x[1]))
ValueError: not enough values to unpack (expected 2, got 0)

Hi, it seems that those two lists are empty. Delete the try-except block to check the error information.

Hi, it seems that those two lists are empty. Delete the try-except block to check the error information.
Thank you for your reply！！ I have solved the problem according to the error code. I found that the texts folder is missing from my directory.


Handle debounce in I2CKeypad_interrupts_1 example

Hi, The example code in I2CKeypad_interrupts_1.ino has a potential bug. The loop() function doesn't handle the case where getKey() returns I2C_KEYPAD_THRESHOLD (255). Instead, it uses the number 255 as an index into an array of 19 bytes. That's an invalid memory access. To fix it, the following should be added after the call to getKey().
if (index == I2C_KEYPAD_THRESHOLD)
    return;

Perhaps it's not really a bug since it doesn't call the new setDebounceThreshold() method, but this pull request does that as well. It might not strictly be necessary for this example, but I think it makes it a better example.

good catch,
The object keypad should be KeyPad.

Oops. I've fixed that (keyPad, not KeyPad).

@rafork
There is another one to fix
Compilation failure details...
    compiler_err...
        /home/runner/work/I2CKeyPad/I2CKeyPad/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino: In function 'void setup()':
        /home/runner/work/I2CKeyPad/I2CKeyPad/examples/I2CKeypad_interrupts_1/I2CKeypad_interrupts_1.ino:83:3: error: 'keypad' was not declared in this scope; did you mean 'keyPad'?
           83 |   keypad.setDebounceThreshold(50);
              |   ^~~~~~
              |   keyPad
    ...compiler_err

Oops.  It's there now.

@rafork
Merged into master,
Thanks again for the fix, appreciated


Any Demo for ios？

I follow this： https://github.com/tdlib/td/tree/master/example/ios
But it's not work。
Can anyone help me understand  how to build this for ios？？？

What is not working?
You can take a look at https://github.com/leoMehlig/TDJSON as an example of a prebuilt framework for iOS using TDLib.

Maybe it's time to provide your own proper example and a build script for iOS (one that won't generate. a .dylib), instead of linking other 3rd party repositories?

Thanks to @Kylmakalle, example/ios now creates a fully-featured XCFramework, which can be used out of the box.


Changed plus button behaviour

Hello @andipaetzold
I was playing around with the plus button and never really managed to make it work - at least that is what I thought - because the status message does not change.
I have changed the status message so that it shows the current length of athlete's turn an in case someone adds time, the status message gets updated.
What do you think about this?
I also thought that it would be cool if the remaining time decreased every second but that didnt work very well
diff --git a/src/timerLoop.ts b/src/timerLoop.ts
index 7ccb118..b1ca159 100644
--- a/src/timerLoop.ts
+++ b/src/timerLoop.ts
@@ -108,6 +108,8 @@ async function tickTimer(timer: Timer, now: number): Promise<void> {
                 started: true,
             }));
             await updateStatusMessage(timer.guildId, scope);
+        } else {
+            await updateStatusMessage(timer.guildId, scope);
         }

         await speakCommand(

it "somewhat" worked but the status message was updated only every few seconds (while I saw in the cli console that it was being updated regularly) - I guess it might have been caused due to the nature of websockets and how often the discord server can receive the messages (might be sent in some bulks, dunno)
Please excuse my poorly written typescript, I even had to buy WebStorm today, I usually code in PHP only,

👋  Thanks for the PR!
I didn't test your PR, but I think the displayed number would be difficult for users to understand (while dying on the bike). Currently, it always displays the total number of seconds (without the additional seconds). With your change, the remaining seconds at the time of pressing the "plus" button is displayed. As riders don't constantly look at the status message, they would never know how many seconds are remaining.
The discord rate limit is 50 request per second. With the current usage, we should be able to stay within that limit even when updating the message once per second to count down. But if the message doesn't update in time its probably not worth doing that.
I just found out that you can create messages that automatically update and count towards/from a timestamp without having to make additional requests: https://r.3v.fi/discord-timestamps. I think this might be the way to go and should be somewhat straight forward to implement.

Please excuse my poorly written typescript, I even had to buy WebStorm today, I usually code in PHP only,

All good! Do you feel comfortable implementing that? Otherwise, I'd take a look at it.

I tried implementing the dynamic datetime. I added it to the before-start status message (displayed when using delay command and it counts down to the start).
I think it works really good. There's a small issue that the bot changes riders sometimes a bit slower and the count down goes like

in 3 seconds
in 2 seconds
....
1 second ago

But I dont think that matters much


undefined method `id' for nil:NilClass

Extracted source (around line #127):
better_errors (2.1.1) lib/better_errors/middleware.rb:127:in `internal_call'
def internal_call(env, opts) <<<<<<<<<<<<<<<<<<<<<<<<<<<<< line 127
  if opts[:id] != @error_page.id
    return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump(error: "Session expired")]]
  end

I'm facing the same issue. @error_page is nil. Tried with versions 1.1.0, 2.1.0 and 2.2.0. Issue #301 seems to be related.

Having the same issue. Using better_errors with middleman.

Is this a duplicate of issue #301 ?

@techsethi I may have a fix, see my comment in #301

Duplicate of #301.


Error 404 for pon_classifier.zip

When I go to download the pon_classifier.zip, I get an Error 404, is there another link?

Thanks for reporting, should now work again.


I think that there is a wrong submodule link

Since #157 .gitmodules now references @Jhanlon95 repository instead yours @Lacro59 . I think this is a mistake so I open this issue to letting you know in case I'm right:
https://github.com/Lacro59/playnite-howlongtobeat-plugin/blob/635513c1067ddaabd961ef60fc5bd7e24dd1df04/.gitmodules#L3

fixed
thanks


Added detection for Unknown OS

This commit adds "support" (well, not exactly support, but a fallback detection method if no other OS than what's supported is detected instead of displaying just Unknown OS detected: $(uname))
Some of the features will immediately work (GPU detection, DE/WM, detection, kernel detection etc.), but other features like CPU detection and RAM detection will not appear, as there'll be differences in how other *NIXes handle this.
Tested on: OpenIndiana Hipster

I'd rather keep the current implementation (Exiting with a message for unknown OS) instead of an incomplete general detection method.
Is it not possible for us to add full support for OpenIndiana Hipster and other *NIXes? As you said a lot of the functions already work, so we'd just have to update the broken ones.

While it is possible, many other *NIXes have different implementations of how they detect CPUs, GPU (Xorg can handle it so we have at least one universal solution) and even birthdays (Oracle's Solaris and OpenIndiana have different implentations, and unlike OpenIndiana, Oracle's date does not support -d.) And that doesn't include other obscure *NIX like HP-UX (and that is if we will ever encounter their users)
If possible, I'll make another PR for Solaris (for now, OpenIndiana only), so I'll close this one.

:+1:


[Feature Request]:  Stop using helpers and entities/solve the problem a different way

Is your feature request related to a problem? Please describe.
Consider this function which I use to set the temperature in pyscript:
def set_cooling():
climate_config = pyscript.config['apps']['climate']
if(float(input_number.disable_away_mode) > 0):
log.debug("Away mode locked - ignoring temp changes")
return
configs = [climate_config[person[7:]] for person in state.names("person")
if state.get(person) == "home" and ( person[7:] in climate_config ) ]
if len(configs) > 0:
target_max = min([ c['max'] for c in configs ])
target_min = max([ c['min'] for c in configs ])
else:
log.debug("Setting away mode temps")
target_max = climate_config['default']['max']
target_min = climate_config['default']['min']
if pyscript.lock_temperature != '1':
target_temp(target_min, target_max)
@time_active("range(sunrise, 22:00)")
@time_trigger("period(0:00, 3 min)")
def scheduled_update():
set_cooling()
I have ONE SCRIPT that is checking the temperature for any interval that I want to use, and it is using a configuration file to figure out what to do.  I don't need any entities, helpers, or automations to do this.
Creating hundreds of automations for this purpose is a bad solution.  The system has to loop through all of them, and there's a lot that can go wrong.
I have thirty lock codes, which means I have over a THOUSAND helpers and automations generated by this.  That's a problem.  It could (and should) require about five functions and be less than 200 lines altogether.
Describe the solution you'd like
Pick a different technology thats lets you do more with less.  I don't care which one, but you're just asking for bugs with what you have.  Likely most of the issues you have here are a result of this design flaw.
Describe alternatives you've considered
Pyscript, Jinja Templates, and  app daemon can all be made to do this.
The code produced would also be a fraction of the size of the code you're maintaining here.

I have ONE SCRIPT that is checking the temperature for any interval that I want to use, and it is using a configuration file to figure out what to do. I don't need any entities, helpers, or automations to do this.

You are right that keymaster has some unnecessary complexity/surface area, but by comparing it to this script you are ignoring a lot of what keymaster does. Ultimately, I'd like keymaster to be more modular because a lot of people don't need all of the features that keymaster offers, but that's a significant rewrite and would not be made simpler by moving to pyscript or App Daemon.

there's a lot that can go wrong.

Like what?

I have thirty lock codes, which means I have over a THOUSAND helpers and automations generated by this. That's a problem.

What's the problem? From a user experience perspective it's crappy for sure because all of those automations/helpers create a lot of noise on certain pages, but it doesn't have any functional impact.

It could (and should) require about five functions and be less than 200 lines altogether.

If this is something you feel that confidently about, feel free to submit a PR for this or a fork.

Pick a different technology thats lets you do more with less. I don't care which one, but you're just asking for bugs with what you have. Likely most of the issues you have here are a result of this design flaw.

What different technology are you referring to? pyscript and App Daemon are not different technologies, they're scripting languages built on top of Home Assistant constructs. And they make a lot of things simpler to write (I have many automations running via pyscript), but that doesn't make them a magic bullet for every problem.
There is no design flaw. At the time that keymaster was originally created, the implementation was the only solution given what was available. There's a path to a better solution but that's only been made available recently, and that path does not involve pyscript or App Daemon.

Pyscript, Jinja Templates, and app daemon can all be made to do this.
The code produced would also be a fraction of the size of the code you're maintaining here.

Great - have at it and please share once it's built!


Referencing external nuget packages from your addin

Tweaks the AddinProcessor to look for a "packages.config" file inside the addin directory then adds any referenced packages to cake.
The great thing about this approach is you can copy your dll's "packages.config" file to the nuget package during your build script. Resolves an issue I have with my new addin [Cake.IIS (https://github.com/SharpeRAD/Cake.IIS) such that you only need to include one reference to pull in multiple nuget packages :smile:

@SharpeRAD I think there might be something wrong with the PR, since it references 31 commits. I also would like to see some tests that covers this functionality to be able to merge it since it affects a lot of functionality related to addins.

Isn't this something that should be handled using good old fashion Nuget Dependencies?


[3.x] [core_bind] Add Thread::is_alive

3.x version of #53455
This adds the function is_alive to core/bind/Thread.
This also removes the redundant implementation of is_active in favor of core/os/Thread::is_started. Unlike the master PR, this does not rename is_active to preserve compatibility.

Thanks!


message event in one app being sent to Request URL in another app

I have two Slack apps under the same team / workspace:

App 1. Production app that is set to POST events to a Request URL / HTTPS endpoint
App 2. Development app that is set to use WebSockets

My goal is to develop under App 2 before deploying to production under App 1. I have App 1 deployed on a k8s cluster in AWS that receives message events with Bolt just fine, and events are POSTed to my request URL.
If I do a simple request with App 2's tokens and channel IDs with chat.postMessage/test endpoint here, it successfully delivers the message to App 2's channel, but I see from App 1's production logs that it also attempts to send a POST request to App 1's Request URL configured. I ensured that App 1 and App 2 tokens are not being mixed up.   My assumption was that if I configured my Bolt app with App 2's tokens, then the apps would be isolated (i.e. a message sent to App 2 is not sent to App 1)
Reproducible in:
The slack_bolt version
# pip freeze | grep slack
slack-bolt==1.18.0
slack-sdk==3.26.1

Python runtime version
# python --version
Python 3.11.7

OS info
# uname -v
#1 SMP PREEMPT Mon Nov 8 11:22:26 UTC 202

I'm running Slack bolt app inside a docker container. The above is running the command inside a running container.
Steps to reproduce:
Configure two apps in the same workspace team

One with Socket Mode off and POSTs requests to the Request URL
One with Socket Mode on
Install both apps in the same workspace (the two apps are listed under the Apps section of the sidebar in the Slack desktop app
Visit chat.postMessage/test
Post a message using App 2's Bot token and channel ID obtained from App 2 in the Apps section of the sidebar
Observe that the message was sent to App 2's channel, but it also sent a payload to App 1's endpoint

Expected result:
Message from chat.postMessage/test  is sent only to App 2's channel and payload is NOT sent to App1's Request URL
Actual result:
The chat.postMessage/test message was sent to App 2's channel successfully, but it also sent a payload to App 1's Request URL.
Here's a snippet of App 1's logs
[2023-12-27 11:58:39] {__init__.py:202} DEBUG - Installation data missing for enterprise: none, team: <redacted>: [Errno 2] No such file or directory: '/mnt/efs/slack/installations/none-<redacted>/installer-<redacted>-latest'
[2023-12-27 11:58:39] {base_client.py:251} DEBUG - Sending a request - url: https://www.slack.com/api/auth.test, query_params: {}, body_params: {'team_id': '<redacted>'}, files: {}, json_body: None, headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Authorization': '(redacted)', 'User-Agent': 'Python/3.11.7 slackclient/3.26.1 Linux/5.10.201-191.748.amzn2.x86_64'}
[2023-12-27 11:58:39] {base_client.py:542} DEBUG - Received the following response - status: 200, headers: {'date': 'Wed, 27 Dec 2023 11:58:39 GMT', 'server': 'Apache', 'vary': 'Accept-Encoding', 'x-slack-req-id': 'a714a5f3b034471fea55b601b501685a', 'x-content-type-options': 'nosniff', 'x-xss-protection': '0', 'pragma': 'no-cache', 'cache-control': 'private, no-cache, no-store, must-revalidate', 'expires': 'Sat, 26 Jul 1997 05:00:00 GMT', 'content-type': 'application/json; charset=utf-8', 'x-oauth-scopes': 'channels:read,groups:read,chat:write,app_mentions:read,channels:history,commands,groups:history,im:history,incoming-webhook,mpim:history,users.profile:read,reactions:read', 'access-control-expose-headers': 'x-slack-req-id, retry-after', 'access-control-allow-headers': 'slack-route, x-slack-version-ts, x-b3-traceid, x-b3-spanid, x-b3-parentspanid, x-b3-sampled, x-b3-flags', 'strict-transport-security': 'max-age=31536000; includeSubDomains; preload', 'referrer-policy': 'no-referrer', 'x-slack-unique-id': 'ZYwRbyiCpuimxPjc3FTrSQAAECE', 'x-slack-backend': 'r', 'access-control-allow-origin': '*', 'content-length': '196', 'via': '1.1 slack-prod.tinyspeck.com, envoy-www-iad-movnsdlb, envoy-edge-pdx-bivryhjg', 'x-envoy-attempt-count': '1', 'x-envoy-upstream-service-time': '153', 'x-backend': 'main_normal main_canary_with_overflow main_control_with_overflow', 'x-server': 'slack-www-hhvm-main-iad-pxeh', 'x-slack-shared-secret-outcome': 'no-match', 'x-edge-backend': 'envoy-www', 'x-slack-edge-shared-secret-outcome': 'no-match', 'connection': 'close'}, body: {"ok":true,"url":"https:\/\/<redacted>.slack.com\/","team":"<redacted>","user":"<redacted>","team_id":"<redacted>","user_id":"<redacted>","bot_id":"<redacted>","is_enterprise_install":false}
[2023-12-27 11:58:39] {listener_error_handler.py:67} ERROR - Failed to run listener function (error: 1 validation error for SlackMessagePayload
event -> client_msg_id
  field required (type=value_error.missing))
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/slack_bolt/listener/thread_runner.py", line 120, in run_ack_function_asynchronously
    listener.run_ack_function(request=request, response=response)
  File "/usr/local/lib/python3.11/site-packages/slack_bolt/listener/custom_listener.py", line 50, in run_ack_function
    return self.ack_function(
           ^^^^^^^^^^^^^^^^^^
  File "/var/www/app/routers/router.py", line 80, in handle_message
    message = SlackMessagePayload(**body)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "pydantic/main.py", line 341, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 1 validation error for SlackMessagePayload
event -> client_msg_id
  field required (type=value_error.missing)
INFO:     <IP_ADDRESS>:29506 - "POST /app1/endpoint HTTP/1.1" 200 OK # the endpoint configured in App 1

The Exception above is expected, because my production app is receiving a payload that it's not expecting.  This is how the Bolt app is configured in production
oauth_settings = OAuthSettings(
    client_id=SLACK_CLIENT_ID,
    client_secret=SLACK_CLIENT_SECRET,
    scopes=oauth_required_scopes,
    installation_store=FileInstallationStore(base_dir="/mnt/efs/slack/installations"),
    state_store=FileOAuthStateStore(expiration_seconds=600, base_dir="/mnt/efs/slack/states")
)

bolt_app = App(
    signing_secret=SLACK_SIGNING_SECRET,
    oauth_settings=oauth_settings
)
bolt_app_handler = SlackRequestHandler(bolt_app)

@bolt_app.event("message")
def handle_message(body, say, logger):
    ...

## Requirements

Please read the [Contributing guidelines](https://github.com/slackapi/bolt-python/blob/main/.github/contributing.md) and [Code of Conduct](https://slackhq.github.io/code-of-conduct) before creating this issue or pull request. By submitting, you are agreeing to those rules.

Hi, @christopherhan! Thanks so much for submitting this question and sorry to hear that you're running into some trouble.
Also, thanks for the detailed responses! Just to get a better idea of the issue - if you attempt to make a request through that same link for App 1, does App 2 receive the request also, or is it solely just when you use App 2's credentials that App 1 also receives the request payload?

@hello-ashleyintech It only seems to be when I use App 2's credentials.
If I used App 1's bot token and channel ID in the chat.postMessage/test, App 1 receives the payload successfully and posts the message in App 1's channel.  App 2 doesn't seem to receive the request.  I tested again with App 2's bot token and channel, and App 1 is also receiving the request.

@christopherhan Thanks so much for verifying that for me! 🙌 Would you be able to share your app config file (excluding any sensitive information) for App 2?

@hello-ashleyintech . This is the manifest from App2
display_information:
  name: App2
features:
  app_home:
    home_tab_enabled: true
    messages_tab_enabled: false
    messages_tab_read_only_enabled: false
  bot_user:
    display_name: App2
    always_online: false
oauth_config:
  scopes:
    user:
      - im:history
    bot:
      - im:write
      - im:read
      - chat:write
      - links:write
      - groups:read
      - mpim:read
      - mpim:history
      - commands
      - files:read
      - files:write
      - team:read
      - incoming-webhook
      - app_mentions:read
settings:
  event_subscriptions:
    user_events:
      - message.im
    bot_events:
      - app_mention
  interactivity:
    is_enabled: true
  org_deploy_enabled: false
  socket_mode_enabled: true
  token_rotation_enabled: false

Thanks for sharing @christopherhan! 🙌 Apologies for the confusion - by app config, I meant the appy.py file that initiates your app. An example can be found here.
Let me know if you have further questions!

I'm running a FastAPI project.  Here's my main.py in the project root
import os
import logging
from logging.config import dictConfig
from fastapi import FastAPI, Request, Response
from fastapi.middleware.cors import CORSMiddleware
from starlette.background import BackgroundTask
from starlette.types import Message
from api.conf.log import log_config
from api.routers import (
    slack_router,
)
from api.db.connection import engine

from api.db.models import *

dictConfig(log_config)
logger = logging.getLogger(__name__)

APP_ENV = os.getenv('APP_ENV', 'development')

if APP_ENV == 'production':
    origins = [
        "https://api.app.com",
        "https://app.app.com",
    ]
else:

    origins = [
        "http://localhost:8080",
        "http://localhost:5100",
    ]

app = FastAPI()

def log_info(req_body, res_body):
    logging.info(req_body)
    logging.info(res_body)

async def set_body(request: Request, body: bytes):
    async def receive() -> Message:
        return {'type': 'http.request', 'body': body}
    request._receive = receive

@app.middleware('http')
async def LogMiddleware(request: Request, call_next):
    req_body = await request.body()
    await set_body(request, req_body)
    response = await call_next(request)

    res_body = b''
    async for chunk in response.body_iterator:
        res_body += chunk

    task = BackgroundTask(log_info, req_body, res_body)
    return Response(content=res_body, status_code=response.status_code,
        headers=dict(response.headers), media_type=response.media_type, background=task)

app.include_router(slack_router.router)

Base.metadata.create_all(bind=engine)

app.add_middleware(
    CORSMiddleware,
    allow_origins=origins,
    allow_credentials=True,
    allow_methods=["GET", "POST"],
    allow_headers=["*"],
)

@app.get("/")
async def root():
    return {"message": "Hello, World!"}

The bolt app is initialized in another file, routers/slack_router.py
import os
import logging
from fastapi import APIRouter, Request
from api.models.slack import SlackMessagePayload
from slack_bolt import App
from slack_bolt.adapter.fastapi import SlackRequestHandler
from slack_bolt.oauth.oauth_settings import OAuthSettings
from slack_sdk.oauth.installation_store import FileInstallationStore
from slack_sdk.oauth.state_store import FileOAuthStateStore

logger = logging.getLogger(__name__)

SLACK_CLIENT_ID = os.getenv('SLACK_CLIENT_ID')
SLACK_CLIENT_SECRET = os.getenv('SLACK_CLIENT_SECRET')
SLACK_SIGNING_SECRET = os.getenv('SLACK_SIGNING_SECRET')

# These need to align with the Slack events we're receiving
oauth_required_scopes = [
    "channels:read",
    "groups:read",
    "chat:write",
    "app_mentions:read",
    "reactions:read"
]

oauth_settings = OAuthSettings(
    client_id=SLACK_CLIENT_ID,
    client_secret=SLACK_CLIENT_SECRET,
    scopes=oauth_required_scopes,
    installation_store=FileInstallationStore(base_dir="/mnt/efs/slack/installations"),
    state_store=FileOAuthStateStore(expiration_seconds=600, base_dir="/mnt/efs/slack/states")
)

bolt_app = App(
    signing_secret=SLACK_SIGNING_SECRET,
    oauth_settings=oauth_settings
)
bolt_app_handler = SlackRequestHandler(bolt_app)
router = APIRouter()

@router.get("/slack/install")
async def install(req: Request):
    return await bolt_app_handler.handle(req)

@router.get("/slack/oauth_redirect")
async def oauth_redirect(req: Request):
    return await bolt_app_handler.handle(req)

@router.post("/api/v1/slack/message")
async def endpoint(req: Request):
    return await bolt_app_handler.handle(req)

@bolt_app.event("message")
def handle_message(body, say, logger):
    if 'type' in body:
        event_type = body['type']

    if event_type == 'url_verification':
        say(body['challenge'])

    if event_type == 'event_callback':
        message = SlackMessagePayload(**body)
        say('Hello World')

@bolt_app.event("app_mention")
def handle_app_mention(body, say):
    message = SlackMessagePayload(**body)
    say('Hello World')

When building the Bolt app with FastAPI, I referenced the examples here

@hello-ashleyintech still having the same issue. no changes since my last message. thanks for taking a look.

If the App 1's bot user is a member of the channel you're using for App 2 test, this behavior should not be surprising. Since App 1 subscribes to all message events that occur in places where its bot user has the access.

@seratch hmm, I'm using App 2's bot token in the tester, and the message event payload is being posted to App1's Request URL (I see in my server logs).  So App1 and not a member of any channels of App2
Alternatively, if I message App2 in it's channel, then the payload gets sent to App1's Request URL

I mean receiving message events is not connected to what token is used for posting a message. Again, the Request URL just receives any message events that the app's bot user has the access. What happens if you post a message as a human in the channel? If the App 1's bot user is in the channel, App 1's message listener will be executed as you observe with App 2's bot user message. If you use the App 1 itself's bot token, the Request URL still receives the message event, but Bolt framework skips executing the message event listener for you to prevent infinite loop of responding to its own message.


Understanding how elementary resolves dbt models with CI jobs

Describe the bug
Uncertain if this is a bug or expected behaviour, but we are quite confused with the current behaviour, thus raising this issue to get further clarification.
We have observed that the first time we ran a CI job after installing elementary dbt package, the elementary models will get built into a temporary PR schema, instead of their own custom elementary schema as specified in dbt_project.yml.
For context, in dbt Cloud, CI jobs will materialize the models in a temporary schema unique to the PR which will then be dropped once the PR is merged/closed (docs for reference here). It is expected that the Elementary models are still written into their own schema defined in the dbt_project.yml file (Elementary should still override this schema and write its models into its own schema NOT the temp PR schema).
After that PR has been merged and a production job is ran, Elementary models from all the subsequent CI jobs will start writing into the expected schema.
To Reproduce
Prerequisite:

dbt Cloud account

Steps to reproduce the behavior:

In dbt Cloud

Create a main production deploy job (no schedule needed to be set), detailed steps here
Create a CI job that will get triggered by pull-requests, detailed steps here

Install elementary dbt package, following the instructions here
In dbt Cloud's IDE > Commit & sync > Create pull-request
This will kick off the CI job created in step 1
After the run is complete > open up the run page > click on the last step 'Invoke dbt build --select state:modified+' > Debug Logs > Download full debug logs
Search for any of the elementary models, eg, dbt_invocations and we can see that it is built into the temporary PR schema - create or replace  table DEVELOPMENT.dbt_cloud_pr_537847_8_elementary_new.dbt_invocations - instead of DEVELOPMENT.dbt_sanny_elementary_new.dbt_invocations.
Merge the PR and run the main production job
Download the debug logs for the main job and we can see that elementary models are built into the correct elementary schema
Create a new pull request that will trigger another CI job
Download the debug logs for that new CI job > elementary models are now built into the correct elementary schema

Expected behavior
The expected behaviour is for all elementary models to be built into the custom elementary schema, regardless if it was the initial CI run or not. Note that prior to the merge of that first PR, any metadata that was inserted into the temporary PR schema will disappear when the PR is merged and temporary PR schema is dropped (default behaviour for dbt's CI jobs). Client's data is then lost and cannot be recovered.
Environment (please complete the following information):

dbt package version: 0.14.1

Additional context
Debug logs for references
1. Debug log run 261771270 (1st CI run).log
2. Debug log run 261772372 (after merge, main prod run).log
3. Debug log run 261772795 (2nd CI run).log
This is the observed behaviour from multiple testings:

First installment of elementary dbt package > run CI job > elementary models built in temp PR schema (eg, database.pr_9_elementary_schema.model_name)
Trigger the PR multiple times > will still be built in the same temp pr schema (ie, database.pr_9_elementary_schema.model_name)
When we merge the PR > no main prod job run yet > run another CI job > elementary models will get built in new temp pr schema (ie, database.pr_10_elementary_schema.model_name)
When main prod job run > elementary models will get built in normal custom elementary schema (ie, database.dbt_sanny_elementary_schema.model_name)
If the previous PR has not been merged while the main job ran > trigger another PR on that open one > elementary models will get built in the temp PR schema that has not been merged (ie, database.pr_10_elementary_schema.model_name)
Once that last open PR has been merged > any new PR from then on will get built into normal custom elementary schema (ie, database.dbt_sanny_elementary_schema.model_name)

Hi @wusanny !
Thanks for opening this detailed issue and apologies for the large delay here.
As of this time we don't have an official support for dbt's CI jobs feature.
Generally speaking I see a lot of sense with the Elementary schema persisting, but I see some challenges with doing it correctly (for example - different branches may use different Elementary package versions that might have conflicting table schemas).
It would likely need further research.
I'll tag this as an Enhancement but definitely makes sense to reconsider / adapt the behavior there.
Something I'd definitely be open to though is to add a flag that forces the elementary schema to be fixed on CI runs - if you'd like to contribute this that would be great.
(and we can later consider if that flag should be the default)


[FLINK-15992][table] Fix classloader when finding TableFactory

What is the purpose of the change
This pull request makes finding SerializationSchemaFactory with ClassLoader from Thread.currentThread().getContextClassLoader() rather than this.getClass().getClassLoader().
Brief change log

Remove ClassLoader parameter when invoking TableFactoryService#find, so it will use Thread.currentThread().getContextClassLoader() as default ClassLoader.

Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (no)
The serializers: (no)
The runtime per-record code paths (performance sensitive): (no)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: ( no )
The S3 file system connector: (no )

Documentation

Does this pull request introduce a new feature? ( no)
If yes, how is the feature documented? (not applicable )

@wuchong I verified with this PR and confirmed the issue in the JIRA had gone.

Thanks @jiasheng55 .


Add ability to save experiment ouptuts

BE APIs needed to save experiment outputs and "pin" them for later.
V0 probably simple enough to receive all of the Experiment args and the output string, as well as date generated

Closed in #84


Request for 1.6.2 release

I'm in need of a fix I contributed almost three months ago in #297 (thanks @nbransby) because my team is heading into a big launch. This repo hasn't had a new release in a while, so I'm still left with the very apparent bug it fixes.
Apologies if this is not the right place to raise this, but I wasn't sure how else to get in touch. Let me know if/how I can help (testing the release candidate etc).

Bump - to be annoying ;)

Hi @walkingbrad, I have released 1.6.2.
Apologies for the delay!


SymbolicData Generics for finitary product types

WIP Generics for SymbolicData

🔥 🔥 🔥
Keep it up!

Rather than a general solution for SymbolicData instances, I think Generic deriving, on first approximation, is a feature to enable users to derive SymbolicData for their (finitary) record or product datatypes when the fields of their datatypes are SymbolicData. In particular, it is not initially intended for infinite list/stream types, nor for sum types.

Ok, let's fix conflicts, reduce the diff and merge this.


[BUG] CSV with filter on nested type fields is empty

What is the bug?
CSV with filter on nested type fields is empty
How can one reproduce the bug?
Steps to reproduce the behavior:

Create index with a nested field

PUT /test_index
PUT /test_index/_mapping
{
  "properties": {
    "tags": {
      "type": "nested",
      "properties": {
        "value": {
          "type": "keyword",
          "ignore_above": 256
        }
      }
    }
  }
}

POST /test_index/_doc
{
  "tags": {
    "value": "123"
  }
}

create index pattern for it
go to discover, add filter on tag.value is 123
save the search
create csv report
see it is empty

What is the expected behavior?
csv should have results
What is your host/environment?

OS: [e.g. iOS]
Version [e.g. 22] main
Plugins

Do you have any screenshots?
If applicable, add screenshots to help explain your problem.
Do you have any additional context?
This happens because when discover adds the filter on tag.value, it is stored as
{
  "query": {
    "match_phrase": {
      "tags.value": "123"
    }
  }
}

But it is not correct syntax for a nested field. When discover sends the query, it somehow converts this stored filter into correct nested syntax, so discover search still works
{
  "nested": {
    "path": "tags",
    "query": {
      "match_phrase": {
        "tags.value": "123"
      }
    }
  }
}

Reporting doesn't do this step, it uses the first version directly, leading to no results.
A workaround would be to edit the filter as DSL then paste the correct syntax instead of using UI to add this filter.

[Catch All Triage - 1, 2, 3]


Jumbo - Two logos displayed for the same company

ENVIRONMENT: Windows, Mozilla Firefox
URL: https://firme.peviitor.ro/
Device: Laptop
OS: Windows 10 Pro
STEPS TO REPRODUCE:
Open URL in browser
Type "Jumbo " in the search bar
EXPECTED RESULTS:
The logo company must be displayed only once.
ACTUAL RESULTS:
There are displayed two companies with the same name.

Same


Need API key

Unfortunatelly, it seems that subdomainfinder.c99.nl needs API key to be purchased here now : https://api.c99.nl/dashboard/shop :(
And the domain to use is now: https://api.c99.nl/subdomainfinder?key=&domain=example.com.

fixed the above issue in the following commit
@cosad3s Thanks for raising the following issue.


SET_OPENVPN_MANAGEMENT_PORT_LIST a b c d works

https://github.com/letsconnectvpn/lc-daemon/blob/f7e9b1558af11a6fa1a5db2cee2ecc1e6ae0cdc5/lc-daemon/main.go#L78
there is error checking, but it doesn't show errors when you specify invalid ports, e.g. use a character as port... maybe it should give an error if any of the specified ports is not a valid integer and not 0 < port <= 2^16 − 1. What do you think?

Working on it.
These are possible errors:
ERR: MISSING_PARAMETER
ERR: INVALID_PARAMETER for 0 < port <= 2^16 − 1 , non-integers.
What can be done for duplicate_port_in_portlist? Show no error but port will not be added to portlist?

What can be done for duplicate_port_in_portlist? Show no error but port will not be added to portlist?

Yeah, that makes sense!


[patch] Better docstrings

Not perfect, but closes #344
Fixing the creator and wrapper docstrings themselves will require first addressing #360

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
14 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.002%) to 92.539%

Files with Coverage Reduction
New Missed Lines
%

transform.py
2
98.13%

node_library/standard.py
12
92.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.002%

Covered Lines:
3163

Relevant Lines:
3418

💛  - Coveralls

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
13 unchanged lines in 2 files lost coverage.
Overall coverage increased (+0.002%) to 92.539%

Files with Coverage Reduction
New Missed Lines
%

transform.py
2
98.13%

node_library/standard.py
11
92.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.002%

Covered Lines:
3163

Relevant Lines:
3418

💛  - Coveralls


etcdctl: add discovery-srv global flag for v3

fix #8440

/retest

/test

In which version of etcd is this change first available?
I'm running version 3.2.15 here, released on 22 January 2018, but it doesn't yet know the "discovery-srv" flag introduced here on 5 September 2017.

Ah, it looks like it came in with 3.3.0-rc.0, and is not available in the 3.2.x era.

@seh Yeah, it's in 3.3 https://github.com/coreos/etcd/blob/master/CHANGELOG-3.3.md#etcdctl-v3-1.


Cache busting issue

Can u help me how to solve the cache busting issue. ngbuild --prod is not solved the cache busting issue

Hello, we reviewed this issue and determined that it doesn't fall into the bug report or feature request category. This issue tracker is not suitable for support requests, please repost your issue on StackOverflow using tag angular-cli.
If you are wondering why we don't resolve support issues via the issue tracker, please check out this explanation.


Setup GitHub Workflow for Running Unit Tests

In order to ensure the stability and reliability of our codebase, it is essential to have automated unit tests running for each push and pull request. Currently, our repository lacks a GitHub Actions workflow to run unit tests, and this needs to be addressed to maintain code quality and catch issues early.
Suggested Solution:

Create a new workflow file in .github/workflows/ directory.
Filename: run-unit-tests.yml

Configure the workflow to be triggered on every push and pull_request event to the main branch.

Define job steps:
Checkout the repository.
Setup the environment/java runtime.
Install dependencies.
Run the unit tests.

This looks like a worthy challenge, will like to take this on @unicodeveloper

Sure, looking forward to it! @ogunsakin01


Check if data is an object in loadRemote.

Added data === 'object' to check if data is an object before parsing
 the content. This avoid parsing data that is not useful, like in situations where pinging a file that doesn’t exist return index.html.
If this is not present may happen that the code parse data for minutes. At least this was happening to me.
Any suggestions welcome ;)

Do you have an example of a jsFiddle that demonstrates this problem? There's no parsing happening in the code you're referencing, just a simple property loop.

@rubenv I've actually come here to report the same problem. Seeing this thread, I have tried to produce a jsfiddle example but in the contrived setting of jsFiddle, I failed to do so.
However, I can confirm that I have experienced problems with the same portion of code that @pokono has patched.
The loadRemote function parameter is an url, but it can be an url that returns something else than JSON - as pokono wrote, it could be an index.html file. In that case the loop doesn't actually loop over object properties, but over indices of a (potentially very long) string. That has exactly happened to me because of a misconfigured proxy, resulting in strangely displayed text captions (concatenated multiple times), eventually leading to a browser crash.
As soon as the url was properly configured to serve a json file with translations, the problem disappeared. It wasn't so easy to figure out what's wrong, though.
Anyway, sorry for not being able to reproduce it in a test environment, but I hope you'll find this relevant anyway.

@rubenv I'll provide a test case, so you can check it out. I just haven't had the time yet!

@WWuzzy @rubenv I created a JSFiddle to show the issue here: https://jsfiddle.net/pokono/zj8v65f3/15/. Just run it and look at the console, I'm printing everything that is parsed there.
This is what happen with the changes I did, nothing is parsed unless is an object. https://jsfiddle.net/pokono/7fqgyr9n/2/
I hope this helps.
Please let me know if I can be of any help here.

What is so complicated about this?

Can you rebase the commits? A bit too verbose for a ~1 line change

I will squash the commits when we're getting to the final result that we want. Do you have any idea of why is failing the tests? I was trying to understand but I didn't yet.

Not sure to be honest, but it doesn't look related to your change. o:


First letter disapears with textarea v-model.lazy and @input

Version
2.4.2
Reproduction link
https://jsfiddle.net/kessiacastro/gn9w320q/
Steps to reproduce
When anything is typed in a textarea with v-model.lazy and @input event checking the e.target.value the first letter typed disapears of the textarea. It also happens when using @keydown event.
What is expected?
The typed message should appear normally in the textarea.
What is actually happening?
Only the first letter disappears in the text area.

I think it's an expected behavior and that's how .lazy works: the change event will only fire when textarea loses focus.
More specific in your repro code: when type in any character, input event fired, and this.disableButton = e.target.value got executed and which caused a re-render. In that re-render, vue does render value of message into textarea, which is still empty then because change event never fired during this process.

It looks like the template compilation is adding too many things.
A workaround will be:
<textarea value.prop="message" @change="message = $event.target.value"@input="checkValue"></textarea>

Closing because it's working as expected, it's an edge case though
You can workaround by putting the texarea into a component: https://jsfiddle.net/5nfqd4e8/


Service Bus Messages Have  No Context #2

Hi,
We are using AI to track our system. We have service that receive some info in REST, and post it on Azure Service Bus,
and other services consume this message.
The send/receive of the same message have different operation ID, and they looks like they have different context.
In addition,  the received message have different context than other http/s requests and logs on the same flow. Every trace/dependency on the 'receive' function seems to be without any parent.
Simple app to reproduce:
sender.js:
const appInsights = require('applicationinsights');

appInsights.setup()
    .setAutoCollectConsole(true, true)
    .setSendLiveMetrics(true)
    .start();

const express = require('express');
const axios = require('axios');
const {ServiceBusClient} = require('@azure/service-bus');
const WebSocket = require('ws');
const connectionString = "*****";
const sender = new ServiceBusClient(connectionString, {webSocketOptions: { webSocket: WebSocket }}).createSender('test');
const app = express();
app.post('/sendMessage', async (_req, res) => {
    console.log('log');
    await axios.default.get('https://google.com');
    console.log('log 2');
    await sender.sendMessages({subject: 'subject', body: {key:'value'}});
    res.sendStatus(200);
});

app.listen(3080, '<IP_ADDRESS>', () => {console.log('started')});

receiver.js:
const appInsights = require('applicationinsights');

appInsights.setup().setAutoCollectConsole(true, true).setSendLiveMetrics(true).start();

const axios = require('axios');
const { ServiceBusClient } = require('@azure/service-bus');
const WebSocket = require('ws');

const connectionString = '*****';
const receiver = new ServiceBusClient(connectionString, { webSocketOptions: { webSocket: WebSocket } }).createReceiver(
  'test',
  'test-subscription',
);

const myMessageHandler = async (message) => {
  console.log(`message.body: ${JSON.stringify(message.body)}`);
  await axios.default.get('https://google.com');
  console.log('log 3');
};
const myErrorHandler = async (args) => {
  console.log(`Error occurred with ${args.entityPath} within ${args.fullyQualifiedNamespace}: `, args.error);
};
receiver.subscribe({
  processMessage: myMessageHandler,
  processError: myErrorHandler,
});

This is the current result on Azure portal:
Sender request:

Receiver side:

Thanks!
cc: @orgads

@hectorhdzg Did you have a chance to look into this?

@bivas6, @orgads, Application Insights SDK will try to use the correlation context using incoming HTTP request headers, in this case receiver doesn't have any trace headers, is making a new outgoing HTTP request to Service Bus so a new context will be created, I guess you could add some correlation properties in the actual Service Bus message to be able to associate the telemetry but not much we can do here, regarding other issue where receiver telemetry is not in same context, automatically we will wrap all the telemetry in same context when there is a incoming HTTP request, in this case you don't have that so you will need to create your context and wrap all the code you want to share it, similar to what did in this PR you can also take a look at the code we share to enable this in Azure Functions

For those who needs it, this is the solution we used:
const messageHandlerWrapper = (handler) => {
  return (message) => {
    const traceParent = message.applicationProperties;
    const diagnosticId = traceParent['Diagnostic-Id'];
    const [_, traceId, spanId, _a] = diagnosticId.split('-');
    const context = CorrelationContextManager.CorrelationContextManager.generateContextObject(
      traceId,
      spanId,
      'ServiceBus.process',
    );
    //   const activity = appInsights.startOperation(context, 'ServiceBus.Process');
    const fn = appInsights.wrapWithCorrelationContext(() => handler(message), context);
    await fn();
  };
};

const myMessageHandler = async (message) => {
  console.log(`message.body: ${JSON.stringify(message.body)}`);
  await axios.default.get('https://google.com');
  console.log('log 3');
};

const myErrorHandler = async (args) => {
  console.log(`Error occurred with ${args.entityPath} within ${args.fullyQualifiedNamespace}: `, args.error);
};

receiver.subscribe({
  processMessage: messageHandlerWrapper(myMessageHandler),
  processError: messageHandlerWrapper(myErrorHandler),
});

@hectorhdzg Is it possible for you to hook in subscribe automatically? We didn't add any data to the message, and just used applicationProperties[Diagnostic-Id].

@hectorhdzg ping?

@orgads the way we hook to Azure SDKs is through @azure/core-tracing package, we do not do any patching for specific SDKs, looks like "subscribe" functionality is only present in Azure Service Bus, we are planning to introduce full support for OpenTelemetry in this SDK that should handle this scenario because Azure SDKs are also using it, we are expecting to have a beta release soon.

Ok, thanks a lot.

Hello! I've been having the same issue as specified by @orgads .
The main workflow I was trying to fulfill using function apps was the following:

have a sender component which will defer async work to some worker component through service bus
the worker should receive service bus message, do certain calls to different microservices and fulfill the message
I would like all the subcalls and logs to be in the same operation Id with minimal fuss

Option 1(didn't work):
I sent the sender traceparent inside the service bus message and generated a correlation context by using application insights exported classes like this
const traceParent = new Traceparent(serviceBusMessage.traceParent);
const correlationContext = CorrelationContextManager.generateContextObject(traceParent.traceId, traceParent.spanId, operationName);
return appInsights.wrapWithCorrelationContext(()=>{}, correlationContext)

I noted that the correlation context was properly created with this method by reusing the traceparent from the sender function, however I think there is some bug by using these classes because the end result was that a totally new context was generated inside appInsights.wrapWithCorrelationContext and the passed argument wasn't used properly. Subcalls from the receiver were also not being correlated at all and they generated new operation ids as well. I assume there might be some internals that I'm not aware off and this option won't work without some other setup which might be done inside appInsights.startOperation method.
Option 2(which works):
I also sent the sender traceparent inside the service bus message to be reused by message consumers. Then, I am taking advantage of the mutable context of the function app and do the following:
export function contextPropagatingServiceBusTrigger(serviceBusTrigger: AzureFunction) {
    return async (context: AuthenticatedContext, ...args: any[]) => {
        const operationName = `ServiceBusReceive ${context.executionContext.functionName}`;
        const serviceBusMessage = args[0];
        //use message traceparent, or fallback to default app insights behaviour to use a freshly generated one
        context.traceContext.traceparent = serviceBusMessage?.traceParent ?? context.traceContext.traceparent;
        const correlationContext = appInsights.startOperation(context, context.executionContext.functionName);

        // Wrap the Function runtime with correlationContext
        return appInsights.wrapWithCorrelationContext(async () => {
            const startTime = Date.now(); // Start trackRequest timer
            try {
                // execute the function
                const result = await serviceBusTrigger(context, ...args);
                appInsights.defaultClient.trackRequest({
                    name: operationName,
                    resultCode: 200,
                    success: true,
                    url: context.executionContext.functionName,
                    duration: Date.now() - startTime,
                    id: correlationContext.operation.parentId,
                });
                appInsights.defaultClient.flush();
                return result;
            } catch (err) {
                // we might not need this try/catch, but it's good to have certain syntax errors which will be caught as well
                appInsights.defaultClient.trackException({
                    exception: err,
                });
                appInsights.defaultClient.flush();
            }

        }, correlationContext)();
    };
}

With this option, I am getting the same operationId correctly across the process initiator(sender), receiver + dependency calls.
My question now is if this approach is acceptable, since I wasn't able to find another way of accomplishing the correlation. I was inspired by insights docs for http triggers to reach this way of correlating services communication. Thanks a lot in advance, and I'm looking forward to hearing from you!

Check this out:
https://github.com/microsoft/ApplicationInsights-node.js/issues/973

@tudor33sud both options look fine to me, I can look into the issue you are having with option 1, that should work too, can you provide some test traceParent that you are passing in service bus message?


different compressed data

I use zlib-ng and configure with --zlib-compat, and base on it I build https://github.com/latchset/jose and run testcase of jose, found that https://github.com/latchset/jose/blob/master/tests/alg_comp.c will get failed because of zlib-ng.
alg_comp call deflate to get the compressed data and compare with the pre-defined data, since zlib-ng has optimised deflate with simd or any other optimise issues, the length and content of the compressed data is different from the pre-defined data.
baseed on zlib-ng, also I try to decompress the compressed data from call deflate, the decompressed data is the same with the origin data.
so my question is that zlib-ng do not guarantee the compressed data same with zlib-compressed data, is it by-design or any other influence.
my test platform is aarch64 with gcc10/glibc2.32.

Obviously we won't guarantee that the compressed data is bit-identical but when you decompress both streams, the result should be same. If it isn't, there is a bug that we need to fix.

Obviously we won't guarantee that the compressed data is bit-identical but when you decompress both streams, the result should be same. If it isn't, there is a bug that we need to fix.

I have tried to decompress the compressed data and the result is the same with the origin，no bug.


Make compatible with Latest Stable Version of Foundry (v12)

We are currently running the latest stable version of Foundry. V12 Stable, Build 324.
The latest version of this plugin is only verified with version 11. I have changed the verified version to 12 within the manifest just to see if it would work but it does not.
Do we know when the next version will be planned to be released?
Cheers.

I second this, please!


Add resource detection for Jenkins pipelines

Is your feature request related to a problem?
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
The resource detection functions should detect resource information from the underlying CI/CD system, in this case, Jenkins pipelines. It should append or override the resource value in telemetry data with this information.
A basis for this work is following the OTEL Collector resource detection processor.
Describe the solution you'd like
Append/add Jenkins pipeline-specific information, such as;

Pipeline details
Stage details
Step details

Describe alternatives you've considered

Additional context

Ensure labels are added. Update docs as per https://plugins.jenkins.io/opentelemetry/


Local fasta file loading

Hi,
I’m willing to make my IGV browser load local fasta files. I’d like to have this functionality in the webpage where the user sets some of the input values (genref, locus, url, filename) which are then sent to the my IGV browser page to populate the options variable.
I know the igv-webapp  has a navbar component “Genome” which allows to load local files.
So, I’ve installed a copy of the IGV webapp locally to look for the piece of code responsible for the local file loading so that I can import it and adapt it in my project. When I open the menu Genome, select “Local file…” and choose a fasta + fai files, I get the warning “There are no tracks in the track registryy for genome ${genomeID}”.
The warning is given in file node_modules/igv-widgets/dist/igv-widgets.js, in function
updateTrackMenus() {
	[..]
	const paths = await getPathsWithTrackRegistryFile(genomeID, trackRegistryFile);

	if (undefined === paths) {
    		console.warn(`There are no tracks in the track registryy for genome ${genomeID}`);
    		return;
	}
	[..]
}

The paths variable is undefined.
For what I see, it is not enough to select fasta+fai in the Local file element.
Am I right? What am I missing? How could I reach my goal?
Thank you in advance for your help.

That is a warning, not an error.   It means there will be no tracks
available for this genome.
On Thu, Jan 28, 2021 at 3:21 AM martina-g<EMAIL_ADDRESS>wrote:

Hi,
I’m willing to make my IGV browser load local fasta files. I’d like to
have this functionality in the webpage where the user sets some of the
input values (genref, locus, url, filename) which are then sent to the my
IGV browser page to populate the options variable.
I know the igv-webapp has a navbar component “Genome” which allows to load
local files.
So, I’ve installed a copy of the IGV webapp locally to look for the piece
of code responsible for the local file loading so that I can import it and
adapt it in my project. When I open the menu Genome, select “Local file…”
and choose a fasta + fai files, I get the warning “There are no tracks in
the track registryy for genome ${genomeID}”.
The warning is given in file node_modules/igv-widgets/dist/igv-widgets.js,
in function
updateTrackMenus() {
[..]
const paths = await getPathsWithTrackRegistryFile(genomeID, trackRegistryFile);
if (undefined === paths) {
		console.warn(`There are no tracks in the track registryy for genome ${genomeID}`);

		return;

}
[..]
}
The paths variable is undefined.
For what I see, it is not enough to select fasta+fai in the Local file
element.
Am I right? What am I missing? How could I reach my goal?
Thank you in advance for your help.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/igvteam/igv-webapp/issues/199, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHD2HDWEX2TZYMSVBVV7YDS4FCCXANCNFSM4WW4IBPA
.

That is a warning, not an error.   It means there will be no tracks
available for this genome.
On Thu, Jan 28, 2021 at 3:21 AM martina-g<EMAIL_ADDRESS>wrote:

Hi,
I’m willing to make my IGV browser load local fasta files. I’d like to
have this functionality in the webpage where the user sets some of the
input values (genref, locus, url, filename) which are then sent to the my
IGV browser page to populate the options variable.
I know the igv-webapp has a navbar component “Genome” which allows to load
local files.
So, I’ve installed a copy of the IGV webapp locally to look for the piece
of code responsible for the local file loading so that I can import it and
adapt it in my project. When I open the menu Genome, select “Local file…”
and choose a fasta + fai files, I get the warning “There are no tracks in
the track registryy for genome ${genomeID}”.
The warning is given in file node_modules/igv-widgets/dist/igv-widgets.js,
in function
updateTrackMenus() {
[..]
const paths = await getPathsWithTrackRegistryFile(genomeID, trackRegistryFile);
if (undefined === paths) {
		console.warn(`There are no tracks in the track registryy for genome ${genomeID}`);

		return;

}
[..]
}
The paths variable is undefined.
For what I see, it is not enough to select fasta+fai in the Local file
element.
Am I right? What am I missing? How could I reach my goal?
Thank you in advance for your help.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/igvteam/igv-webapp/issues/199, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAHD2HDWEX2TZYMSVBVV7YDS4FCCXANCNFSM4WW4IBPA
.

ah okay, thank you :-)
Is there a function that allows to import the local genome file loader functionalities in a custom IGV browser?
I don't know if this is the right place to ask since it is not an IGV issue, but mine :-)
thank you for your help

ah okay, thank you :-)
Is there a function that allows to import the local genome file loader functionalities in a custom IGV browser?
I don't know if this is the right place to ask since it is not an IGV issue, but mine :-)
thank you for your help

Sorry I don't understand the question.

Sorry I don't understand the question.

I'm sorry, I was not clear enough.
The igv browser is instantiated in viewer.html

          [..]

The variables server_url, filename, igvLocus and genref are set in index.html.
For example genref is set as follows:

    <form action="" id="genrefForm">

              Select reference genome

            <select id="selectGenref" name="genref">
                 <option value="" disabled selected></option>
                 <option value="hg38">hg38</option>
                 <option value="hg19">hg19</option>
                 <option value="hg18">hg18</option>
              </select>

 Add local reference genome
                 // modal to load fasta + fai
                // in js script, read fasta + fai
                      // set local genome name
                      // genref = "myGenref';
                     //  localStorage.setItem("genref", genref );

                <button id="btnLocalGenref" class="btn blue" type="submit"> submit</button>

         </form>
    [..]

I'd need to implement the
Add local reference genome
 section and, once in viewer.html, making the IGV browser read and load the local genome.
Is it complex to implement?
Hope this is much clearer now..
Thank you for your help

I'm sorry, I was not clear enough.
The igv browser is instantiated in viewer.html

          [..]

The variables server_url, filename, igvLocus and genref are set in index.html.
For example genref is set as follows:

    <form action="" id="genrefForm">

              Select reference genome

            <select id="selectGenref" name="genref">
                 <option value="" disabled selected></option>
                 <option value="hg38">hg38</option>
                 <option value="hg19">hg19</option>
                 <option value="hg18">hg18</option>
              </select>

 Add local reference genome
                 // modal to load fasta + fai
                // in js script, read fasta + fai
                      // set local genome name
                      // genref = "myGenref';
                     //  localStorage.setItem("genref", genref );

                <button id="btnLocalGenref" class="btn blue" type="submit"> submit</button>

         </form>
    [..]

I'd need to implement the
Add local reference genome
 section and, once in viewer.html, making the IGV browser read and load the local genome.
Is it complex to implement?
Hope this is much clearer now..
Thank you for your help

Nevermind, I've found the solution in the reference object+ its 'fastaURL' property.
Thank you for your time, I really appreciated your quick response.

Nevermind, I've found the solution in the reference object+ its 'fastaURL' property.
Thank you for your time, I really appreciated your quick response.

Ah yes, that is perhaps confusing, but fastaURL, and for that matter all properties that end with URL,  can take a File blob as a value.

Ah yes, that is perhaps confusing, but fastaURL, and for that matter all properties that end with URL,  can take a File blob as a value.

Hello,
I'm not good at javascript. Would you mind sharing the code how to use File blob to load local fasta file?
Thanks,
Yichao

All the code is in the repository, however to load a local file you just use the Genome menu.


Purpose of Foundations IA

Objective: Clarify content and IA of Foundations prior to designing pages

Purpose of Foundations
Objectives + Goals of Foundations
Type of content / information level within Foundations
Site IA: Where does Themes go?
Site IA: Where do Design Tokens go?
Propose a Foundations IA

Frappe Goal: Achieve alignment with leads on proposed Foundations IA
Figjam link

Update: Input received from Paul + Ben + Josh
Foundations IA key changes:

Align page titles to match Foundation names in code
Categorize certain Foundations into groups
Consolidate smaller Foundation pages into others (i.e. Accent + Opacity into Color, Scale into Size)
Introduce Corner radius

EOS Review update: Shared Figma link with the team for feedback + questions

Published in Frappe


Bump creekVersion from 0.3.0 to 0.3.1-SNAPSHOT

Reviewer checklist

[ ] Read the contributing guide
[ ] PR should be motivated, i.e. what does it fix, why, and if relevant, how
[ ] Ensure relevant issues are linked (description should include text like "Fixes #")
[ ] Ensure any appropriate documentation has been added or amended

Coverage: 98.238%. Remained the same when pulling 9679bd25311fe94fdf12f825561cc1b0ccf464a2 on to_snapshot into c4a0074c8c38e15847f84e7e701f65793b9264ca on main.


How to get the rows of the table?

How do you get the rows of a table?
I tried doing:
  elements(:foo_table, "#foo_table tbody tr")

And it returns an array of table rows, so my question is. How would then I collect each of the row columns data?

I figure this out. Thanks!