Unable to test functional component in jest/enzyme using useTrackMetric hook

Issue: When using useTrackMetric hook within functional component, it renders fine in development but throws "Invalid hook call. Hooks can only be called inside of the body of a function component." when trying to render in a jest/enzyme unit test.
Stack trace appears to be pointing at the use of useRef() within useComponentTracking although I can't seem to figure out what hook rule is being broken.
at useRef (node_modules\@microsoft\applicationinsights-react-js\node_modules\react\cjs\react.development.js:1504:20)
at useComponentTracking (node_modules\@microsoft\applicationinsights-react-js\dist-esm\useTrackMetric.js:11:20
at _default (...\SimpleComponent.js:6:32)

I was able to repro in my local environment with the code posted below, though I'm hoping this doesn't boil down to some kind of version resolution issue on my end.
Functional Component
//SimpleComponent.js

import React from 'react';
import { ReactPlugin, useTrackMetric } from "@microsoft/applicationinsights-react-js";

export default function() {
    const aiPlugin = new ReactPlugin();
    const metricTrackingHook = useTrackMetric(aiPlugin, "Test");

    return (

Test

    )
}

Unit Test
//SimpleComponentTest.test.js

import React from 'react';
import { render } from '@testing-library/react';
import { mount } from "enzyme";
import SimpleComponent from "./SimpleComponent";

describe('SimpleComponentTest', () => {
    it('SimpleComponent engaged onMouseEnter', () => {
        // arrange

        // both render() and mount() return same hook error

        // let rtlRender = render(<SimpleComponent />)
        let enzMount = mount(<SimpleComponent />)

        // act
        // assert

    });
});

Expected Behavior: Functional Component renders without error.
Relevant Dependency Versions:
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "@microsoft/applicationinsights-react-js": "^3.0.5",
    "@microsoft/applicationinsights-web": "^2.5.10"

  "devDependencies": {
    "@testing-library/jest-dom": "^5.11.4",
    "@testing-library/react": "^10.4.9"
    "axios-mock-adapter": "^1.18.1",
    "babel-jest": "^24.9.0",
    "enzyme": "^3.11.0",
    "enzyme-adapter-react-16": "^1.15.2",
    "enzyme-to-json": "^3.4.4",
    "jest": "^24.9.0",
    "jest-environment-jsdom-sixteen": "^1.0.3"
  }

Any insight into this is extremely appreciated. Thank you

Update: Spent some time over the holiday break trying to reproduce this issue in codesandbox.
I was able to get a working example in codesandbox pretty quickly, and was also able to get a second working example built off of the create-react-app codesandbox template.
Because our current app uses create-react-app, I still have a feeling that might be causing issues somehow, even considering the possibility of 2 instances of React running with the same version. Oddly enough, this hook error only happens when trying to unit test a component using this custom hook, and does not actually occur in a production run.
Things to note:

Tried the suggested window.React1 === window.React2 for react and react-dom in several modules, all returning true.
npm ls react and npm ls react-dom report 1 instance of each module, both with the same version.
I am able to successfully test a default React hook, such as React.useState within my SimpleComponent without issue, this issue seems scoped more towards testing a custom hook from a third party plugin.
Stepping through with a debugger; it appears  when we eventually reach useComponentTracking's invocation of useRef react.development.js.resolveDispatcher() is showing null for ReactCurrentDispatcher, which ultimately triggers the "Invalid hook call" error. Wondering if this means React doesn't know what functional component invoked useRef(), or if this could somehow infer that my SimpleComponent is being rendered with 1 instance of React, while useRef is being invoked on another instance of React?

Happy to provide any future updates, should I find a fix/workaround to this issue, but at this point I have run out of ideas on how to successfully unit test components using these custom hooks, within the scope of our app.

Update: After further digging, it appears the issue is coming from an instance of react integrated within dist/applicationinsights-react-js.js, causing my jest test to fail since there are 2 different instances of react.
Issue:
When running jest test SimpleComponentTest.test.js, my SimpleComponent uses the useComponentTracking hook, which invokes useRef(), which then invokes resolveDispatcher() ultimately throwing an "invalid hook error" as ReactCurrentDispatcher is mysteriously null. After further debugging, it appears the react-based functions are being invoked witihn the scope of dist/applicationinsights-react-js.js,  as opposed to node_modules/react. I think this explains why ReactCurrentDispatcher is null, as there are 2 instances of react at play.
I'm confused how dist/applicationinsights-react-js.js ends up with its own instance of react, which essentially leaves me with 2 react instances (violates hook rule: 3) when testing via jest (enzyme as well).
Questions:

With react being listed as a peerDependency is it expected that dist/applicationinsights-react-js.js has its own instance of react integrated within?

It's important to note, the react instance integrated within dist/... is the same version of react used by my app (which makes sense due to peerDependency).

Are there any recommendations on how to successfully unit test components that use these custom hooks, such as useComponentTracking?

My only option this point, is to possibly look into something like jest-puppeteer to emulate a browser environment when testing.

Additional Notes:
This issue doesn't seem to happen when running in a browser, as everything behaves as expected. In fact, if I change the main key in applicationinsights-react-js/package.json to use dist-esm/application... instead of dist/application..., my jest test execution complains about the use of import as the files in dist-esm are obviously not transpiled (as expected). If I quickly update my jest config, I can have the files in dist-esm transpiled before test execution, which results in a passing test in which calls to useRef() and resolveDispatcher() are now being invoked from the true node_modules/react instance, where we have an established ReactCurrentDispatcher.
Likewise, if I update the module key in applicationinsights-react-js/package.json to use dist/application... instead of dist-esm/application..., the browser based execution also returns the same "invalid hook error", likely due to the fact that dist/applicationinsights-react-js.js is invoking react-based functions from within itself, instead of the functions being invoked within node_modules/react.
Unfortunately, I know very little about webpack, but my hunch is running in a web environment ultimately uses dist-esm files (as per the module key in package.json), whereas running a jest test uses dist files (as per the main key in package.json), which somehow have the aforementioned integrated version of react.
Any insight into this would be greatly appreciated.


Make spell scrolls behave more sanely

Tweaks single-use spell scrolls to not be consumed if they are done executing within a single tick and have not consumed any mana.
Also includes a rewrite of DefaultSpellExecutor#flattenNode by @ArkoSammy12 that has flattened its logic (pun unintended), so that there is no risk of a StackOverflowException.

by @ArkoSammy12

https://imgur.com/8NjGn55

I updated CCA to 6.1.1 as Gradle has been failing to download 6.1.0 since yesterday. Let me know if it's only an issue on my end.

Fixes #24.

Fixes #25, but we should consider giving a unique flair to these variations of the translation key.

Going to merge this now, don't mind if I do.


Bug fix: ECDb use unescaped class to query disqualify flag for class which fail if class name is a keyword

/azp run imodel-native


fix: make methods on ctx configurable & writable

Close https://github.com/Brooooooklyn/canvas/issues/392
Close https://github.com/Brooooooklyn/canvas/issues/385

Thanks, 0.1.17 works like a charm 🕺🏻
I check the CI that you set up and wow this is awesome 🔥🔥🔥

@jeetiss Thanks! If you have any problem with @napi-rs/canvas. feel free to open issues!


dhcp-range not added in dnsmasq for multiple ip ranges for the guest physical network

ISSUE TYPE

Bug Report

COMPONENT NAME

VR

CLOUDSTACK VERSION

at least 4.18+

CONFIGURATION

Basic Zone with 2 different IP ranges for Guest Physical network.
OS / ENVIRONMENT

SUMMARY

When 2 ip ranges are added for a guest physical network for a basic zone, the dnsmasq.conf on the VR has only 1 entry for dhcp-range which results in dhcp requests getting ignored if the VM's IP is in the second IP range.

EXPECTED RESULTS

dhcp-range in the dnsmasq.conf should have the same number of entries as the the number of ip ranges in the physical network.

ACTUAL RESULTS

dhcp-range in the dnsmasq.conf have only 1 ip range irrespective of number of IP ranges in the guest physical network.

@vishesh92
have you tested with <IP_ADDRESS> or later ?

@vishesh92 have you tested with <IP_ADDRESS> or later ?

Yes. I tested with <IP_ADDRESS> & <IP_ADDRESS>.

I debugged it a little more with help from @weizhouapache . Looks like this is the duplicate of https://github.com/apache/cloudstack/issues/8158
The extra dhcp-range options are set in /etc/dnsmasq.d/cloud.conf. For 4.18, only 1 entry is added irrespective of the number of ip ranges added in the physical network. But for 4.19, the number of entries are equivalent to the number of ip ranges added for the physical network.


YAML output

🤖 AutoRest automatic publish job 🤖
> will publish once PR gets merged

🤖 AutoRest automatic publish job 🤖
> will publish once PR gets merged

closing in favor of pipeline steps that can do the conversion


Indent: bogus characters inserted in visual-block append

Assume that you have two lines of code:
var_a = something()
b = something()

If you use c-vj$A; to append a ; character at the end of each line and if ; is part of 'indentkeys' and also if 'indentexpr' function only indents the first line, then the bottom line will include the last N characters of the original first line after pressing <esc>.
Example 'indentexpr' for the above code:
function! MyIndentFunction()
    if v:lnum == 1
        return &sw
    else
        return 0
    endif
endfunction

Fixed in e2e69e48134cbfdedea7802810932f8592705024 (patch 8.0.1041).


New rem release?

Is there any chance for a new rem release? There recently was re v2.1.0 and baresip v2.0.0 also seems to be around the corner.

Yes we prepare a new release and align the version number with re and baresip.

Closing due to the existence of tag v2.0.0 - thank you.


Select doesn't render properly in layouts other than desktop

Phone

Tablet

Hey whats up... this is the expected behaviour, on mobile it should render the native picker. For more details check https://tom-select.js.org/

Thanks! Loving this gem btw! 💯


[FLINK-30944] ExecutionGraphPartitionReleaseTest leaks threads

What is the purpose of the change
ExecutionGraphPartitionReleaseTest leaks threads through ExecutionGraphPartitionReleaseTest.scheduledExecutorService. The ScheduledExecutorService is instantiated but never shut down.
Brief change log

Fix the problem of thread leaking for ExecutionGraphPartitionReleaseTest

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, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no

Good catch!  Thanks @XComp for the review. I have updated the second commit message with the prefix of "[hotfix]".

The test failure is caused by FLINK-30972. I'm gonna go ahead and merge this PR because it touches a test that actually ran and succeeded.


fix: don't make column items temporarily disappear during rename

Steps to Reproduce

Login
Create board
Create column
Create item
Rename column

Expected Behavior
Items don't temporarily disappear on column rename
Actual Behavior
Items temporarily disappear on column rename

Codecov Report

Merging #736 (47e1cec) into master (adfbf99) will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##            master      #736   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           75        75
  Lines          793       802    +9
  Branches       119       122    +3
=========================================
+ Hits           793       802    +9

Impacted Files
Coverage Δ

src/components/Column/ColumnName.tsx
100.00% <ø> (ø)

src/store/columnsSlice.ts
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


Incorrect handling/color-coding of variables and labels with dash (-)

I tested your VS Code extension on an MI source
Dash (-) inside a variable or label is not interpreted correctly, but seems to be considered as a minus operation
e.g. MOVE-USAGE:
CPYBLA       IO-SRCLIB,OIR-SRCLIB
Slash (/) in CMP* MI operations seems to be considered as a divide operation
e.g. CMPBLA(B)    LIBNAM,'QTEMP     '/EQ(TEMPLIB)

@fisketjon big thanks for making an issue for MI, I definitely need a lot of help identifying issues with this language.
Unfortunately the company I work for doesn't have a single MI program and by extension I've never written any MI from scratch.
So I tried to piece it together from IBM's documentation, but its quite the dense subject to read about and understand (in my opinion).
Here are the corrections to the issues you highlighted. I included them in the milestone 5.6 and I hope to release this version after finding maybe 1 or 2 more issues to include.

Please let me know if you find anything else. I know it can be annoying coming across and reporting issues, but it is a giant help to smooth out the syntax highlighting.

@fisketjon Fixed in release v0.5.6


Documentation component

Is your feature request related to a problem? Please describe.
I want to add my documentation nativly to the website.
Describe the solution you'd like
A template or component that allows you to add markdown as documentation.
Describe alternatives you've considered
Just add the content as native text but a component for this specific usecase will look definitly better
Additional context
Im pro user :D

Thanks for the request!
We can start adding a few small components for this, but for a full-featured solution I might recommend https://fumadocs.vercel.app/
They've done a phenomenal job with their implementation :)


HSeries pass might be nondeterministic

See https://github.com/CQCL-DEV/eldarion/pull/105#discussion_r1735890705
Not entirely sure that it's HSeriesPass' fault, but disabling force order seems to produce deterministic results...

Can no longer replicate - closing


Bug 1710293 - Don't explicitly set storagePrefix to use the default value

/assign @smarterclayton @mfojtik @sttts @deads2k @derekwaynecarr
Not setting this value will cause us to default it from here: https://github.com/openshift/origin/blob/7599337aeefb8314f9b5bb832b42639d4e28ce26/pkg/cmd/openshift-kube-apiserver/configdefault/kubecontrolplane_default.go#L58

/lgtm
Discussed via Slack, this will break the beta upgrades and existing clusters after receiving an upgrade won't see the kubernetes resources created pre-upgrade.
For that, the e2e-upgrade is failing now and this PR will have to be green button merged (or we need to use /override).
@smarterclayton

/override ci/prow/e2e-aws-upgrade
This job deliberately breaks backwards compatibility with no possible migration


Translation / locale support.

It seems like the plugin breaks the locale translations of the labels for default menu items. For example, prior to installing the plugin, the Dashboard link in the French locale was translated as Tableau de bord. After installing the plugin it reverted to the translation for the English locale which is my primary locale.
My suggestion would be that this plugin follows Craft's default behavior and checks the site static translation files to see if there is a localized translation for the menu item label. In this way standard menu items would continue to be translated on a per locale basis as they have been, and it would also allow for adding locale translation for custom menu items added via the plugin.
I realize that I can override the menu item name in a layout for a user group by manually changing the menu item label, but this isn't ideal because it is possible to have members of a single user group that have different locale preferences. So choosing one locale for a user group and manually translating it isn't a very good option.
I realize this request probably entails a lot of work but I just wanted to mention it because I thought it would be a good addition for future versions. Other than that, this plugin is awesome. Thanks for the great resource.

Thats a great point, I hadn't taken that into consideration as each menu label is stored in the locale they're generated in. However, while they may be stored in one locale, its a quick fix to have them outputted in the destination locale - its something I considered while doing it - just didn't take into account being able to switch.
Note that if you label something that doesn't have a static translation, it'll appear in the locale you specify. For example - if you re-label a menu item with My menu item, this will be its name for all locales. You could easily add your own static translations to cater for this however.
In any case, would you like to try out the latest master for me? I've tested through a few locales, but just to be safe, would be great to know if you're still having issues.

Added in 1.7.5, but let me know if you have any further issues! Closing for now.

Tried it after the update. It is working great. Thanks for implementing this feature.


Adding comments to JSON configuration?

Description
With TCL files being Not Recommended for New Designs (NRND), the way forward appears to rely on JSON files.
There are a number of configurations that I would like to annotate, either because they are important for later steps (e.g. power nets via blackboxed macros) or because they have a range of values that a user can select that will produce a valid design (e.g. area or density).
However, adding a Javascript comment appears to break the flow.
What is the recommended way to add a comment in a JSON configuration file?
Proposal
The documentation should suggest the appropriate way of documenting configuration choices, preferrably within the JSON file itself.

The JSON format does not support comments, other than a number of extensions such as Microsoft's JSONC and JSON5 which both compete (and the target of some light reading material: https://stackoverflow.com/questions/29959191/how-to-parse-json-file-with-c-style-comments).
I'd also ruled out YAML for config files for a different reason: #1294
I do recognize the need for comments though. I'm leaning towards JSONC, but the problem is Microsoft only officially offers a Node.js parser: https://github.com/microsoft/node-jsonc-parser, and all the Python solutions I've found are just hacky, regex-based solutions. (I guess I can write a parser.)
Meanwhile, JSON5 has a more mature library ecosystem, but greatly deviates from the JSON standard- and the same complaints I have for YAML mostly apply.
So I have a lot to consider and I'm just leaning towards JSONC with a custom parser. 🙃

My solution so far has been to add a fake key above the node in question called "comment" with a value that's the acutal comment content. It seems to do the trick, though my editor is not fond of the duplicate keys.


update guidebook-worksheets

General notes

I am keeping the introduction to this document as is (with a few small modifications) because I think it has good notes to keep in mind, but as of our Thursday, August 6th meeting (#19) we decided to go forward with creating the table that students will be interacting with directly rather than drafting a whole "outline" document as was originally proposed. This is a less redundant approach & saves work - the table can be refined and completed with the relevant links in an ongoing basis.

Right now the document has a separate table for each class meeting, but the idea is that as we complete the action items and move the proposed outline elsewhere (as was discussed that Vincenzo may find it useful to have such document to follow through in class), all the ** individual tables will be merged into a single table that will contain all the appropriate links**, and which will be available in the STAT545 website.

In addition, if you confirm the action items make sense, I will move them to Asana instead.

On the note of where to keep these "outlines" of each class, I think that everything should be located in the worksheet, given that one of the goals is to keep students focused on the in-class demos & worksheet through minimizing the amount of documents that students have to flip through while on Zoom. This would also substitute the "summary" of the key points of the lecture that we initially discussed as having in the main table (https://github.com/UBC-STAT/stat545.stat.ubc.ca/pull/20) - after creating these tables it felt a bit awkward to add this section because not all points of the outline covered in class will necessarily have a resource associated to them, I think that having a list of key resources may make most sense. To summarize this point, I see the table as something that students will visit (1) prior to, and (2) after the class if they want to access further resources or revisit anything in the worksheet, which they could also do locally.

As you will notice, I have started going through the class meetings using the new proposed topics outline in #25 rather than the old guidebook guideline, I hope this is okay!

I think that classes 1 & 2 follow a bit of an unusual outline compared to what we have in mind because they're very introductory, but starting at class 3, I think the proposed model that we have been discussing of alternating between in-class demos + lecture worksheets really starts to take shape - which is why I also think that we should prioritize figuring out the workflow of 1 + 2 because they may be more prone to in-class difficulties, particularly given that they are online.

From August 13 meeting:

Worksheets for Lectures 1-3 will be optional. Perhaps even make this one worksheet. This is to reduce headache with people dropping our and registering in the first couple of weeks. Also to get people warmed up with doing worksheets.

Looks good to me. Sorry for the delay, I was away on Friday.


[Proposal] support custom message send & receive method

by doing so, messagehub can be use to communicate in electron render & main process, or web pages communicate via storage event

done, ready to release


Fix log issues

Make dir before setting log dir for glog
Don't add "\n" after glog message, because it will add \n for you
Explicitly use glog.V(3) as debug message, and glog.V(1) as info, and
only use glog.V(1) for really important information in case it messes
all the log files. (Not finished, there's only small part here)
Some tiny fixes

Signed-off-by: Zhang Wei<EMAIL_ADDRESS>

LGTM


LoRA finetuning script

Hi, could you please provide the LoRA finetuning script?

您好，由于显卡的显存有限，我无法使用full-parameter 微调，因此我想使用LoRA 微调textMonkey， 请问您能提供一下LoRA 的脚本吗？这里我试试在finetune_textmonkey.sh加了 use_lora，不过有报错如图。

We have not fine-tuned TextMonkey with LoRA; you may attempt to fine-tune with LoRA using Mini Monkey. From your error report, it is likely due to some compatibility issues with the Peft library; you can try again.

We have not fine-tuned TextMonkey with LoRA; you may attempt to fine-tune with LoRA using Mini Monkey. From your error report, it is likely due to some compatibility issues with the Peft library,

Thanks


Build of 5.2.1 fails on aarch64 with error: use of undeclared identifier 'vrndmq_f32'

Description
Building ITK 5.2.1 on openSUSE Tumbleweed aarch64 with eigen 3.4.0, I get th following error:
[ 2660s] [836/4503] cd /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/Modules/ITKLevelSets && /usr/bin/castxml -o /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /usr/bin/c++ -mbranch-protection=standard -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -std=c++11 ")" -w -c @/home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/ITKLevelSets.castxml.inc /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.cxx
[ 2660s] FAILED: Wrapping/itkCollidingFrontsImageFilter.xml /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.xml
[ 2661s] cd /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/Modules/ITKLevelSets && /usr/bin/castxml -o /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /usr/bin/c++ -mbranch-protection=standard -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -flto=auto -g -DNDEBUG -Wcast-align -Wdisabled-optimization -Wextra -Wformat=2 -Winvalid-pch -Wno-format-nonliteral -Wpointer-arith -Wshadow -Wunused -Wwrite-strings -funit-at-a-time -Wno-strict-overflow -Wno-deprecated -Wno-invalid-offsetof -Woverloaded-virtual -Wstrict-null-sentinel -std=c++11 ")" -w -c @/home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/ITKLevelSets.castxml.inc /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.cxx
[ 2661s] In file included from /home/abuild/rpmbuild/BUILD/ITK-5.2.1/build/Wrapping/itkCollidingFrontsImageFilter.cxx:11:
[ 2661s] In file included from /home/abuild/rpmbuild/BUILD/ITK-5.2.1/Modules/Core/Common/include/itkSymmetricSecondRankTensor.h:29:
[ 2661s] In file included from /home/abuild/rpmbuild/BUILD/ITK-5.2.1/Modules/Core/Common/include/itkSymmetricEigenAnalysis.h:23:
[ 2661s] In file included from /usr/include/eigen3/Eigen/Eigenvalues:11:
[ 2661s] In file included from /usr/include/eigen3/Eigen/Core:214:
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3096:10: error: use of undeclared identifier 'vrndn_f32'
[ 2661s] { return vrndn_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3099:10: error: use of undeclared identifier 'vrndnq_f32'
[ 2661s] { return vrndnq_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3102:10: error: use of undeclared identifier 'vrndm_f32'
[ 2661s] { return vrndm_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3105:10: error: use of undeclared identifier 'vrndmq_f32'
[ 2661s] { return vrndmq_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3108:10: error: use of undeclared identifier 'vrndp_f32'
[ 2661s] { return vrndp_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3111:10: error: use of undeclared identifier 'vrndpq_f32'
[ 2661s] { return vrndpq_f32(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3891:10: error: use of undeclared identifier 'vrndnq_f64'
[ 2661s] { return vrndnq_f64(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3894:10: error: use of undeclared identifier 'vrndmq_f64'
[ 2661s] { return vrndmq_f64(a); }
[ 2661s]          ^
[ 2661s] /usr/include/eigen3/Eigen/src/Core/arch/NEON/PacketMath.h:3897:10: error: use of undeclared identifier 'vrndpq_f64'
[ 2661s] { return vrndpq_f64(a); }
[ 2661s]          ^
[ 2661s] 9 errors generated.

Steps to Reproduce
Build against eigen 3.4.0 (?)
Expected behavior
Build should succeed on aarch64.
Actual behavior
Build fails on aarch64.
Reproducibility
100%
Versions
ITK 5.2.1
Environment
openSUSE Tumbleweed aarch64
Additional Information
N/A

Cc @badshah400

@ggardet the build succeeds with ITK's vendorized version of Eigen? If so, can you diff ITK vs openSUSE Eigen and submit a patch to the OpenSUSE Eigen package?

The commit involved is likely https://gitlab.com/libeigen/eigen/-/commit/1e0c7d4f4933b12a325dbaa2c79ce946bb13f7d6

I reported the issue to eigen: https://gitlab.com/libeigen/eigen/-/issues/2390

According to Eigen, this is an ITK issue.

You are most likely using both Eigen. ITK's internal and external. Are you compiling with ITK with ITK_USE_SYSTEM_EIGEN:BOOL=ON?


RAS features for OS-A platform server extension and removal of unneeded sections in the spec

Merged

Hi, the committed text does not define the RAS acronym anywhere. It should be added to the terminology table at least.

Hi Mitchell,
Good catch. Yes, the RAS abbreviation should be expanded out in the spec.
Will send an update shortly.
Regards
Kumar
From: Mitchell Horne @.>
Sent: Friday, June 25, 2021 1:25 PM
To: riscv/riscv-platform-specs @.>
Cc: Kumar Sankaran @.>; State change <
@.>
Subject: Re: [riscv/riscv-platform-specs] RAS features for OS-A platform
server extension and removal of unneeded sections in the spec (#23)
Hi, the committed text does not define the RAS acronym anywhere. It should
be added to the terminology table at least.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/riscv/riscv-platform-specs/pull/23#issuecomment-868814807,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABLRGVT3VVRYVOUJXPOK3I3TUTQZTANCNFSM47IYYWPQ
.


[OPENJDK-2425]Revert label check condition. Update build numbers for …

This is reverting the test change needed for the Jan cpu for the ubi9 jdk21 container. The label has been fixed.

looks good to me. ty~


Update course with survey result from COBOL WG

Course Details
GitHub
Description
The first chapter of Course 2 highlights several facts on the use of COBOL on today's era.
With the recent survey conducted by the COBOL Working Group, we may want to take a look at the result of the survey, and incorporate that to the chapter or replace the existing content with updated and cited data from the survey.
Problems
No response
Additional Context
Links:

Survey results are available on this TechChannel article: https://techchannel.com/Trends/10/2021/special-report-cobol-survey
COBOL Working Group mailing list: https://lists.openmainframeproject.org/g/wg-cobol

Currently listed statements:

COBOL is everywhere. You have probably used an application written in COBOL today. For example, consider the following statistics:

About 95% of ATM swipes use COBOL code.
COBOL powers 80% of in-person transactions.
Every day, COBOL systems handle $3 trillion in commerce.

How pervasive is COBOL? Consider these mind-boggling facts:

Every day there are 200 times more COBOL transactions executed than there are Google searches.
There are over 220 billion lines of COBOL programs running today, which equates to around 80% of the world's actively used code.
1,500,000,000 lines of new COBOL code are written each year.

😍

Hi @ashiskumarnaik, thanks for your interest in contributing back to the course. On release 3.0.0 of the course, we split Course 1 into two, thus the referred chapter is now relocated to Course 2. Main post updated to reflect that. Thank you!

HI @tanto259 , yeah I got that and the PR is updated as you said :)


Hovering on Real-time Charts

This is related to #63

Can you elaborate?

Hover info on real-time charts. For showing data points exact XY values.

@woozyking - Are you expecting the real-time charts to remain static more often than not? Many users have the charts continuously running and it would be very hard to keep the mouse over an individual point for long.

@rsandor for example something like this http://c3js.org/samples/api_flow.html
it can be an option that in between the updates (while the graph is relatively static), hover would trigger a stats label.
but I totally see your point, as I have various use cases which include update with an interval below 1 second. let this be a suggestion, and only when it's not impacting performance negatively.

@woozyking for sure, I'll keep it rolling around my head and see if I can come up with a good approach.

@rsandor after educating myself further with web data visualizations techniques, I have realized that this is quite difficult due to the use of Canvas for the real-time charts. But not impossible - https://square.github.io/cubism/ would be a far better example (than c3.js), which uses some spans on top of the Canvas element to reveal the values mouse hover over. Hope this could help :)

@woozyking - It's not so much about it being hard because of canvas, but more that by design I have tried to make real-time charts as "continuous" as possible. This means that given an event duration of 1s for new data to reach the chart, we attempt to make the tween (or movement frames) take exactly 1s to transition to the next data point. The result is that the charts are in constant motion, making interactivity very hard.
If the charts were paused in some way or something like that it would be a completely different story. But this seems like am implementation detail for the specific application of the charting.

Makes sense. I agree that the real-time chart by design should be used as a pure "visual" tool to see the trend in motion, instead of figuring out exact values at certain points.
I also realized that the example of Cubism isn't exactly the same, as its use case and design, as Epoch.
I think this one can be closed now.


[ISSUE] With opensearch self-signed cert, there is no way to supply password to JKS trust store, operate and tasklist fail

Describe the issue:
Our documentation
https://docs.camunda.io/docs/next/self-managed/setup/guides/using-existing-elasticsearch/#connecting-to-existing-elasticsearch-with-a-self-signed-certificate
provides some commands that allows you to create a JKS trust store from a CA certificate file using the following commands:
keytool -import -alias elasticsearch -keystore externaldb.jks -storetype jks -file elastic.crt -storepass changeit -noprompt

kubectl  create secret -n camunda generic elastic-jks --from-file=externaldb.jks

The relevant option here is -storepass changeit, which password-protects the trust store, meaning to get any of the data inside the JKS trust store, you have to supply this password. However, the camunda helm chart does not have any way to supply the password to the JKS file.
Furthermore, the keytool command line tool does not allow for creating a JKS trust store without password protection.
It may be relevant to note that I am using the opensearch operator  with mostly default settings, so by default, it deploys opensearch with TLS terminated in the application-level.

Actual behavior:
Operate and tasklist fail with the following error:
javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[?:?]
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:378) ~[?:?]
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:321) ~[?:?]
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:316) ~[?:?]
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1351) ~[?:?]
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1226) ~[?:?]
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1169) ~[?:?]
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[?:?]
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[?:?]
	at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277) ~[?:?]
	at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264) ~[?:?]
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[?:?]
	at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209) ~[?:?]
	at org.apache.hc.core5.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:339) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:410) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.ssl.SSLIOSession.access$100(SSLIOSession.java:74) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.ssl.SSLIOSession$1.inputReady(SSLIOSession.java:201) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.InternalDataChannel.onIOEvent(InternalDataChannel.java:142) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.InternalChannel.handleIOEvent(InternalChannel.java:51) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.SingleCoreIOReactor.processEvents(SingleCoreIOReactor.java:178) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.SingleCoreIOReactor.doExecute(SingleCoreIOReactor.java:127) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.AbstractSingleCoreIOReactor.execute(AbstractSingleCoreIOReactor.java:86) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at org.apache.hc.core5.reactor.IOReactorWorker.run(IOReactorWorker.java:44) ~[httpcore5-5.2.4.jar!/:5.2.4]
	at java.base/java.lang.Thread.run(Thread.java:840) ~[?:?]
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at java.base/sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:369) ~[?:?]
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:275) ~[?:?]
	at java.base/sun.security.validator.Validator.validate(Validator.java:264) ~[?:?]
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285) ~[?:?]
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144) ~[?:?]
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1329) ~[?:?]
	... 19 more
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
	at java.base/sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:157) ~[?:?]
	at java.base/sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:83) ~[?:?]
	at java.base/java.security.cert.CertPathValidator.validate(CertPathValidator.java:309) ~[?:?]
	at java.base/sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:364) ~[?:?]
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:275) ~[?:?]
	at java.base/sun.security.validator.Validator.validate(Validator.java:264) ~[?:?]
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:285) ~[?:?]
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:144) ~[?:?]
	at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1329) ~[?:?]
	... 19 more

2024-09-18 20:05:07.855  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #1 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:10.903  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #2 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:13.927  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #3 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:16.969  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #4 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:19.992  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #5 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:23.033  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #6 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:26.053  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #7 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:29.070  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #8 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:32.094  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #9 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:35.137  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #10 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:38.156  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #11 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:41.200  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #12 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
2024-09-18 20:05:44.217  INFO 7 --- [           main] i.c.t.o.OpenSearchConnector              : Retrying #13 connect to OpenSearch at https://camunda-opensearch.opensearch-operator:9200 due to javax.net.ssl.SSLHandshakeException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors

Expected behavior:

How to reproduce:

Logs:

Environment:
Please note: Without the following info, it's hard to resolve the issue and probably it will be closed.

Platform:
Helm CLI version:
Chart version: 10.4.0 and 8.6.0-alpha5
Values file:

I mark this as code-freeze-candidate because the issue is not a regression as result of 8.6-alpha, it is simply a problem that exists both in 8.5 and 8.6

https://github.com/camunda/distribution/issues/306

@hamza-m-masood informed me that the storepass is not relevant to the stacktrace I received.

I will work on this issue

I will test this issue by setting up external bitnami elasticsearch, with ingress and self signed cert.
Then I will connect using the camunda helm chart using the self signed cert.

I can confirm that connecting to external elasticserach with self-signed certificates works with alpha chart

The team has decided to leave this issue open just incase we end up supporting OpenSearch outside of just AWS.

I will close this issue since this is more a feature request rather than an issue with our existing setup.


HIGH: Enable console logging with four-finger tap

Problem:
We've gotten very good at fixing bugs that can be reproduced in our dev environments.  However, bugs we can't reproduce in dev are typically ignored -- even if they happen frequently in production.  We have added better diagnostics tools via the About > Troubleshooting > Client side logging toggle.  However, currently it takes you out of the context in which the bug is actually happening to enable. This means to use it you must:

Experience the bug
Leave that context to go to About > Troubleshooting > Client side logging
Enable client side logging
Go back to the original context
Try to reproduce the bug
Leave that context to go to About > Troubleshooting > Client side logging
Open the console
Save the file
Disable client side logging

In that whole process, the logs are filled with tons and tons of extraneous lines, making it very hard to isolate the problem -- assuming you can even reproduce it.
Solution:
Margelo recently added a "four finger tap" to enable low-level performance logging:

This works great because:

You can enable and disable right where you experiencing the problem, without needing to leave that context.  This tightens up the focus on the actual problem period, avoiding extraneous sampling.
It automatically saves the file to local storage when disabled.

Let's expand that as follows:

Allow enabling/disabling the console log directly from the "four finger tap menu"
Automatically save the logs to disk when disabled (in either the four-finger menu, or in the About > Troubleshooting menu)
Show the filename that it was saved to, along with the platform Share button to share it (this is already being used for the profile traces, so let's use it for logs as well)

@TMisiukiewicz hoping you can take this?

@quinthar sure, I should be able to work on this later this week 👍

Great, so ETA Friday?

@quinthar yeah, I am about to start working on that tomorrow 👍 What if the client side logging in Troubleshoot section is enabled while you access the hidden menu, should it be just enabled or both of these features should work independently?

Opened a PR

What if the client side logging in Troubleshoot section is enabled while you access the hidden menu, should it be just enabled or both of these features should work independently?

They should both control the same console, so if it's enabled in one, it should show as enabled in the other.

Regression Test Proposal

Press anywhere using 4 fingers (four-finger tap)
Verify that a debug modal is opened
Enable Client side logging
Close modal
Do any regular activity (e.g. open a report)
Open debug modal again (four-finger tap)
Disable Client side logging
Verify that a file path is displayed and the Share button is visible
Press the share button
Verify you are able to share the file

(Related https://expensify.testrail.io/index.php?/cases/view/2990265)

Payment Summary:

@TMisiukiewicz does not require payment (Contractor)
@s77rt paid $500 here WIP


Wrong model is getting generatred for asyncapi version object in v2 schema for golang

Describe the bug
Golang is generating the wrong model for AsyncApi_2Dot_6Dot_0SchemaDot, it is creating the Asyncapi as uint instead of a string, which is why json.Unmarshal is also throwing an error. This does not exist in v3 only happens with v2 schemas.
Looking further the schema for v2.6.0 is
  "asyncapi": {
      "type": "string",
      "enum": [
          "2.6.0"
      ],
      "description": "The AsyncAPI specification version of this document."
  }

scheme for v3
"asyncapi": {
    "type": "string",
    "const": "3.0.0",
    "description": "The AsyncAPI specification version of this document."
},

So, it looks like the golang generator for Modelina is unable to generate enums correctly.
How to Reproduce
To reproduce this behavior we need to use without-$id.json schemes and use modelina to generate the models using these specifications.

Link to GitHub repository with project that has issues - https://github.com/Souvikns/parser-go
Definitions to use golang to generate models - https://github.com/Souvikns/parser-go/tree/main/generator/definitions

Expected behavior
Asyncapi object should be of type string instead of uint.

package models

// AsyncApi_2Dot_6Dot_0SchemaDot represents a AsyncApi_2Dot_6Dot_0SchemaDot model.
type AsyncApi_2Dot_6Dot_0SchemaDot struct {
  Asyncapi *Asyncapi // should be of type string
  Id string
  Info *Info
  Servers map[string]interface{}
  DefaultContentType string
  Channels map[string]ChannelItem
  Components *Components
  Tags []Tag
  ExternalDocs *ExternalDocs
  AdditionalProperties map[string]interface{}
}

You can now use the following options to avoid this:
{
  processorOptions: {
    jsonSchema: {
      interpretSingleEnumAsConst: true
    }
  }
}


fix: Generate Dafny 4.6 version of SimpleString patch for Rust

Description of changes:
Fixes nightly build failure: https://github.com/smithy-lang/smithy-dafny/actions/runs/8804008273/job/24163426403.
Dry run of nightly build against this branch: https://github.com/smithy-lang/smithy-dafny/actions/runs/8819703065
Using 4.5.0 instead of 4.6.0 because Dafny uses version suffixes slightly wrong: nightlies will have version numbers like 4.6.0-nightly-2024-04-22-0082cf6 which by NuGet semantics means "a prerelease for the upcoming 4.6.0 release", and is therefore considered less than 4.6.0.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Fixes nightly build failure: https://github.com/smithy-lang/smithy-dafny/actions/runs/8804008273/job/24163426403.
Dry run of nightly build against this branch: https://github.com/smithy-lang/smithy-dafny/actions/runs/8819703065
Using 4.5.0 instead of 4.6.0 because Dafny uses version suffixes slightly wrong: nightlies will have version numbers like 4.6.0-nightly-2024-04-22-0082cf6 which by NuGet semantics means "a prerelease for the upcoming 4.6.0 release", and is therefore considered less than 4.6.0.


the editor won't start

trying to run p5.js-editor on linux (npm run app)  I get the following error:
Using<EMAIL_ADDRESS><EMAIL_ADDRESS>[6549:0225/030257:ERROR:browser_main_loop.cc(170)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
ATTENTION: default value of option force_s3tc_enable overridden by environment.
[6590:0225/030300:ERROR:sandbox_linux.cc(325)] InitializeSandbox() called with multiple threads in process gpu-process
[6549:0225/030301:ERROR:nw_shell.cc(336)] TypeError: undefined is not a function
    at Object.8../files (file:///home/binayak/projects/p5.js-editor/public/js/main.js:1039:11)
    at s (file:///home/binayak/projects/p5.js-editor/public/js/main.js:1:220)
    at file:///home/binayak/projects/p5.js-editor/public/js/main.js:1:271
    at Object.7../debug/index (file:///home/binayak/projects/p5.js-editor/public/js/main.js:485:12)
    at s (file:///home/binayak/projects/p5.js-editor/public/js/main.js:1:220)
    at e (file:///home/binayak/projects/p5.js-editor/public/js/main.js:1:391)
    at file:///home/binayak/projects/p5.js-editor/public/js/main.js:1:409
[6549:0225/030301:INFO:CONSOLE(1039)] "Uncaught TypeError: undefined is not a function", source: file:///home/binayak/projects/p5.js-editor/public/js/main.js (1039)

Same here using npm 3.3.12 and nvm 5.2.0
However running 'gulp' task didn't complete, it just hung without any error messages.
@ghoshbinayak did gulp complete ?

@b2renger there is a watch task which keeps on running. The rest completes successfully.


Question about continue permission request for rationale

If one handles onPermissionRationaleShouldBeShown to show a rationale to the user explaining why we need that particular permission - for instance, with an AlertDialog - and call token.continuePermissionRequest() to show the request permission dialog again, this leads into two dialogs.
Is there anyway to avoid this? I mean, show a rationale within the request permission dialog?

Hi @rfgamaral (again :P)
I'm guessing you are talking about the DialogOnDeniedPermissionListener implementation. As in the other issue, I'd say that it sounds completely logical to me to have access to the alert being displayed or to close it automatically when the user chooses an option.

Not necessarily.
Say I implement PermissionsListener and create my own AlertDialog inside onPermissionRationaleShouldBeShown to explain why I need a specific permission with my own words. Use selects OK and then I invoke token.continuePermissionRequest() and then the native rationale will be shown. Two dialogs.
I was looking for a way to get this into just one...

What about closing the alert before calling the token?

Not sure what you mean...

I'm probably not following you here.
I understand you want to show an alert dialog when you are asked to show the rationale to your user, then when the user accepts it, close the dialog and show the native view. Your listener implementation should be similar to the following:
@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission,
          final PermissionToken token) {
        new AlertDialog.Builder(SampleActivity.this)
            .setTitle("Hi there")
            .setMessage("Something something")
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
              @Override public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                token.continuePermissionRequest();
              }
            })
            .show();
      }

Am I missing something?

I'm probably not following you here.
I understand you want to show an alert dialog when you are asked to show the rationale to your user, then when the user accepts it, close the dialog and show the native view. Your listener implementation should be similar to the following:
@Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission,
          final PermissionToken token) {
        new AlertDialog.Builder(SampleActivity.this)
            .setTitle("Hi there")
            .setMessage("Something something")
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
              @Override public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                token.continuePermissionRequest();
              }
            })
            .show();
      }

Am I missing something?

That will give you two dialogs, your own and the rationale one. What I wanted was to have a single dialog with my own rationale words, not the platform's. But I guess this is just how the Android framework works and there's nothing this library can do about it. Feel free to close this issue.


Talk to Chinmay about engine API.

Talk to Chinmay about engine API.
Chinmay refactored the engine a couple months ago and he said the embeddings should be updated to match.  Let's chat with him about those changes and see what alterations we should make to the embedding.

I've been discussing this with Chinmay here and there, but haven't uncovered anything requiring immediate action.  Removing my assignment for now.


Stable extra dependencies

Spec stable extra dependencies to prep for release. After this release, extra dependencies can probably be removed as backwards-compat code using them will be deprecated

Unit Test manual run: https://github.com/NeonDaniel/ovos_utils/actions/runs/4702023081


Not working ?

Hi there,
This is a great idea, thanks for sharing it!! Unfortunately, it doesn't seem to be working for me...
I'm using Xcode Version 7.0.1 (7A1001) with Simulator Version 9.0 (SimulatorApp-620 CoreSimulator-179).
I've cloned the repo, built it with make and then run the debug command with both Xcode and the Simulator open. Result was: Service configured for next launch.
Then I tried sending the signal with my own bundle ID, but also with the Calendar one shown in the example, and never got any output on the Terminal, nor anything that happened in the simulator.
Is it possible I'm missing some step, previous configuration, dependency? Any further info that may be of service?
Thanks in advance!

Never mind! (This issue)[https://github.com/DeskConnect/SBShortcutMenuSimulator/issues/2] had the solution.

how to solute???
Thans in advance


Cbc

Hey, i cant find a way of decrypting data using cbc. Is this currently supported?

AES-CBC is not currently implemented but I will work on it asap.
AES-GCM is the encryption algorithm I started with. Both System.Security.Cryptography and the web browser Crypto APIs support AES-CBC so it shouldn't be a problem. The occasional incompatibilities or slight differences in data handling between the implementations are not usually that bad.

Just uploaded version 2.0.8 with support for AES-CBC.

Demo code from Home.razor

    [Inject]
    BrowserCrypto BrowserCrypto { get; set; }

    [Inject]
    DotNetCrypto DotNetCrypto { get; set; }

    [TestMethod]
    public async Task AESCBCBrowserTest()
    {
        using var key = await BrowserCrypto.GenerateAESCBCKey(256);
        var encrypted = await BrowserCrypto.Encrypt(key, TestMessageBytes);
        var decrypted = await BrowserCrypto.Decrypt(key, encrypted);
        if (!TestMessageBytes.SequenceEqual(decrypted))
        {
            throw new Exception("AES CBC encryption/decryption failed");
        }
    }

    [TestMethod]
    public async Task AESCBCDotNetTest()
    {
        using var key = await DotNetCrypto.GenerateAESCBCKey(256);
        var encrypted = await DotNetCrypto.Encrypt(key, TestMessageBytes);
        var decrypted = await DotNetCrypto.Decrypt(key, encrypted);
        if (!TestMessageBytes.SequenceEqual(decrypted))
        {
            throw new Exception("AES CBC encryption/decryption failed");
        }
    }

    [TestMethod]
    public async Task AESCBCBrowserEncryptDotNetDecryptTest()
    {
        using var key = await BrowserCrypto.GenerateAESCBCKey(256);
        var encrypted = await BrowserCrypto.Encrypt(key, TestMessageBytes);
        // export browser AES-CBC key to byte array
        var rawKey = await BrowserCrypto.ExportAESCBCKey(key);
        // import AES-CBC key byte array in dotnet
        using var dnKey = await DotNetCrypto.ImportAESCBCKey(rawKey);
        var decrypted = await DotNetCrypto.Decrypt(dnKey, encrypted);
        if (!TestMessageBytes.SequenceEqual(decrypted))
        {
            throw new Exception("AES CBC encryption/decryption failed");
        }
    }

Woha, that was quick :O Nice work!
But im still having trouble getting it all to work for my case.
I am trying to decrypt specific data and i was wondering if you could help me getting it to work.
Those two classes use aes:
https://github.com/Mbucari/AAXClean/blob/master/src/Mpeg4Lib/Util/Crypto.cs
https://github.com/Mbucari/AAXClean/blob/master/src/Mpeg4Lib/Util/AesCryptoTransform.cs
Now i am trying to port this functionallity to work with the web. I even tried writing my own wrapper, but with no success.
All i am getting from js is some generic error, but no detail.
Anyway, here are test files(keys, iv, data, encrypted data) in case you are willing to help me 😅
TransformFinal-5307231.json
DecryptInPlace-1941578835.json

Ohai!
Thank you so much for having a look at this! It really means alot! I am on the verge of breaking in tears 😓
Chatgpt suggests just adding padding bytes like so:
// Add PKCS#7 Padding
function padData(data, blockSize) {
    const padding = blockSize - (data.byteLength % blockSize);
    const padded = new Uint8Array(data.byteLength + padding);
    padded.set(data, 0);
    padded.fill(padding, data.byteLength);
    return padded;
}

but even with that i cant get it to work. DecryptInPlace cuts off at the latest multiple of 16 tho (encryptedBlocks.Length & 0x7ffffff0)

Currently trying to use alternatives like https://github.com/flash1293/aes-wasm but as i am super inexperienced with that kind of stuff, it takes me ages to test 😅

subtle also seems to not like the 16byte key

Just dumping my thoughts here:
[
  {
    "Key": "d9c165aa46c3e36ad004d6f9bb340975",
    "Iv": "1875cf3fd183bfb8486d1161c82ff82b",
    "DecryptedData": "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000",
    "EncryptedData":       "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db",
    "PaddedEncryptedData": "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db10101010101010101010101010101010",
    "CutOffEncryptedData": "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db",
    "CutOffDecryptedData": "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000"
  },
  {
    "EncryptedData": "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10dba8fb1d16a6b243af8942c5063c568f12",
    "ReDecryptedData": "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000"
  }
]

Playing with the crypto api a bit.
What i have done:

Encrypt the unencrypted data.
Found out that it produces almost the same data as dotnet, but with some extra data that i cannot get behind where it comes from (EncryptedData ending with a8fb1d16a6b243af8942c5063c568f12 instead of the expected pkcs7 10...

Just dumping my thoughts here:

No problem. I have been working through it in a similar manner.

In the below link, someone describes how to manually add padding to non-padded AES-CBC encrypted data and how to use web crypto to AES-CBC encrypt a block without padding.
I am not sure how much time I will have today to work on this, but the code from this link looked promising.
https://github.com/denoland/deno/issues/15423#issuecomment-1344310767

Found out that it produces almost the same data as dotnet, but with some extra data that i cannot get behind where it comes from (EncryptedData ending with a8fb1d16a6b243af8942c5063c568f12 instead of the expected pkcs7 10...

I am currently stumped with that also.

Got the PKCS7 padding working, thanks to that awesome post I linked to.
The PKCS7 padding is a bit more complicated than it seemed. The padding bytes, where each byte is equal to the length of the padding, has to be AES-CBC encrypted (with no padding), using the PADDING_SIZE bytes from the the end of the decrypted data. (Sorry for that horrible explanation.)

One minor issue with the linked code... Do not slice the result of the subtle.decrypt call in the AES_CBC_DECRYPT_NO_PADDING method.

I am now able to successfully decrypt your test EncryptedData data so it equals your DecryptedData using the browser's WebCrypto API. I have a lot to do today, but thanks to your request I will be able to add AES-CBC encryption without padding to this library for all platforms. I should have time to get it done later tonight.

This is my test code that uses the browser's WebCrypto API. Sorry for the mess, it has a lot of changes while debugging this issue. Just thought it might be helpful and relevant.
    [Inject]
    BlazorJSRuntime JS { get; set; }

    Dictionary<string, string> TestData = new Dictionary<string, string>
    {
        {"Key", "d9c165aa46c3e36ad004d6f9bb340975"},
        {"Iv", "1875cf3fd183bfb8486d1161c82ff82b" },
        {"DecryptedData", "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000"},
        {"EncryptedData",       "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db"},
        {"PaddedEncryptedData", "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db10101010101010101010101010101010"},
        {"CutOffEncryptedData", "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db"},
        {"CutOffDecryptedData", "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000"},
        {"EncryptedData2", "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10dba8fb1d16a6b243af8942c5063c568f12"},
        {"ReDecryptedData", "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000"},
    };

    async Task<byte[]> EncryptPaddingNone(byte[] data, CryptoKey key, byte[] iv, int blockSize)
    {
        var paddingSize = blockSize - (data.Length % blockSize);
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");
        var encrypted = (await subtle.Encrypt(new AesCbcParams { Iv = iv }, key, data)).Using(o => o.ReadBytes());
        var unpadded = encrypted.Take(encrypted.Length - paddingSize).ToArray();
        return unpadded;
    }

    async Task<byte[]> DecryptPaddingNone(byte[] data, CryptoKey key, byte[] iv, int blockSize)
    {
        var paddingSize = blockSize - (data.Length % blockSize);
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");
        // const paddedData = new Uint8Array(new Uint8Array(data).length + AES_BLOCK_SIZE);
        var paddedData = new byte[data.Length + paddingSize];
        // paddedData.set(new Uint8Array(data), 0);
        data.CopyTo(paddedData, 0);
        // const padding = new Uint8Array(16)
        var padding = new byte[paddingSize];
        // padding.fill(0x10);
        for (var i = 0; i < paddingSize; i++)
        {
            padding[i] = (byte)paddingSize;
        }
        // const padBlock = await AES_ECB_ENCRYPT_BLOCK_WITH_IV(padding, key, data.slice(-AES_BLOCK_SIZE));
        // use the last paddingSize bytes of data is the iv
        var padBlockIv = data.Skip(data.Length - paddingSize).ToArray();
        // padBlockIv = data.Take(paddingSize).ToArray();
        var padBlock = await EncryptPaddingNone(padding, key, padBlockIv, blockSize);
        // paddedData.set(padBlock, AES_BLOCK_SIZE);
        padBlock.CopyTo(paddedData, data.Length);
        // decrypt
        var decrypted = (await subtle.Decrypt(new AesCbcParams { Iv = iv }, key, paddedData)).Using(o => o.ReadBytes());
        return decrypted;
    }

    [TestMethod]
    public async Task IssueNumber1_TestData_Test()
    {
        int AES_BLOCK_SIZE = 16;
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");
        var rawKey = Convert.FromHexString(TestData["Key"]);
        var iv = Convert.FromHexString(TestData["Iv"]);
        var decryptedData = Convert.FromHexString(TestData["DecryptedData"]);
        var encryptedData = Convert.FromHexString(TestData["EncryptedData"]);
        //
        using var nKey = await subtle.ImportKey<CryptoKey>("raw", rawKey, "AES-CBC", true, new[] { "encrypt", "decrypt" });
        var decrypted = await DecryptPaddingNone(encryptedData, nKey, iv, AES_BLOCK_SIZE);
        var succ = decrypted.SequenceEqual(decryptedData);
        if (!succ)
        {
            throw new Exception("Failed test");
        }
    }

Little cleaner, and this test code uses Javascript types until the processing is done.

    [Inject]
    BlazorJSRuntime JS { get; set; }

    Dictionary<string, string> TestData = new Dictionary<string, string>
    {
        { "Key", "d9c165aa46c3e36ad004d6f9bb340975" },
        { "Iv", "1875cf3fd183bfb8486d1161c82ff82b" },
        { "DecryptedData", "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000" },
        { "EncryptedData", "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db" },
    };

    int AES_CBC_BLOCK_SIZE = 16;
    async Task<Uint8Array> EncryptPaddingNone(CryptoKey key, Uint8Array data, Uint8Array iv)
    {
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");

        // calculate padding size
        var paddingSize = AES_CBC_BLOCK_SIZE - (data.Length % AES_CBC_BLOCK_SIZE);
        using var encryptedArrayBuffer = await subtle.Encrypt(new AesCbcParams { Iv = iv }, key, data);
        using var encrypted = new Uint8Array(encryptedArrayBuffer);

        // trim the padding before returning
        return encrypted.Slice(0, paddingSize);
    }

    async Task<Uint8Array> DecryptPaddingNone(CryptoKey key, Uint8Array data, Uint8Array iv)
    {
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");

        // calculate padding size
        var paddingSize = AES_CBC_BLOCK_SIZE - (data.Length % AES_CBC_BLOCK_SIZE);

        // create a Uint8Array to hold the padded data
        using var paddedData = new Uint8Array(data.ByteLength + paddingSize);
        paddedData.Set(data, 0);

        // padding starts as a byte array of size paddingSize where each byte is the paddingSize
        using var padding = new Uint8Array(paddingSize);
        padding.FillVoid((byte)paddingSize);

        // use the last paddingSize bytes of data is the iv
        using var padBlockIv = data.Slice(-paddingSize);
        using var padBlock = await EncryptPaddingNone(key, padding, padBlockIv);
        paddedData.Set(padBlock, data.Length);

        // decrypt
        using var decryptedArrayBuffer = await subtle.Decrypt(new AesCbcParams { Iv = iv }, key, paddedData);

        // return the decrypted data as a Uint8Array
        return new Uint8Array(decryptedArrayBuffer);
    }

    [TestMethod]
    public async Task IssueNumber1_TestDataJS_Test()
    {
        using var subtle = JS.Get<SubtleCrypto>("crypto.subtle");

        // import key
        var rawKey = Convert.FromHexString(TestData["Key"]);
        using var nKey = await subtle.ImportKey<CryptoKey>("raw", rawKey, "AES-CBC", true, new[] { "encrypt", "decrypt" });

        // put iv into a Uint8Array
        var iv = Convert.FromHexString(TestData["Iv"]);
        using var ivUint8Array = new Uint8Array(iv);

        // put encryptedData into a Uint8Array
        var encryptedData = Convert.FromHexString(TestData["EncryptedData"]);
        using var encryptedDataUint8Array = new Uint8Array(encryptedData);

        // decrypt using AES-CBC without padding
        using var decryptedUint8Array = await DecryptPaddingNone(nKey, encryptedDataUint8Array, ivUint8Array);

        // Copy the Uint8Array data into a byte array
        var decrypted = decryptedUint8Array.ReadBytes();

        // compare with known correct decrypted data
        var decryptedData = Convert.FromHexString(TestData["DecryptedData"]);
        var succ = decrypted.SequenceEqual(decryptedData);
        if (!succ)
        {
            throw new Exception("Failed test");
        }
    }

Just uploaded version 2.0.9 which supports an additional parameter in the AESCBC Encrypt and Decrypt methods for specifying the padding. AESCBCPadding.PKCS7 and AESCBCPadding.None are the current valid options.
The below code that works with your test data works using all platform PortableCrypto implementations (DotNetCrypto, BrowserWASMCrypto, and BrowserCrypto.)
    [Inject]
    BrowserWASMCrypto BrowserWASMCrypto { get; set; }

    Dictionary<string, string> AESCBCTestData = new Dictionary<string, string>
    {
        { "Key", "d9c165aa46c3e36ad004d6f9bb340975" },
        { "Iv", "1875cf3fd183bfb8486d1161c82ff82b" },
        { "DecryptedData", "0566789f0000000042d31c8517457c0c78cfbdf18781e5c727106f22f5d9134f9bfd1db3fb6db07e4f9d000000000000" },
        { "EncryptedData", "b937270aa14d6fd63380567882cdefffe7d1a2c1bb06cc385906db20c1dcb61e20831c10398f3ce200a5fa72885b10db" },
    };

    [TestMethod]
    public async Task IssueNumber1_BrowserWASMCrypto_Test()
    {
        var decryptedData = Convert.FromHexString(AESCBCTestData["DecryptedData"]);

        // import key
        var rawKey = Convert.FromHexString(AESCBCTestData["Key"]);
        using var nKey = await BrowserWASMCrypto.ImportAESCBCKey(rawKey);

        // put iv into a Uint8Array
        var iv = Convert.FromHexString(AESCBCTestData["Iv"]);

        // put encryptedData into a Uint8Array
        var encryptedData = Convert.FromHexString(AESCBCTestData["EncryptedData"]);

        // decrypt using AES-CBC without padding
        var decrypted = await BrowserWASMCrypto.Decrypt(nKey, encryptedData, iv, AESCBCPadding.None);

        // compare with known correct decrypted data
        var succ = decrypted.SequenceEqual(decryptedData);
        if (!succ)
        {
            throw new Exception("Failed Decrypt test");
        }

        // Test encryption
        var encrypted = await BrowserWASMCrypto.Encrypt(nKey, decryptedData, iv, padding: AESCBCPadding.None);
        // compare with known correct encrypted data
        var encryptedSucc = encrypted.SequenceEqual(encryptedData);
        if (!encryptedSucc)
        {
            throw new Exception("Failed Encrypt test");
        }
    }


Printing AgmMap shows gap which shifts down bottom of map

Issue description
Printing my Angular AgmMap from chrome I get a gap in the map, which shifts down the bottom-half of the map.

Steps to reproduce and a minimal demo of the problem

create a simple angular app
implement an AgmMap in your app
open your app in chrome and hit print (or type print() in the console)
it will show a gap in the map, which varies depending on your zoom and area

app.component.ts
import { Component } from '@angular/core';
@Component({
	selector: 'app-root',
	template: `
		<button (click)="clickPrint()">print</button>
		<agm-map id="Gmap" [latitude]="34.051759" [longitude]="-118.244576" [zoom]="17"></agm-map>
		`,
	styles: [`
		agm-map {
			height: 800px;
		}
		button {
			position: absolute;
			z-index: 10;
		}
	`]
})
export class AppComponent {
	clickPrint() {
		print()
	}
}

Here is a link to StackBlitz if you would like to see a demo, just make sure you hit the Print button I provided on the map
StackBlitz demo
What steps should we try in your demo to see the problem?
Open the app with chrome and click the print button I provided on the map.  On the print preview, as well as the printout, you will see a grey gap which shifts map content downward.
Current behavior
Printed app shows a gap in the AGMMap
Expected/desired behavior
Printed app should show a normal AGMMap similar to how it looks on the screen, without a gap in it
angular2 & angular-google-maps version
"@agm/core": "^1.0.0-beta.5",
"@angular/cli": "~6.1.5",
Other information
I have also tested for this bug in your link
» Play with Angular Google Maps on Stackblitz
and it also happens there.
Below are the screenshots of how to check for it there:
Step 1: open your Stackblitz link
Step 2: open the stackblitz console for the app

Step 3: type "print()" in the console and hit enter

The result also shows the same problem, however, the bottom gets shoved off so you can't see the shifted area, but it's pretty obvious that it's there, since marker B is floating in a grey void.

I also asked this question here in hopes that there is some sort of work-around.
The gap will change size if you pan around, or zoom in and out, however it never disappears completely in my testing.
Thank you for your help with this, I've been racking my brain for the last week trying to fix this issue.

After further investigation, it appears that the shifted part of the printed map is due to the map tiles getting shifted down (the shifted portion corresponds to the edges of the tiles).  I'm still not sure what is causing this.  I will report back if I find any further information on this issue.

Can be fixed using CSS.
I added display: inline-flex ; and width property on agm-map.
here is solution
Hope it works for all cases.

sure, plz share if you find any as I have done same thing for my piece of
code.
thanks in advance
On Tue, Oct 16, 2018 at 5:57 PM Jared<EMAIL_ADDRESS>wrote:

I investigated further and was able to select just the tiles that were
shifted, and shift them to where they should be for one of my maps that was
broken like this, I found that if I use the following css it corrects the
problem for just one map, however, it will break it for other maps. I'm
going to try and find a more bulletproof way to correct this issue.
@media print {
/** select map tiles in an effort to fix the broken printing /
/ filter: brightness(50%); // this was used to identify I was selecting the right tiles /
agm-map>div>div>div>div>div>div>div>div[style="top: 256px;"]>img[draggable="false"][role="presentation"]{
position: relative;
top: -128px;
}
}
note: the row with top: 256px; was what was broken for one of my maps.
and shifting it up by exactly 1/2 the tile size works at least for this one
scenario (and only for printing of course)
@tshashwat7 https://github.com/tshashwat7 thank you for giving it a
shot, I still haven't ruled out your solution yet, but at first glance it
doesn't appear to fix my map, even though it does fix that one particular
map size in the stackblitz demo.
I will report back if I find anything further.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/SebastianM/angular-google-maps/issues/1516#issuecomment-430217634,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ARJZoAhLjmLPZRmgHSyuXn0p6S4RACjsks5uldClgaJpZM4XFFL6
.

--
Shashwat Tiwari
Software Engineer(INFOSYS)
Pune,India
Email<EMAIL_ADDRESS>Phone No.: +91-9620445482


131_Palindrome_Partitioning_C++

C++ program for famous question Palindrome Partitioning using DP.

Leetcode Question Id: 131
Language: C++

CheckList:

[ ] I've read Steps to contribute
[ ] Pull request title matches: [LeetCode_question_number]_[Question_name separated by underscore]_[Language]**

#209


Cargo.lock and Cargo.toml mismatch in release 2.18.0

Hello,
I maintain datavzrd for Arch Linux User Repository (aur). We use the Cargo.lock file supplied by the upstream to create reproducible builds.
The 2.18.0 release has a mismatch between Cargo.lock and Cargo.toml for minify-js (and parse-js dependency) because #371 bumped the minify-js as usual but its version was pinned in #375 without updating Cargo.lock

Thanks for reporting! Will be fixed with the next release! And great to see that datavzrd is in AUR already!

@yigitsever we just released 2.18.1 with the fixed Cargo.lock file. Thanks again for pointing out the problem 😊


How to generate a device-specific YAML config file

I have a rockchip rk3399-based device with its AOSP 10 BSP. I am trying to update it to AOSP 11. I am hoping to use https://github.com/kdrag0n/adevtool/blob/main/docs/pixel-generate.md but cannot figure out a way to obtain or generate my device's YAML config file. Any more information on this topic would be very helpful. Thanks!

You have to write a config for your device; there's no way to generate it automatically. It's documented as a heavily-commented example config here: https://github.com/kdrag0n/adevtool/blob/main/config/examples/device.yml


Request of tile sizes that are not part of the scaleFactors

Hello,
Thanks for your great work on OSD! I face an issue with a very basic tiled image, whose info.json reads as follows:
{
   "@context" : "http://iiif.io/api/image/2/context.json",
   "@id" : "http://localhost:8042/wsi/iiif/tiles/5b29b598-98f24142-200eb464-db39ed07-8d44f0a3",
   "height" : 3000,
   "profile" : "http://iiif.io/api/image/2/level0.json",
   "protocol" : "http://iiif.io/api/image",
   "sizes" : [
      {
         "height" : 750,
         "width" : 1250
      },
      {
         "height" : 3000,
         "width" : 5000
      }
   ],
   "tiles" : [
      {
         "height" : 512,
         "scaleFactors" : [ 4, 1 ],
         "width" : 512
      }
   ],
   "width" : 5000
}

As can be seen, this image offers two tile sizes: 2048x2048 and 512x512, expressed in coordinates of the original image. However, if I zoom on the top-left part of the image using OSD, I observe that the browser is making requests such as:
http://localhost:8042/wsi/iiif/tiles/5b29b598-98f24142-200eb464-db39ed07-8d44f0a3/0,1024,1024,1024/512,/0/default.jpg

This is surprising to me, as this seems to correspond to a 1024x1024 tile, which is not part of my scaleFactors, so my server answers with a 404 error. I have observed this behavior both with both OSD 3.1 and OSD 4.0. On OSD 4.1, things can go worse, as it sometimes emits requests with negative sizes when I zoom on the bottom-right part of the image:
http://localhost:8042/wsi/iiif/tiles/5b29b598-98f24142-200eb464-db39ed07-8d44f0a3/4096,5120,904,-2120/512,/0/default.jpg

Is this a consequence of a bad use of OSD on my side? Thanks in advance for your support!
Kind Regards,
Sébastien-

Small update: This issue is not specific to Image API 2.1.1. It can also be reproduced if using Image API 3.0.0, with the following image.json:
{
   "@context" : "http://iiif.io/api/image/3/context.json",
   "height" : 3000,
   "id" : "http://localhost:8042/wsi/iiif/tiles/21bc8b87-07ec0228-597e2002-2710523a-d96927e9",
   "profile" : "level0",
   "protocol" : "http://iiif.io/api/image",
   "sizes" : [
      {
         "height" : 750,
         "width" : 1250
      },
      {
         "height" : 3000,
         "width" : 5000
      }
   ],
   "tiles" : [
      {
         "height" : 512,
         "scaleFactors" : [ 4, 1 ],
         "width" : 512
      }
   ],
   "type" : "ImageService3",
   "width" : 5000
}

Another update: Even if I cannot find this information in the Image API 3.0.0 Region documentation, the official implementation notes of the IIIF specification will indeed generate negative region width/height. Such negative numbers are used to give a position that is relative to the right/bottom border of the image. Shouldn't a clarification in the IIIF specification be made?
Note that this explains the behaviour of OSD 4.1 with negative number, but not the 1024x1024 tile size from my original post.

I'm not so familiar with IIIF. @glenrobson @azaroth42 @ruven @ahankinson @tomcrane Any thoughts?

@jodogne what image server are you using?

@ahankinson This is Orthanc, which has just released IIIF support for whole-slide imaging (telepathology) and teleradiology.
If this is of interest to you, here the link to a URL to an IIIF manifest that is dynamically generated by our demo server: https://wsi.orthanc-server.com/orthanc/wsi/iiif/series/645ce678-fc6c0544-2ce7fcc0-0c3f2ba6-2e4b63b5/manifest.json
This manifest can notably opened as a resource by the online demo of Mirador, which internally uses OpenSeadragon. Note that the tiles are generated on-the-fly from DICOM images.

Running that image through the IIIF Image API validator throws a bunch of errors:
https://iiif.io/api/image/validator/
Notably, this image request asking for an image 614 x 652 returns an image that is 1348 x 938:
https://wsi.orthanc-server.com/orthanc/wsi/iiif/tiles/645ce678-fc6c0544-2ce7fcc0-0c3f2ba6-2e4b63b5/full/614,652/0/default.jpg
So maybe something is wrong with the server itself?

Running that image through the IIIF Image API validator throws a bunch of errors:

Thanks for your investigation! As this is the first release of IIIF on our side, we were expecting some discrepancies with respect to the IIIF standard. We'll have a look at the validator.
That being said, the original question is not related to Orthanc, and I feel like there is also some investigation to be done in OSD.

Hi @jodogne, great to see DICOM images with IIIF!
Have you changed the image server available at: https://wsi.orthanc-server.com/orthanc/wsi/iiif/tiles/? I've tested it in OSD 3.1.1 and OSD 4.0.0 and it looks to be working great now.
From your description in the first comment it seems that OSD was assuming a scaleFactor of 2 in the list of scaleFactors even though you hadn't specified it in the list. I can see from the  orthanc-server.com you now have the following scaleFactors:
scaleFactors": [
            1,
            2,
            4,
            8,
            16,
            32
]

which is a more common structure including the powers of 2 without any gaps. I suspect this has solved the issue you were having with OSD but let me know if you do need scaleFactors of 4 and 1 only and I can do some testing.

Hi @glenrobson, thanks for your positive feedback, and sorry for the delay (I was on family vacations)!
You are right about the fact that I had to implement workarounds to truncate scaleFactors that don't follow the sequence of the powers of 2. This is the configuration option ForcePowersOfTwoScaleFactors that is explained in the documentation of the whole-slide imaging plugin for Orthanc.
Unfortunately, many whole-slide scanners will natively generate multi-resolution images that don't follow this sequence, with gaps in the zoom levels. In such a situation, the compatibility mode of the Orthanc plugin will drop the lower-resolution levels even if they are present, which forces the loading of many tiles even though a coarser-resolution tiles are available. And even though the Orthanc DICOM-izer is able to recreate a "regular" pyramid, this is a time-consuming operation. So, I think that it still makes sense for OSD to try and support such gaps.

Are gaps like these supported in the IIIF standard but not OSD? Or would it be a matter of updating both?

I think it's a gap in the spec, only because a search of the API issues doesn't return any discussion about gaps in the scale factors. Reading between the lines, I think this probably means that it wasn't discussed by the editors. (There are other discussions about non-integer scale factors, non-power-of-two scale factors, and the like).
Would be good to add an issue to clarify this in the spec.

It was discussed and decided to have any set of integers, not just ordered factors of two. So it's intentionally perfectly valid to have an arbitrary set of positive integers for supported scale factors.

@azaroth42 Good to know!
So yeah, it seems it would be good for OSD to support any kind of scale factor that's valid in IIIF. I'm actually not sure what would be involved in that, but if somebody's interested in pursuing it I can help figure it out.

The Image API Specs say:

The set of resolution scaling factors for the image’s predefined tiles, expressed as positive integers by which to divide the full size of the image. For example, a scale factor of 4 indicates that the service can efficiently deliver images at 1/4 or 25% of the height and width of the full image. A particular scale factor value should appear only once in the tiles array.

What's not clear to me from this is whether the given scale factors are required to be provided, or only hints at efficient delivery. In other words, if you have scale factors of 1, 2, and 8, does it mean that scale factor 4 is completely unavailable, and that the server will refuse to serve it, or it's just not a pre-defined scale factor?
It's "...the service can efficiently deliver images..." that's hanging me up; It doesn't say "...the service must deliver images..."

It depends on the conformance level of the server. A level 0 won't deliver anything as the SF4 tiles wouldn't exist, but a level 2 will generate them as needed, just not as efficiently. So we were intentionally vague to allow both implementations to conform to the specification. See: https://iiif.io/api/image/3.0/compliance/#32-size


[JENKINS-67902] [JENKINS-63391] Fix tooltips not showing on checkboxes

Relating to https://issues.jenkins.io/browse/JENKINS-67902.
The problem was was that in newer versions of Jenkins the checkbox input is invisible, meaning that there is no hitbox for the user to show the tooltip. The solution is to instead apply the tooltip to the label, which due to CSS shenanigans actually renders the checkbox and its hitbox.

[x] Make sure you are opening from a topic/feature/bugfix branch (right side) and not your main branch!
[x] Ensure that the pull request title represents the desired changelog entry
[x] Please describe what you did
[x] Link to relevant issues in GitHub or Jira
[x] Link to relevant pull requests, esp. upstream and downstream changes
[x] Ensure you have provided tests - that demonstrates feature works or fixes the issue

Will this still work on the older core baselines this plugin claims to be compatible with, or do I need to depend on a recent weekly?

Will this still work on the older core baselines this plugin claims to be compatible with, or do I need to depend on a recent weekly to not break tooltips for users on slightly older core releases?

Ah it won't work on the latest LTS, earliest version it would work on is 2.335 due to the changed checkboxes.

Ideally there would be conditional behavior (e.g. checking visibility? Unsure) that makes it work on all versions of Jenkins. I'd rather not have to go with a 2.335 weekly baseline for the plugin because of this.

Daniel, we have a lot of regressions to fix, so if you are willing to make an exception and accommodate a higher baseline in order to expedite the delivery of this fix, that would definitely speed up the process. I don't deny that it would be better to support multiple versions of Jenkins, but we have a long list of regressions to work on, and spending more time on this one is just going to delay progress on the others.

This fix (as a result of the core change I guess) also addresses JENKINS-63391.

@janfaracik Do you see any problems with the hack I added to this PR?

Looks good to me! :) Nice fix


Support code scanning default setup configuration

fix #2751
I created a PR because the Issue stated the following: Thanks for creating the Issue.

I'll pick this up if I get a chance, but if someone beats me to it, feel free.

Thank you, @valbeat !
Merging.


New babbage min-utxo calculation

Figure 4 of the Babbage spec introduces a new calculation for the minimum ada needed inside a given utxo.

If you want to, coinsPerUTxOWord can be renamed to coinPerUTxOByte and the division by 8 be dropped. But then we need to make sure the parameter is adjusted accordingly at the HF

resolved by #2733 (except for the renaming coinsPerUTxOWord -> coinPerUTxOByte


can not connect to thermal printer

void _connect() {
if (_device == null) {
show('No device selected.');
} else {
bluetooth.isConnected.then((isConnected) {
if (isConnected==true) {
bluetooth.connect(_device!).catchError((error) {
setState(() => _connected = false);
});
setState(() => _connected = true);
}
});
}
}

getting the same issue while connecting

The example code has logical error in its condition. Replace        if (isConnected==true)       with          if (isConnected != true)


Added make command that will auto-deploy-to-dev by default, or any en…

…v if specified
Context

Changes proposed in this pull request

Guidance to review

Relevant links
Things to check

[ ] I have added any new ENV vars in all deployed environments
[ ] I have tested any code added or changed
[ ] I have run integration tests

Workflows only appear in the actions list once in the default branch, so merging to test in another branch


Remove RAdam optional float total steps

Closes #1380

@cyberzhg
You are owner of some files modified in this pull request.
Would you kindly review the changes whenever you have the time to?
Thank you very much.


Handling of yaml references/anchors

I'm trying to use pykwalify to validate some YAML schemas that users can deliver to me, before processing them.
Creating the pykwalify schema to validate one that contains references is a bit of a pain, though. I have to make sure both the YAML and any references are defined in one document.
Would it be possible to extend the syntax to allow loading of an arbitrary amount of YAML files, which then get concatenated internally into one string? Or how should I handle this?

Short answer is, No.
But... inside #143 this is kinda implemented where to make the include feature work i concat all sources of schema to fix some issues in the implementation.
But i am not sure about the feature, right now the job of merging and/or preparing the data that you want to validate is up to you, and not to this lib. There is a option to run multiple different data blobs against the same setup of schemas, but not the other way around.

Another argument against having data merge inside the lib, is that there is to many ways to deal with the data merge and the entire deep-merge problem. There is to many factors to deal with to make a generic solution or configurable solution to merge multiple data blobs into a single one just the way you and everyone else wants. So pushing the problem up to the user makes it much easier to customize it any way you want it to be merged before sending it in for validation.

I'll keep a look out at #143. I understand the reasoning - though it would be practical ;)


Website in the project description has been discontinued

http://httpcache4j.codehaus.org, currently listed as the homepage in the github project description, now displays a message that codehaus is no longer hosting open-source projects. Consider updating the link if the content is available elsewhere or removing entirely if the github page is now the project homepage.

Correct. Will update.


Support for multiple nats addresses

Change nats.address property to nats.machines that takes a list of ips.

Thanks - nats.machines isn't used currently. I'm closing this.


Adds functionality to store newline characters in secrets.

This functionality is required in order to store certs and SSH keys as secrets in Cerberus.

Are these the same changes that you showed me earlier today?

@fieldju Yes, these are the same.