MFA Inwebo connector support

This PR adds a new MFA connector for Inwebo: https://www.inwebo.com/
It is developed in the same way as other MFA connectors. Unit tests and the documentation have been added as well.
It supports both the push mobile/desktop authentication and the browser authentication.
In the webflow, it first checks what authentication methods the user supports.
When only one, it starts the appropriate authentication method. If both are supported by the user, he can select the one he wants in a specific screen.
For the push method, a check is performed until the user accepts the notification on his mobile/desktop app or until timeout.
For the browser authentication, if the user is not enrolled, he can do that in a specific form (activation + pin codes). Otherwise, he just needs to fill in his PIN code.
Authentication attributes (authenticationMethod , authnContextClass , successfulAuthenticationHandlers ) are populated as usual for MFA connector. One specific authentication attribute is the "inweboAuthenticationDevice" to track the device used for authentication.

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

About the version, I tagged everything for 6.3 as the master is still on 6.3 and the release date is planned for the 25th December (unless it's a joke ;-)
I think it can go into the 6.3.0 version. Don't you think so?

I don't think so, and it's certainly not a joke. After the last RC, we'll go into freeze mode looking only for crucial bug fixes. It's too late to add major functionality and this has been the theme of the pull request discussions, discussed on Slack and common practice for the past few years. What is proposed here is not a required fix and I would like to avoid major patches this late in the release cycle. This was also shared on the Slack channel.

Sure, it's not a joke, but the "25th December" made me smile. I'm already in the spirit of Christmas ;-)
You're completely right, it's frozen zone, but as this feature has no impact on the current source code (it's besides), I thought it could go into the 6.3.0 version.
But I understand, I will update the version to "6.4.0".

Sure, it's not a joke, but the "25th December" made me smile. I'm already in the spirit of Christmas ;-)

LOL, indeed. The date was intentionally chosen; sort of a gift! :) I'll go through the patch more thoroughly some time next week hopefully. Thanks!

I fixed the Javadoc and added the RefreshScope annotation to the relevant class.

About the test coverage, the webflow actions should be fully covered and they are the most important pieces of the component.
Some parts cannot be tested: the browser authentication and the SOAP/JSON calls (as they require a valid certificate to Inwebo).
I also tested everything manually.

Some parts cannot be tested: the browser authentication and the SOAP/JSON calls (as they require a valid certificate to Inwebo).

I suppose mocks could be used to test everything in those areas, right? manually testing of course is not going to be sufficient.

Actually, looking at the latest commit here, this is current set to about 88%, and I believe after the 6.3, the general coverage will be closer to 90%. So it's probably good enough anyway. That said, it's difficult to look at the coverage overall and determine whether X is not tested because it cant, or it is not tested because it wasn't. So the more we cover, the better (within reason of course).

Sure. The test coverage value might be deceitful. Nonetheless, I'll make one more pass tomorrow to try to add more tests.

About the versioning, if this contribution is accepted in v6.4.0, the v6.3.0 release will be already available. Thus, I'll be able to backport this feature from master to the 6.3.x branch (to have it in v6.3.1), right?
If so, isn't it best to set @since 6.3.1 in Javadoc instead of @since 6.4.0?

About the versioning, if this contribution is accepted in v6.4.0, the v6.3.0 release will be already available. Thus, I'll be able to backport this feature from master to the 6.3.x branch (to have it in v6.3.1), right?

No. Given this is a rather major feature, the release policy is to allow to be available in a feature release that would be 6.4, with no backports. A patch release such as 6.3.1 is only dedicated to modest fixes and small improvements unless there is good reason to expand that scope (which I dont think is the case here). So the versioning of this patch would be for 6.4.x only, and I think 6.4.0 is fine to choose, since that would be the final/official release.

PS For reference, and anybody passing by, here is a link to the release policy

OK. Indeed, this is consistent with our release policy.

Sorry, should have been clearer. It's SpringResourceProperties

No problem. It seems quite obvious afterwards.

Wonderful.

"The crucial issue seems to be the use of the handler in concert with the webflow. To me, that's the most pressing design concern. Everything else can be worked out."
Yes. I understand your concern. Indeed, the authn handler does nothing.
So I guess the solution is to perform the check twice: first in the action to know if we must come back to the "waiting screen" (before a new check in 2,5 seconds) and again in the authn handler to be sure the push has been accepted.

(before a new check in 2,5 seconds) and again in the authn handler to be sure the push has been accepted.

I suppose somewhere there is a polling mechanism that keeps checking for a result every 2.5 seconds right? Is this done in html via Javascript?

It's done in HTML. Every 2,5s, the "waiting page" (casInweboCheckResultView.html) calls the CheckAuthenticationAction which calls the Inwebo web service and if the Inwebo response is "wait", the "waiting page" is called back.
It seems easier to me to do things that way.

It's done in HTML. Every 2,5s, the "waiting page" (casInweboCheckResultView.html) calls the CheckAuthenticationAction which calls the Inwebo web service and if the Inwebo response is "wait", the "waiting page" is called back.

Polling generally is not a good idea if you can stream the change. For one, you're putting extra load on the server to keep checking for status whereas you just wanted to server to notify the UI when the status does in fact change. The interface should just listen for an event instead of constantly checking for itself. Also, that responsibility is handed off to the UI which generally is never trustworthy.
If you look around the codebase and examine the QR-authentication module or the Acceptto MFA module, you'd find that both of these modules are similar in this way to the implementation here, except that they don't reach back to the CAS server for results in a polling mode. Rather, they set up a worker stream with websockets and such, and establish a communication channel to be automatically notified when something changes in the server.
So the flow would typically be:

Server exposes a communication channel for events that can be streamed to the UI
UI subscribes to this channel/topic waiting for events
Server does the polling itself, removing the responsibility from UI. (Having this functionality at the UI level is problematic for any number of reasons, specially when it comes to patches and security issues when UI has to be modified to handle XYZ)
Server pushes to the stream when a validation result is available and changed.
UI channel is notified of the change, validates it for correct syntax/format, terminates the listener and instructs the webflow to move on with the payload that the server has received.
Webflow moves on to receive the payload and validate it using the correct handler (possibly yet again; extra safety is fine).

I agree that this approach might seem more complicated. Overall, I'd say it has a much better chance for maintainability as well as consistency in design long-term. Most MFA integrations have an element of polling (Synmantec VIP, Acceptto, QR AuthN, Credential Master SSI, etc) so it'd be best to build everything in the confines of the same framework. It will pay off in the longterm and it's good to avoid one-off specials.

Sure. I understand your thinking but while Acceptto supports web sockets, Inwebo does not. You can't subscribe to Inwebo and wait for the notification that the push has been accepted or not.
Moreover, I can't call the Inwebo service from the browser as it requires a client certificate.
So I don't see any better solution than going through the CAS server to check the authentication status.

Sure. I understand your thinking but while Acceptto supports web sockets, Inwebo does not. You can't subscribe to Inwebo and wait for the notification that the push has been accepted or not. Moreover, I can't call the Inwebo service from the browser as it requires a client certificate.

To clarify, you would not set up a websocket channel between CAS client (UI) and Inwebo. That can never work. Instead, what I am suggesting is that you'd set up a websocket channel between the CAS server and the CAS UI, and replace the looping/polling behavior with a streaming equivalent for better performance and consistency. The CAS server does the polling based on appropriate components and certificates, and the UI just subscribes to that channel and listens for events that are streamed by the server. So there is no polling action in the UI. It just listens, and the server does a retry asynchronously in contact with Inwebo to validate stuff and receive payloads, and if it sees a change, it will stream that result back to the UI asynchronously.
This is how QR login works, for example. CAS creates a QR, sets up a websocket channel and just waits (in your case, polls). Some notification at some point is received by CAS from a mobile device via the web socket channel, and the server will then process that result, passes it onto the UI, allowing UI to take proper action (notify user, display stuff, etc). Then the UI instructs SWF to move onto the actual authentication/validation step.
CAS server talks to Inwebo, and then talks to the UI. There is no direct link between the client and Inwebo.

Thanks for clarifying. I misunderstood your previous comment.
About the web sockets:

I had in mind that web sockets were not well supported by older browsers, but this may not be true anymore
I think they are more complicated than "good old" form auto-submits and Javascript calls.

I don't think this decreases the load on the CAS server as the CAS server must poll the Inwebo server in both cases. It's true that it decreases the browser load if ever that matters.
The important point here is the consistency across the source codebase. If it's done that way, I must comply.
Can you point me to the classes/HTML pages where web sockets are used? So that I can reproduce the closest logic...
Thanks.

That's certainly true. At least in my experience dealing with web sockets was no walk in the park, but I think the paradigm does fit here and I think we have the scaffolding here to remove some of the pain. In the end, the goal should be to remove the responsibility from the UI layer to the polling. One might suppose that for a typical overlay/user, the UI has a much higher chance of being pulled into an overlay for modifications than some Java SWF class; so the more we can keep logic like this out of UI the better, and it probably helps with upgrades as well.
The best example to get you started for a review is the QR authN module that is very similar to what is happening here.

The server sets up a web socket channel and topic:
https://github.com/apereo/cas/blob/master/support/cas-server-support-qr-authentication/src/main/java/org/apereo/cas/config/QRAuthenticationConfiguration.java#L173-L185

The UI subscribes to a web socket channel configured by the server:
https://github.com/apereo/cas/blob/master/support/cas-server-support-thymeleaf/src/main/resources/templates/fragments/qrAuthentication.html#L78-L113

Server will do what it needs to do and goes into a poll, and eventually when it receives some kind of update, it passes a payload to the UI layer via the web socket channel:
https://github.com/apereo/cas/blob/master/support/cas-server-support-qr-authentication/src/main/java/org/apereo/cas/qr/web/QRAuthenticationChannelController.java#L90-L93

The UI has the option to parse/validate this payload, and transform it if necessary. Finally, it then instructs SWF to proceed. This is where SWF kicks in, accepts that payload and invokes the correct action (and the CAS authentication engine) to actually validate that payload/credential.
So in a sense, this not only refocuses the polling responsibility but in the end also takes care of the authentication handler's responsibility as well.
If I can clarify anything further, please let me know. The more eyes on this, the better.

Thanks for the pointers. Indeed, UI are more likely to be changed than SWF actions.
I will study all that and rework the components.

For the push, I have an issue with the "authentication handler really performing the authentication".
I need a first call to the "checkResult" WS operation in the SWF action to know if we must still wait or if the authentication is completed and another call to the "checkResult" WS operation in the authentication handler to check the authentication.
The problem is that the second call fails, we cannot check twice a successful authentication (for the same Inwebo sessionId).
As soon as I do it once, I need to keep the information in the InweboCredential and the InweboAuthenticationHandler can just rely on this information.
This is a bit awkward, but I don't see any better solution.
What do you think?

I just checked with someone from Inwebo and indeed, we can't check twice a successful push notification. So I will keep in the credential the fact that the authentication was successful and reuse that in the authentication handler.

I just checked with someone from Inwebo and indeed, we can't check twice a successful push notification.

That's fair, sure. You can of course carry anything that is necessary in the credential object, as long as the handler can in fact verify that state correctly, and not just rely on the type of the credential to operate.

We're in line. This is what I do now: https://github.com/apereo/cas/pull/5001/files#diff-f8b3de0873b2467c5a3d782d751949279eec743827a82a353b33ee9795cdbaacR56 and then: https://github.com/apereo/cas/pull/5001/files#diff-82dbecb409c4dcd38986324e966eaad24baa752234363b9b9515c1d7a0a59cd3R47

@mmoayyed I'm trying to implement the websocket approach.
So the UI would subscribe to some topic while the CAS server would check the authentication status at Inwebo every x seconds.
The problem I see is that as soon as the CAS server has successfully checked the authentication status at Inwebo, it can't check it once more. Though, it will notify the UI which will post to some SWF action to trigger the authentication part in CAS.
In that case, how can this SWF action be sure that the authentication has been accepted by Inwebo? The only option I have in mind is to keep in the ticket registry the information that the authentication status has been accepted and check that from the SWF action.
But this seems so much complexity and code overhead that I'm reluctant to keep going.
What do you think?

But this seems so much complexity and code overhead that I'm reluctant to keep going.

I agree. Based on your description, if the flow cannot re-verify the state again with the mfa provider, then this option does not work and only adds extra complexity with the registry and the like. So let's not go this route at all, since consistency in this case will actually lead to confusion and inconsistency :) As long as the handler is actually handling the authentication in some form other than simply verifying the credential type, I think we are OK to go. Sorry for sending you down this path.

No problem. I will give up on the web socket approach and resume my work on other comments. The authentication handler does really check more than the credential type: for the push approach, it checks that the credential has been marked as already authenticated and for the browser authentication, it checks the OTP of the credential at Inwebo.

I just added more tests to try to improve the test coverage (based on the "lines xxx not covered" comments I see in the commits).
We'll see.

@mmoayyed Can you give some pointer about the UI tests I should add? Thx

Wonderful. Watch the coverage here and improve:
https://codecov.io/gh/apereo/cas
CodeCov can be a bit tricky and often times, it seems like the UI does not quite accurately calculate the final coverage. But I'd say the overall coverage should not be less than 89%. More of course is better!
There is a small section here about UI tests:
https://apereo.github.io/cas/development/developer/Test-Process.html#browser--functional-testing
What you want to do is:

create scenarios here: https://github.com/apereo/cas/tree/master/ci/tests/puppeteer Typically one for each page/template you might have
Add the scenarios to the CI workflow where puppeteer tests are defined: https://github.com/apereo/cas/blob/master/.github/workflows/cas-build.yml#L762
Each scenario consists of a script.js that is run by puppeteer and a script.json that contains settings for CAS to run and activate. I suggest you start with an existing scenario, copy/paste and rework it to match Inwebo. Your tests in the javascript should examine the elements on the page to make sure things are found where they should be. There are scenarios for duo and gauth that might be specially relevant for your work here.

If it helps, I use this bash function in my profile for local testing:
function pupcas() {
  scenario=$1
  cd /path/to/cas
  echo -e "Scenario: $scenario\n"
  ./ci/tests/puppeteer/run.sh ./ci/tests/puppeteer/scenarios/"${scenario}"
}

and then I'd run: pupcas scenario-name. Tests run in an isolated environment. You should not have to do anything more to get a test scenario up and running.

I love the idea of UI testing, but my experience has proved me how hard it is to maintain them.
I tried running: ./ci/tests/puppeteer/run.sh ./ci/tests/puppeteer/scenarios/gauth-register in my CAS source codebase.
I have this error:
2020-12-09 10:26:30,516 ERROR [org.apereo.cas.authentication.mfa.trigger.HttpRequestMultifactorAuthenticationTrigger] - <No multifactor authentication providers are available in the application context to satisfy [[mfa-gauth]]>

It seems the GAuth dependency is not taken into account although the dependency is actually defined in the script.json.
I guess there is something wrong on my local environment?
And this makes me think that I need a test account (and maybe several accounts) at Inwebo for my UI tests, right? There is no mocking of the Inwebo connection, is it?

It is definitely non-trivial, but overall, it does pay quite well when it comes to keeping protocol compatibility, and avoiding issues like this: https://github.com/apereo/cas/pull/5009 (During this work, I found so many issues that were left out/ignored when UI switched to material design; some were quite embarrassing actually). It also means that we cant just change the HTML at random and on will to break the webflow for example.
I'd say there is probably an issue with your local env, since CI passes correctly. Are you certain you're not running a stale commit? What do your logs show when you run the shell script?
And yes, you need to use "mock settings" for the mfa provider. If there are pages you can't test without valid credentials, it's fine. Leave them for now.

I see this error somewhere at the beginning:
./ci/tests/puppeteer/run.sh: line 37: jq: command not found
I guess this can be the culprit?
About the "mock settings", how am I supposed to do that? By injecting Java mocked classes?
Because my first action in the Inwebo webflow is to check at Inwebo whether this user is registered and what authentication methods are available for him and this requires a valid account production (for example: leleuj) and a valid client certificate to be able to call Inwebo unless I can mock the core InweboService which talks to Inwebo.

Try uncommenting these lines:
https://github.com/apereo/cas/blob/master/ci/tests/puppeteer/run.sh#L3
jq is available in CI. You can either let the script install it for you (every time) or you can install jq yourself once without modifying the shell script.

About the "mock settings", how am I supposed to do that? By injecting Java mocked classes?

No mocked java classes. Your scenario should mimic what a typical user would do with only mock properties/settings. No additional code. Do you have a sample test account that can be used by CI to run through the mfa scenario? perhaps your own test account/certificate? The desired behavior should be that you'd declare settings in the script.json file along with the right module, and then spin up a browser via puppeteer to run through the sequence. You'd be testing CAS as a blackbox with no java code to accommodate the scenario; of course this can only work if there are credentials/settings that can be used for the test by CI and anyone else.

I installed jq on my Mac via: brew install jq and now it works ;-)
I can't share private account/client certificate/site alias/site id in public CI tests. I will ask my contact at Inwebo for test accounts.

Great! Glad you got this working.

@mmoayyed  I'm trying to create a UI test, but I have an issue with the dependency part.
I tried: "dependencies": "inwebo" and "dependencies": "support-inwebo-mfa"
and "dependencies": "cas-server-support-inwebo-mfa" in the script.json file, but I always get the following error:
ERROR [org.apereo.cas.authentication.mfa.trigger.HttpRequestMultifactorAuthenticationTrigger] - <No multifactor authentication providers are available in the application context to satisfy [[mfa-inwebo]]>

It seems the dependency is not added to the overlay. Any idea?

Your dependency should be inwebo-mfa in the config.

Man! The only one I did not try ;-)
It works. Thanks

I have made some progress.
Though, I still face an issue. I have a Javascript script in a page and an inline Javascript function:
<script src="https://ult-inwebo.com/neon/3.6.0/simple-neon-lib.js " type="text/javascript"></script>
<script th:inline="javascript">
            /*<![CDATA[*/
                var casLogin = /*[[${login}]]*/ '';
                var siteAlias = /*[[${siteAlias}]]*/ '';
                var siteDescription = /*[[${siteDescription}]]*/ '';

                window.onload =  function() {
                    neon = new Neon.Neon(siteAlias, siteDescription);
                    neon.initOnline()
                    .then(logins => {
                        if (logins.length == 0 || !logins.includes(casLogin)) {
                            $('#enrollForm').submit();
                        }
                        $('#otpForm').css('display', 'block');
                    })
                    .catch(e => {
                        $('#inweboErrorForm').submit();
                    });
                };
...

They are not executed. How/what can I do to make them executed in the page? Thanks

Don't worry about the bot. I'll fix this. As for the JS issue, dont know without actually seeing it live. Run with developer tools and examine the page source to see the issue. You probably have a syntax problem somewhere that stops the JS.

Indeed, there is a JS issue, I thought there was some magic to enable. Sorry for the waste of time.

I just updated the UI test, but I can't go any further on UI testing as it would require human actions (mobile user action for example).
So I think that after 112 comments and 22 commits ;-), we should be good.
@mmoayyed do you see anything else to address on this PR? Thanks

That's perfect, thanks so much for getting the PR to the state. I'll take a closer/final look next week but I think we're just about done.

Thanks for your time too. I think we have highly increased the quality level of the source code.

@mmoayyed I synced the PR with the master.
Regarding the build, I see that the "checkstyleMain" step fails, but it is not related to these changes.
I think we're good for the merge.

@mmoayyed I synced the PR with the master.
Regarding the build, I see that the "checkstyleMain" step fails, but it is not related to these changes.
I think we're good for the merge.


unable to push conf files

Hi, is it possible to push conf files /directory into the package ?
for example : I want to push a directory C:\Program Files (x86)\Mozilla Firefox\distribution with the firefox package because the classic Firefox MSI don't create this directory

Hi, create a custom update for that.


DataTable pagination buttons different sizes on mobile

@hughess is it that the left buttons are smaller than the right ones? I can't immediately see what's going wrong from this screenshot

The outer buttons are larger than the inner ones:

@hughess ahh thank you

This is an issue with the icons themselves; I tried to mitigate during implementation but we might need to look at other ways to solve it


feat: dropdown in form

Description
#338
Fixes #(issue)
Checklist

[x] My code follows the contributing guidelines of this project.
[x] I am aware that all my commits will be squashed into a single commit, using the PR title as the commit message.
[x] I have performed a self-review of my own code.
[ ] I have commented my code in hard-to-understand areas.
[ ] I have updated the user-facing documentation to describe any new or changed behavior.
[x] My changes generate no new warnings.
[ ] I have added tests that prove my fix is effective or that my feature works.
[ ] I have not reduced the existing code coverage.

Comments

Summary by Sourcery
This pull request introduces a new dropdown field to the form component, enhancing the form's functionality by allowing users to select from predefined options. The form component's rendering logic has been updated to support this new field type.

New Features:

Added a dropdown (select) field to the form component, allowing users to select options from a predefined list.

Enhancements:

Updated the form component to support the new dropdown field type, including rendering logic and field options.

@psankhe28, I hope you don't mind, I pushed a commit that fixed the lint issue and made sure it would be much easier to address for future contributors.


DRM.FAILED_TO_CREATE_SESSION - Rejected with system code (70)

Have you read the FAQ and checked for duplicate issues: yes
What version of Shaka Player are you using:2.2.6
Can you reproduce the issue with our latest release version: yes
Can you reproduce the issue with the latest code from master: yes
Are you using the demo app or your own custom app: own
If custom app, can you reproduce the issue using our demo app: yes
What browser and OS are you using: DRM enabled Electron in Windows
What are the manifest and license server URIs:
(you can send the URIs to<EMAIL_ADDRESS>instead, but please use GitHub and the template for the rest)
What did you do?
Trying to playback downloaded asset
What did you expect to happen?
Playback should work
What actually happened?
Player throws error:
"Shaka Error DRM.FAILED_TO_CREATE_SESSION (Rejected with system code (70))"
Hi, what's the meaning of system code 70 ?I have an electron app that downloads DRM encrypted content and plays it locally. This error happens only on Windows (tested on 8.1 and 10 so far).
On mac everything works fine.
Implementation follows this example: https://shaka-player-demo.appspot.com/docs/api/tutorial-offline.html

That is a code given to us by the browser.  These codes are not publically documented.  Did you set usePersistentLicense to false?  You can't store licenses offline on desktop.  Does the error happen during storage or when playing?  If you reload the page, can you play it then?  Can you provide a link to the code you are testing with?  You can send it privately to<EMAIL_ADDRESS>if you want.

@danmo, is this still an issue for you?  If so, can you provide a way for us to reproduce the issue?

Solved. In my case, it was due to missing VMP signing.

Okay.  Thanks for the update!


Update URI.hs

Wrote Int instance for URIDecode. Needed this to get the updated README example to compile (as it uses a path segment).

Let's land this, thanks! We probably could also use tests here. In particular, I think we need to check to see if there are any leftovers instead of just taking the fst of the pair.

See here for more: v

Makes sense. I knew there could be left overs but wasn't sure how pedantic decoders should be.

Yeah—the policy should probably be to have them be fairly pedantic. Without it we might have awkwardness around matches causing accidental overlap in paths.


NuGet and npm packaging

I suggest reviewing the 3 new example projects first. They are intended to provide minimal canonical examples of how to consume the nuget and npm packages, for the 3 main JS->.NET scenarios supported so far:

examples/aot-module
examples/dotnet-module
examples/dotnet-dynamic

Notes about the rest of the changes:

Enable automatic build versions based on git commit (NerdBank.GitVersioning).
Set up 3 nuget packages:

Microsoft.JavaScript.NodeApi
Microsoft.JavaScript.NodeApi.DotNetHost
Microsoft.JavaScript.NodeApi.Generator
Add .props and .targets files to nuget packages to streamline integration for projects that consume the packages.

Set up npm package: node-api-dotnet

This is an unusually structured npm package, so a normal .npmrc file wouldn't be sufficient. A custom pack.js script stages all the required script and binary files before calling npm pack.
By default it packs binaries only for the current system RuntimeIdentifier, but it also supports a list of rids for creation of a multi-platform package.
The pack.js is called from MSBuild so both npm and nuget packages can be built with a single dotnet pack command.

Change the Node API NativeHost -> ManagedHost activation flow so that it gets the path to the managed host assembly from JS code (index.js bundled in the npm package) instead of inferring the location.

This will enable the npm package to support multiple target framework versions, though only net7.0 is built now.
This greatly reduces the amount of messy P/Invoke code required in NativeHost. Previously ~100 lines of code were required just to find the path to itself, so that it could infer the path to the adjacent managed host assembly.
Exporting a JS callback method from NativeHost exposed a pre-existing problem with the way both NativeHost and ManagedHost interacted with Node API module context. I had to create "NoContext" variations of the JSNativeApi callback adapters to support native host callbacks that don't rely on a Node API module context. (But there is still a problem for the managed host loading multiple modules; I'm not solving that now.)

        NativeLibrary.SetDllImportResolver(

Since this call is per process, we cannot really do it in user modules. I am the code to avoid this call.

Refers to: src/NodeApi/Native/JSNativeApi.Interop.cs:26 in 8c79fac. [](commit_id = 8c79fac86cffe7db17d42b632df8e29ad673916f, deletion_comment = False)


BreakoutNoFrameskip-v4 in ppo2 does not match

When I try to load the pkl file from ppo2 folder (under trained_agents), I got this error:
TypeError: Expected float32 passed to parameter 'value' of op 'Assign', got 'model/c1/w:0' of type 'str' instead.
After checking the folder, I found that the description for BreakoutNoFrameskip-v4.pkl is td3.
I think there may exist some mistakes.

Hello,
Please fill in the issue template.
the following command runs perfectly fine:
 python enjoy.py --algo ppo2 --env BreakoutNoFrameskip-v4


tcl-tk: SHA256 mismatch

When doing brew install tcl-tk, I get the following error:
Error: SHA256 mismatch
Expected: 95c676130ce2fdb00e8a6f79c4fea9e79d071063783a61db9274647920d97a03
Actual: dfbe4388d161680dded6ea83ec3638afb056c76913e48d4b44165e2f5cc1a298

I'm getting the expected hash; can you still reproduce this?

@dunn Yes, I can, with the exact same actual hash as above. I should also mention that I'm using macOS Sierra.

That's the checksum on tcllib-1.17 not 1.18, which means your brew is very outdated and this issue is moot.
You may have been a victim of https://twitter.com/MacHomebrew/status/763686348041641984 so I recommend you follow the instructions there.

Thanks @ilovezfs ! That did the trick :)

@stephsamson Nice! Glad to hear it.


It doesn't work probably when you set the text programmatically

I tried to add the text like this:
textView.text = "some long test"
and it's not working, but when I set the text via storyboard it works!

@mohammad19991 yes you're right. It doesn't work with programmatically I've tried, and also it has swift 2.0+ issues.

This still doesnt work no ?

This works and was working always.


Simplify HttpUtil and ImageUtil

Rationale
Upgrading HttpClient 4.x -> 5.2. Also taking the opportunity to simplify and eliminate unused code in HttpUtil and ImageUtil.
Changes

Upgrade to HttpClient 5.2
Rename HttpUtil.get() to getText() and return contents as a String. This is what the one caller wants and it allows us to close resources properly.
Switch to new fancy ResponseHandler

@labkey-matthewb Let me know if you think I've removed something useful


server side support

please

What do you mean exactly by that? What features would you expect from this mod on the server side?

a permission for players for using F3+N

I know that some other people do it this like telling players that he is operators, or something like that

Oh I see what you mean. Basically, when allowing a player to use the gamemode command, automatically granting them gamemaster permissions so that they can use F3+N and the game mode switcher.
This is out of the scope of this mod because there is no way in vanilla to allow people to use specific commands without using the permission system. This means servers do it using a modification in the first place, so this is a bug that has to be fixed on their modification.


Suggestion: Add compatibility with Vanilla Expanded set of mods

I know this sounds like a lot of work too but...
Vanilla Expanded is rather popular and add a lot of tech. It would be great if this mod added stepping stones to their tech too!

No promises about timeline, but I've started on a patch mod to address this. (=


gha: remove trailing space to fix the corresponding workflow check

I think this one fixed this issue #35889

Ah, yeah, missed that one. Closing.


feat(RESP-1747): Removed chat ui references in docs due to deprecation

[BOT] Preview available with hash 8526c44028c1e07d6f568ec5e0a5b60916b89f26 here.

[BOT] Preview available with hash 2652a28cae38488a623f323624b4e3e94e7261cf here.


VLAZ: Watch nocodefirm.com

VLAZ requests the watch of the watch_keyword nocodefirm\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

nocodefirm\.com has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Nisse Engström in Charcoal HQ


fix some name reference issues around user lookup error handling.

We were noticing some 500 errors on our deploy messages as of late, especially since reconnecting our Heroku to Github.
The errors were NoMethodErrors on the target reference on line 31 of SlackMessage::Api.
Upon further review, it looked like maybe this error handling refactor wasn't completely finished in the latest version of the code because the method on error handling was also mis-referenced.
I took the opportunity to also move the json parse error into the error handling method at the same time because it looked like it matched the pattern of other error handling methods nearby.
Note, however, that I did not verify all of the actual error handling code to make sure it was doing sane things. Looking at the commit history it looks to mostly be copy/paste from an earlier time when the same sorts of error handling conditions were inline within the user_id_for method.

Hey Dave / Dan!
Yeah, sorry, not sure what happened here. I think I was pushing another feature and must have caught up the half-an-extraction. Will push this version in a minute.
Good to hear from y'all. Hope all is well over there.

@dgiunta @thatsanicehat on a side note, on that fit 🤦
I don't suppose y'all would be able to post the snippet in mealhand that fails all tests when a focus gets checked in? I think it's like two lines in spec/spec_helper near the bottom. No worries if there are corporate concerns there, I can think about it again.

@jmmastey just saw your comment above! Did you end up getting that spec helper update? I checked in all of our *_helper files and didn't see any configuration that jumped out at me as doing the thing you're talking about. :/ If I could find what you're talking about I certainly don't have any "corporate concerns" about sharing it with you. Let me know if you have any additional ideas for how I might identify the code you're talking about I'd be happy to get it to you!

One way would be to check in a fit and then you'd get an error on your build with a very specific error message. But also not a big deal. I appreciate y'all hunting for it!

@jmmastey I think you're looking for this block!
# Every once in a while we hit a problem where a `fit` or an `fdescribe` sneaks
# into the codebase and our suite blithely passes, while running only one test.

# This change will cause a failure in CI if any focus tests are detected.
RSpec.configure do |c|
  if ENV['CI'].to_b
    c.filter_run_when_matching :focus => lambda { raise ArgumentError, "Don't filter tests on checked in code." }
  else
    c.filter_run_when_matching :focus
  end
end

👋

@klesht that's it! Thanks a bunch


Crypto intraday

Add a method to Cryptocurrencies to collect data from CRYPTO_INTRADAY entry point.

Thanks @Galsor. We will merge it after some further review & greenlight by the community.

This can be implemented via the 3.0.0 launch in July 2024. Thanks!


Regenerate relevance tables in analysis_server

The relevance tables were generated before the prevalence of null safe code. We need to regenerate them, using null safe code, aspects of which may look quite different.
CC @bwilkerson

We should think about the right mix of inputs in order to maximize the quality of the results for whatever kind of code a user might be writing.

This doesn't have to be super rigorous to get some good benefits, right? Like if I switched the inputs to be just the flutter/gallery app, and regenerate the tables, and run completion_metrics (over a corpus different from flutter/gallery, I think), and the metrics are generally better, then we can call that a day, right? A separate task might focus on increasing the inputs by an order of magnitude, and trying to maximize the gains by selecting different inputs.

... over a corpus different from flutter/gallery, I think ...

Yes. You can't evaluate the quality of the relevance tables by running them over the same code used to build them for the same reasons you can't test an ML model by running it over the training data.
I ran an experiment similar to what you're describing a while back (maybe a year ago? my sense of time has been thrown off by the pandemic) and what I found is that the relevance tables didn't really change enough to show any improvement over what we currently have. I don't know whether the same will be true now. Let me know if you want details.

That's very interesting. The one reason I filed this task is the pre-null safety / post-null safety change which has taken place. I think it'd be worth investigating, if we make a push to improve completion quality.
All that being said, I have no intention of investigating completion quality any time soon; my current charge is strictly for performance.

... the pre-null safety / post-null safety change ...

I don't think null-safety had as big an impact on completion suggestions as we might expect. We do have a feature that looks at types, and the types of expression has changed, but that's not part of the content of these tables.
That said, I'd forgotten before but one aspect of this, which will continue to be an issue into the future, is that newer language features that didn't exist when the tables were last built aren't represented in the tables at all. That by itself is a good reason for rebuilding them.


#60 - Added Subspace logo

Let me know what you think.
I can do more tweaks to this current version or go down a different approach :)

I'm going to close this as it's been pretty stale for a while.
Happy to reopen if anyone wants to continue with it, or feel free to open a new PR (or just reply to #60 if you want to discuss ideas).


jetify -r

Environment
 React Native Environment Info:
    System:
      OS: macOS 10.14.6
      CPU: (8) x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz
      Memory: 742.54 MB / 16.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 8.15.0 - ~/.nvm/versions/node/v8.15.0/bin/node
      Yarn: 1.7.0 - /usr/local/bin/yarn
      npm: 6.9.0 - ~/.nvm/versions/node/v8.15.0/bin/npm
      Watchman: 4.7.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.2, macOS 10.14, tvOS 12.2, watchOS 5.2
      Android SDK:
        API Levels: 23, 25, 26, 27, 28, 29
        Build Tools: 23.0.1, 25.0.0, 25.0.3, 26.0.1, 26.0.2, 27.0.0, 27.0.3, 28.0.3, 29.0.0
        System Images: android-22 | Google APIs Intel x86 Atom_64, android-23 | Intel x86 Atom_64, android-23 | Google APIs Intel x86 Atom, android-23 | Google APIs Intel x86 Atom_64, android-24 | Google Play Intel x86 Atom, android-27 | Google APIs Intel x86 Atom, android-27 | Google Play Intel x86 Atom, android-28 | Google APIs Intel x86 Atom, android-28 | Google APIs Intel x86 Atom_64, android-28 | Google Play Intel x86 Atom, android-28 | Google Play Intel x86 Atom_64, android-29 | Google APIs Intel x86 Atom
    IDEs:
      Android Studio: 3.4 AI-183.6<IP_ADDRESS>22156
      Xcode: 10.2.1/10E1001 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.3 => 16.8.3
      react-native: 0.59.10 => 0.59.10
    npmGlobalPackages:
      react-native-asset: 1.1.4
      react-native-cli: 2.0.1
      react-native-git-upgrade: 0.2.7

Platforms
Android
Description
I'm not able to use @react-native-community/netinfo v.4.x with react-native v.0.59.10. As suggested in the docs i've used Jetifier
part of my package.json
 "scripts": {
    "postinstall": "npx jetify -r",
  ...
 }
  "dependencies": {
    "@react-native-community/async-storage": "^1.6.1",
    "@react-native-community/netinfo": "^4.1.3",
    "native-base": "^2.13.4",
    "react": "16.8.3",
    "react-native": "0.59.10",
    "react-native-extra-dimensions-android": "^1.2.5",
    "react-native-firebase": "~5.5.5",
    "react-native-fs": "^2.14.1",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-localize": "^1.1.4",
    "react-native-svg": "^9.5.3",
    "react-native-vector-icons": "^6.6.0",
    "realm": "^2.29.1"
  },

Jetifier seem to work well, it just edit<EMAIL_ADDRESS>with import android.support.v4.net.ConnectivityManagerCompat;
But the build fail with this error:
> Task :@react-native-community_netinfo:compileDebugJavaWithJavac FAILED
/[...]/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/ConnectivityReceiver.java:11: error: package android.support.v4.net does not exist
import android.support.v4.net.ConnectivityManagerCompat;
                             ^
/[...]/node_modules/@react-native-community/netinfo/android/src/main/java/com/reactnativecommunity/netinfo/ConnectivityReceiver.java:98: error: cannot find symbol
                    ConnectivityManagerCompat.isActiveNetworkMetered(getConnectivityManager());
                    ^
  symbol:   variable ConnectivityManagerCompat
  location: class ConnectivityReceiver
2 errors

When (in the same project) i did installed v.3.2.1 all work like a sharm.
I've read and test a lot from stackoverflow and from others issues but no solutions works. How can I solve it? how come it doesn't find android.support.v4.net

@bitlab-code :wave: Can you post the contents of your build.gradle, app/build.gradle and gradle.properties files please?

Sure, thank you

app/build.gradle...

apply plugin: "com.android.application"
apply plugin: "com.google.firebase.firebase-perf"
apply plugin: 'io.fabric'

import com.android.build.OutputFile

project.ext.react = [
    entryFile: "index.js",

    // Sometimes (like if you use Android API<17) adb forwards don't work, so you need a bundle in the dev APK
    bundleInDebug: project.hasProperty("bundleInDebug") ? project.getProperty("bundleInDebug") : false,
]

apply from: "../../node_modules/react-native/react.gradle"

def enableSeparateBuildPerCPUArchitecture = false

def enableProguardInReleaseBuilds = false

android {
    compileSdkVersion rootProject.ext.compileSdkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        applicationId "org.bitlab.asilo"
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0"
    }
    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }
    buildTypes {
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            // For each separate APK per architecture, set a unique version code as described here:
            // http://tools.android.com/tech-docs/new-build-system/user-guide/apk-splits
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }
}

dependencies {
    implementation project(':@react-native-community_netinfo')
    implementation project(':realm')
    implementation project(':react-native-vector-icons')
    implementation project(':react-native-localize')
    implementation project(':react-native-linear-gradient')
    implementation project(':react-native-firebase')
    implementation project(':react-native-extra-dimensions-android')
    implementation project(':react-native-fs')
    implementation project(':react-native-svg')
    implementation project(':@react-native-community_async-storage')
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation "com.facebook.react:react-native:+"  // From node_modules

    // Library as defined in settings.gradle
    implementation project(path: ':react-native-firebase')

    // Required dependencies
    //noinspection GradleCompatible
    implementation "com.google.firebase:firebase-core:16.0.9"
    implementation "com.google.android.gms:play-services-base:16.1.0"

    // implementation('com.google.firebase:firebase-ads:15.0.1') {
    //     // exclude `customtabs` as the support lib version is out of date
    //     // we manually add it as a dependency below with a custom version
    //     exclude group: 'com.android.support', module: 'customtabs'
    // }

    implementation "com.google.firebase:firebase-auth:17.0.0"
    implementation "com.google.firebase:firebase-analytics:16.5.0"
    implementation "com.google.firebase:firebase-perf:17.0.0"
    implementation "com.google.firebase:firebase-config:17.0.0"
    implementation "com.google.firebase:firebase-storage:17.0.0"
    implementation "com.google.firebase:firebase-dynamic-links:17.0.0"
    implementation "com.google.firebase:firebase-database:17.0.0"
    implementation "com.google.firebase:firebase-functions:17.0.0"
    implementation "com.google.firebase:firebase-firestore:19.0.2"
    implementation "com.google.firebase:firebase-messaging:18.0.0"
    implementation('com.crashlytics.sdk.android:crashlytics:2.9.9@aar') {
        transitive = true
    }

    // For Firebase Ads
    // // noinspection GradleCompatible
    // implementation "com.android.support:customtabs:27.1.1"

    // For React Native Firebase Notifications
    implementation 'me.leolin:ShortcutBadger:1.1.22@aar'
}

// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
    from configurations.compile
    into 'libs'
}

apply plugin: 'com.google.gms.google-services'

build.gradle...

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext {
        buildToolsVersion = "28.0.3"
        minSdkVersion = 21 // <---- API<21 need multiDex
        compileSdkVersion = 28
        targetSdkVersion = 28
        supportLibVersion = "28.0.0"
    }
    repositories {
        google()
        jcenter()
        maven {
            url 'https://maven.fabric.io/public'
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath 'com.google.gms:google-services:4.2.0'
        classpath 'com.google.firebase:perf-plugin:1.2.1'
        classpath 'io.fabric.tools:gradle:1.28.1'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
    }
}

settings.gradle...

include ':@react-native-community_netinfo'
project(':@react-native-community_netinfo').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/netinfo/android')

gradle.properties is empty, i've tried with
android.useAndroidX=false
android.enableJetifier=false

but didn't work.

Thanks for this. Those all look correct.
Can you try manually adding the support library dependency to your app/build.gradle file?
implementation "com.android.support:support-v4:28.0.0"

Added, but I always get the same error

Can you also try a clean build with ./gradlew clean and see if that fixes it.
If none of that works, you might need to stick with the pre-AndroidX version until you upgrade to React Native 0.60.
Is there a reason you don't want to use Jetifier in the "forward" mode and instead migrate to AndroidX?

Can you also try a clean build with ./gradlew clean and see if that fixes it.

yes, but got the same error.

If none of that works, you might need to stick with the pre-AndroidX version until you upgrade to React Native 0.60.
Is there a reason you don't want to use Jetifier in the "forward" mode and instead migrate to AndroidX?

Because currently we can't migrate all libraries to androidx.
With this library the community making a great job after split out from the core of React Native, so we would like to use the latest version 🙂
Anyway i found the problem.
I forked the repo and I simply did manually the job of Jetifier and in addition I removed the two lines highlighted in the file gradle.properties.
It works great, and when (to test) i re-added those two lines i got the same error.

Interesting... Maybe this is something which should be added to the Jetifier tool. There's no reason why it couldn't do that automatically for you.
cc @mikehardy ?

I am having thesame problem. any fix yet?

@ankemzi The fix is right above. You need to patch the gradle.properties to remove the androidX settings.

Backwards compatible build.gradle changes are subtle - check this out:
https://github.com/react-native-community/react-native-device-info/blob/master/android/build.gradle#L46
That way you can dynamically select which version to use, and it works forward or backwards

@mikehardy When happens when AndroidX version 20 comes out 😉

An easy patch man :-). Native development :+1:  haha

in my case, i am at RN 0.59.10, I found that other library  enable androidx may cause this  error point to this library in android studio, and lead people here;
i search useAndroidX  and enableJetifier  and found the are true in  react-native-viewpager ,
delete then and  everything  works fine


Test builds should not re-use same feeds

stream-py got this part right by combining UUID and other prefixes to avoid re-using the same feeds (and get previous run pollution)

I believe this is already the case
https://github.com/GetStream/stream-php/blob/master/tests/integration/FeedTest.php#L500-L501


Csv separator

How to change csv column separator?
In my csv files the column separator is ;
So the plugin showing every column in one cell.

Use the delimiter property as below.
$('#my').jexcel({
csv:'https://bossanova.uk/components/bossanova-ui/demo/demo1.csv',
csvHeaders:true,
delimiter:';',
colWidths: [70, 200, 300],
});

Hello,
delimiter property doesn't work
https://imgur.com/U97M9ob

The auto-detection of csv separator has been addressed here:
https://stackoverflow.com/a/49273276/1563072
You might want to check this :)

In version v4.10.1 the property is working correctly, but the correct string is "csvDelimiter" and not "delimiter" as suggested by @pphod

Use the delimiter property as below.
$('#my').jexcel({ csv:'https://bossanova.uk/components/bossanova-ui/demo/demo1.csv', csvHeaders:true, delimiter:';', colWidths: [70, 200, 300], });


Increase coverage

Coverage remained the same at 90.871% when pulling 52f500fbdaa7f610f3195a53c7c4d8958c3f39af on chishien:master into 0289c507d5b528bb4c532aeb669cc4d50d9bf659 on CS2103JUN2017-T4:master.

Coverage remained the same at 90.871% when pulling 4c982488c85d7e4786f019b7cff4454eac4a1925 on chishien:master into 7643c9cc3d8482bc5e2f85e4b01cb478d986cb44 on CS2103JUN2017-T4:master.

Changes Unknown when pulling f0f3accd38969be71ab78f9c29eaf00cc08c17b1 on chishien:master into ** on CS2103JUN2017-T4:master**.

Coverage increased (+0.7%) to 91.756% when pulling 6a09ec92b3c84902ae3ed9c3664510e280d6586d on chishien:master into 3d9dfec0088a9715a8ef349424e08f6df8445962 on CS2103JUN2017-T4:master.

Coverage increased (+0.8%) to 91.794% when pulling 272a24ee28f7794fc89969972ab8da243b157659 on chishien:master into 3d9dfec0088a9715a8ef349424e08f6df8445962 on CS2103JUN2017-T4:master.


Investigate cookie resurgence in dev site

Cookies don't seem to be working properly in dev site -
could be bc the domain is getting set weirdly:

can't reproduce


False positive for ModifiedButNotUsed check is reported

The EP@HEAD (8beaab4aa02e62a1fb8a6f3f6493f39b6196ffa8) is erroneously reporting variable as unused:
java/com/google/gerrit/server/plugins/PluginGuiceEnvironment.java:348: error: [ModifiedButNotUsed] A collection or proto builder was created, but its values were never accessed.
      Map<Annotation, ReloadableRegistrationHandle<?>> am = new HashMap<>();

The source is here: [1]. The am variable is accessed in line 366:
ReloadableRegistrationHandle<Object> h =
            (ReloadableRegistrationHandle<Object>) am.remove(key.getAnnotation());

[1] https://github.com/GerritCodeReview/gerrit/blob/master/java/com/google/gerrit/server/plugins/PluginGuiceEnvironment.java#L348-L366

I'm pretty sure this was fixed in ccd34868e0704c6978cdb29cd069b1fb4fc5bca9.
I can reproduce against gerrit with the version of EP currently in Bazel, but not with EP at head. How did you determine it's still happening at head? Do you have a repro?

How did you determine it's still happening at head? Do you have a repro?

I bumped EP version twice in Bazel to  2.3.5-SNAPSHOT: [1]. And uploaded two changes to activate more checks in Gerrit. In the first change: [2] I activated new checks for old EP version, and in second change: [3] I bumped java_tools to my custom release: [4] that I conducted with EP 2.3.5-SNAPSHOT.
Unfortunately, I misread the build breakage. The breakage was reported for the first change, with the old EP version and not the second. Sorry for the noise.
[1] https://github.com/bazelbuild/bazel/pull/11426
[2] https://gerrit-review.googlesource.com/c/gerrit/+/267952
[3] https://gerrit-review.googlesource.com/c/gerrit/+/265493
[4] https://github.com/davido/java_tools/releases/tag/javac11-v12.0


ex6

finished exercise 7

improved dijkstra and made it more readable

Command line arguments should be position independent (you can use boost for parsing them) otherwise it looks ok


Docs - return type of Group DataLoader-driven field

Class example for Group DataLoader in documentation has Query Field (GetPersonByLastName) return type of Task where it should be Task<IEnumerable>, as in proceeding Delegate example (right?).
It seems that it might make sense to go a step further and change the the function name for both the Class and Delegate examples from 'GetPersonByLastName' to 'GetPersonsByLastName'.

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


infer: add some type definitions

how can I make the defined types avaiable to all files in the same directory without having to import all typedefinitions all over again?

I had the same question. I didn't look into it yet, but .d.ts files are supposed to be global definitions. So the premise is that you define a namespace and then export all your types in there. Which would then look like this:
/*
 * @type {namespace.type}
 */
const value = 'data'

All I know is that the detached CQN type was not resolved by tsc. So some experimenting has to be done to find what works. Which should be pretty straight forward just run the build command and ser whether it found the type or whether it define it as any.


Feature request: Return Transaction Hash instead of waiting for Tx Inclusion

Is your feature request related to a problem?
for context: https://github.com/xmtp/xps-gateway/pull/50#discussion_r1470035231
We currently wait on PendingTransaction until it is included
Describe the solution to the problem
Return a transaction hash and let the client wait
Describe the uses cases for the feature
Avoids unnecessary waiting in the RPC server

I think the gateway shouldn't return tx hash, it should limit the blockchain logic within it. However it's always possible for a tx to fail and it's the gateway who should take care of monitor / resend logic instead of its client.
So I'm proposing a "two-checkmarks" mechanism to solve this problem:
1st ☑ happens when the gateway received the request and sent a tx to blockchain, without waiting, it returns the result with a pending status.
2nd ☑ happens when the gateway confirmed that the tx is included. Then the gateway update the status to success or failed depending on the blockchain response. If the tx is lost due to network issue, the gateway should resend it.

Yeah, that makes sense. We would basically be emulating the ethers api -- we could even just send a struct wrapping PendingTransaction, which is a future that just polls the PendingTransaction future
this would then resolve to success or failure

we could even just send a struct wrapping PendingTransaction

Do you mean gateway sends a PendingTransaction back to its client? Would that mean the client would need to deal with blockchain specifics?
I think it's important for gateway to abstract away all the blockchain details. It only tells the client simple responses like success, pending or failure.

Not necessarily, we would still have control over the blockchain specifics via visibility. I was thinking of something like this:
pub struct Pending {
    ethers_pending: PendingTransaction
}

impl Future for Pending {
    fn poll(self: &mut Pin<Self>) -> Result<PollResult> {
        self.ethers_pending.poll()
    }
}

Client-side

// make a request and get back our pending struct
let pending = client.grant_installation(/* .. */).await?;
let result = pending.await;
assert_eq!(pending.status, Status::Success);

I agree, this is more clear. And appreciate the sample code, that's very helpful.


Add basic unit test for generator_future

Codecov Report

Merging #24 (801e0f5) into v2 (6af1300) will decrease coverage by 0.22%.
The diff coverage is 87.11%.

@@            Coverage Diff             @@
##               v2      #24      +/-   ##
==========================================
- Coverage   87.19%   86.97%   -0.23%
==========================================
  Files          27       26       -1
  Lines        1414     1420       +6
==========================================
+ Hits         1233     1235       +2
- Misses        181      185       +4

Impacted Files
Coverage Δ

include/libcopp/future/poller.h
100.00% <ø> (ø)

include/libcopp/stack/stack_pool.h
84.54% <ø> (-0.28%)
:arrow_down:

include/libcopp/utils/intrusive_ptr.h
97.14% <ø> (ø)

...libcopp/stack/allocator/stack_allocator_memory.cpp
90.69% <ø> (ø)

.../libcopp/stack/allocator/stack_allocator_posix.cpp
68.18% <ø> (ø)

src/libcopp/stack/stack_context.cpp
100.00% <ø> (ø)

.../libcopp/stack/stack_traits/stack_traits_posix.cpp
86.95% <ø> (ø)

include/libcopp/future/storage.h
80.68% <50.00%> (ø)

src/libcotask/impl/task_action_impl.cpp
71.42% <60.00%> (+4.76%)
:arrow_up:

...libcopp/stack/allocator/stack_allocator_malloc.cpp
66.66% <66.66%> (ø)

... and 17 more

Continue to review full report at Codecov.

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


source with http are not working. Only https links works

Its hard to find https sample sources. Anyway I have tried several http links that do not work.
sample link https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 works, but if you change it to http it won't work even though its still a valid link.
http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
Thanks,
Adnan

What platform? If on iOS you need to set a key in your plist file to allow
the URL to work. If android it should be okay, I'll test later this weekend.
On Sat, Mar 4, 2017, 3:38 AM adnanakbar<EMAIL_ADDRESS>wrote:

Its hard to find https sample sources. Anyway I have tried several http
links that do not work.
sample link https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4 works, but
if you change it to http it won't work even though its still a valid link.
http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
Thanks,
Adnan
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/bradmartin/nativescript-videoplayer/issues/61, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AFulhFaXWernyCgL-q034JXJcALs74Hhks5riTEbgaJpZM4MTCTh
.


CCUBE-1224

Changes

Created a story to display the ChildEntry  component
Created the ChildEntry component and a mock layout to pass into the ChildEntry component

Additional information

You may refer to this CCUBE-1224

note: remember to remove the ChildEntry story after the ticket after QE has completed testing


Investigate value of summary card component

The recent addition of govuk-frontend 4.5.0 to govuk_publishing_components introduced the summary card extension of summary lists.
This could be something useful for us to include, either as a new component or an extension of the existing summary list.

@maxgds to check and see if we have a use case for this already.

I found the examples I was thinking of and they're not a good fit: https://www.gov.uk/check-uk-visa/y/austria/work/longer_than_six_months/other so I'll close this.


Populate word table template Flow Sample

[ ] Bug fix?
[x] New sample?
[ ] Related issues: fixes #X, partially #Y, mentioned in #Z
[ ] Needs API permissions?
[ ] Has other prerequisites? (E.g. requires a list, document library, etc.)

What's in this Pull Request?
Explore a comprehensive guide on automating document generation using Power Automate. This tutorial focuses on dynamically populating a Word template with data retrieved from Microsoft Dataverse and storing the generated document in OneDrive for Business.
🚀 This automation simplifies the document creation process, reducing manual efforts and ensuring consistency in your generated documents.
Checklist

[x] My pull request affects only ONE sample.
[x] I have updated the README file.
[x] My README has at least one static high-resolution screenshot (i.e. not a GIF)
[x] My README contains complete setup instructions, including pre-requisites and permissions required

Hi @shaheerahmadch ,
Thank you for your sample!
Could you please check the solution, especially dependencies? During the import, I was blocked with missing dependencies:

Thank you in advance!
Katerina Ch.

@Katerina-Chernevskaya  updated dependencies

Hi @shaheerahmadch ,
Thank you for the updates!
I was able to import the solution so far, however, it was imported with the following warning:

The flow in the imported solution is Off, and when I tried to turn it on I received the error:

It seems that you hardcoded the file in the OneDrive action in the flow. It is better to use a dynamic path to avoid such warnings.
Could you please check and update the flow?
Thank you!
Regards,
Katerina Ch.


fix: bump @babel/traverse to avoid CVE-2023-45133

Bumps the version of @babel/traverse (a transitive dependency) to avoid CVE-2023-45133.
This change was made simply by running npm audit fix.
Checklist

[ ] npm test passes (tip: npm run lint-fix can correct most style issues)
[ ] tests are included
[ ] documentation is changed or added

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


ROX-26311: Compliance connecting to Sensor shall retry longer

Description
In some test cases in the CI Sensor was unavailable for over 10 minutes. Compliance tries to reconnect to Sensor for maximally 3 minutes. Compliance starts retrying immediately after the connection is down. There are many cases where compliance misses Sensor by few seconds.
See comments in: https://issues.redhat.com/browse/ROX-26311
If https://github.com/stackrox/stackrox/pull/12815 is merged, then this PR must include a revert of the part that disables checking for compliance restarts.
User-facing documentation

[x] CHANGELOG is updated OR update is not needed
[x] documentation PR is created and is linked above OR is not needed

Testing and quality

[x] the change is production ready: the change is GA or otherwise the functionality is gated by a feature flag
[ ] CI results are inspected

Automated testing

[ ] added unit tests
[ ] added e2e tests
[ ] added regression tests
[ ] added compatibility tests
[ ] modified existing tests

I did nothing so far - this is pretty difficult to test the way it was caught by the CI.
How I validated my change
The error condition difficult to reproduce the way it was seen in CI, but I did the following:

Confirmed that if Sensor is down for over 3 mins, then Compliance container fails with error as from the ticket.
Confirmed that if Sensor is down for less than 3 minutes, then Compliance reconnects successfully.
The change from 3 to 15 mins is trivial and I have not tested the change of the number itself.

Awesome! Let's try it!
I'll keep #12815 - it would be good to see first if this change has an impact.

Thanks Mladen! Let's watch how CI behaves. I will pick it up again if this fix is not enough.


Expansion of the symbolic module

Hey everyone,
I've made some modifications to the symbolic module and I think they might be useful for other people
Here are the changes:

Implemented (anti-)symmetrization tools to the Tensor and its derivative classes
Implemented a determinant function for the metric, and a norm function for vectors
Implemented an expand function for the sympy arrays (which can be useful for usage of subs() )
Implemented a discard_term function for sympy arrays, to enable PN expansions
Changed change_config() so that inherited classes do not have to reimplement it
Created a GenericSpacetime class, which bundles the metric and all its derivative objects. Also saves all intermediate tensors on computation, so that nothing is computed twice
Implemented the covariant derivative in this spacetime class - related to #405
Implemented the alternating Levi-Civita-Tensor and computation of the dual tensor
Made a new class OPTDecompositionTensor as a child of BaseRelativityTensor, to encapsulate a tensor as part of a 1+3 covariant decomposition following (this)[https://arxiv.org/pdf/2206.13946.pdf] review
Implemented the gravitoelectric and gravitomagnetic tensors as part of this decomposition
Implemented the associated projected, kinematic and dynamic quantities inside a derivative OPTSpacetime class
Added 3 example notebooks

This is my first Pull Request, so please be gentle :)
Best,
Niklas

Hello @niklasrb! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/einsteinpy/symbolic/einstein.py:

Line 69:13: W503 line break before binary operator
Line 88:13: W503 line break before binary operator

In the file src/einsteinpy/symbolic/gem.py:

Line 210:9: E722 do not use bare 'except'

In the file src/einsteinpy/symbolic/levicivita.py:

Line 31:121: E501 line too long (134 > 120 characters)

In the file src/einsteinpy/symbolic/optdecomposition.py:

Line 120:121: E501 line too long (127 > 120 characters)
Line 157:30: W605 invalid escape sequence '\S'
Line 185:30: W605 invalid escape sequence '\S'
Line 254:121: E501 line too long (134 > 120 characters)

In the file src/einsteinpy/symbolic/optspacetime.py:

Line 36:121: E501 line too long (134 > 120 characters)
Line 151:121: E501 line too long (134 > 120 characters)
Line 254:17: W503 line break before binary operator
Line 266:121: E501 line too long (127 > 120 characters)
Line 413:121: E501 line too long (122 > 120 characters)
Line 554:17: W503 line break before binary operator
Line 700:9: E741 ambiguous variable name 'l'
Line 701:9: E741 ambiguous variable name 'l'
Line 702:9: E741 ambiguous variable name 'l'

In the file src/einsteinpy/symbolic/stress_energy_momentum.py:

Line 70:13: W503 line break before binary operator

In the file src/einsteinpy/symbolic/tensor.py:

Line 263:12: E714 test for object identity should be 'is not'
Line 306:30: W605 invalid escape sequence '\S'
Line 339:30: W605 invalid escape sequence '\S'
Line 458:47: E714 test for object identity should be 'is not'
Line 460:50: E714 test for object identity should be 'is not'
Line 658:30: W605 invalid escape sequence '\S'
Line 686:30: W605 invalid escape sequence '\S'

In the file src/einsteinpy/symbolic/weyl.py:

Line 171:29: W503 line break before binary operator
Line 172:29: W503 line break before binary operator
Line 173:29: W503 line break before binary operator
Line 175:25: W503 line break before binary operator
Line 177:21: W503 line break before binary operator
Line 179:25: W503 line break before binary operator
Line 180:25: W503 line break before binary operator
Line 263:121: E501 line too long (136 > 120 characters)
Line 310:9: E741 ambiguous variable name 'l'

@niklasrb Thank you for the PR. Can you run tox -e reformat (in the root directory of the repo) to fix the PEP8 / style-check issues? You might have to install it via pip install tox. Once that is done, force-push once - git push -f to trigger the style-checks again.

Actually I did before the PR, and stuff like
[Line 69:13]  line break before binary operator
was introduced by tox itself?

Hmm. It's also supposed to be ignored by PEP8Speaks, but for some reason, it isn't. Try force-pushing once. Might fix it.
In any case, I'll review this as soon as I can. Also, this branch is 6 commits behind upstream. Can you fetch upstream, merge & push? I don't think, there should be any merge issues there. If there are any, we'll ignore it (& PEP8) till the review is done.

So the automatic simplify apparently didn't simplify very well, it caused a lot of the tests to fail cause it got weird trigonometric expressions it couldn't modify further. I disabled that for the classes.
I fixed the other style issues, and the last remaining circleci error is
src/einsteinpy/symbolic/optdecomposition.py:143: error: Incompatible types in assignment
but that's supposed to be a feature, not a bug. The idea was that change_config doesn't have to be reimplemented for child classes

I'd recommend waiting for a few more files to be reviewed before making any changes. This is a large PR. So, unfortunately, the process will be slow.

Sorry, this review has taken quite long. I have been busy. After the first week of December, I can give this some more time.


Fix return type of fetchGasFeeEstimates

The return type of the _fetchGasFeeEstimates method (and the fetchGasFeeEstimates method, transitively) of the GasFeeController has been updated to remove the | undefined. It never returns undefined.

I was just looking at this today and wondered why that was the case! LGTM as well.


[New game]: Balloon Buster

🎮 Game Request
Balloon Buster is a simple aiming and timing game where the player's objective is to pop as many balloons as possible within a given time limit. Balloons will appear randomly on the screen, and the player must click on them to pop them. Each popped balloon earns the player points, and the game keeps track of the player's highest score.
Point down the features

Popping Balloons: The primary way to earn points in the game is by popping balloons. When a player clicks on a balloon, it pops, and the player earns one point. This encourages players to aim accurately and quickly click on balloons as they appear on the screen.

Score Display: The player's current score is displayed prominently on the screen. As the player pops balloons, the score increases accordingly. This provides immediate feedback to the player about their progress and performance in the game.

High Score: The game also tracks the player's highest score achieved in a single game session. This adds an element of challenge and motivation for players to try to surpass their previous best performance. The high score is updated whenever the player achieves a new high score during gameplay.

Select program in which you are contributing
GSSoC24
Code of Conduct

[X] I follow CONTRIBUTING GUIDELINE of this project.

Hey @manishh12 !
Thank you for raising an issue 💗
You can self assign the issue by commenting /assign in comment 😀
Make sure you follow CODE OF CONDUCT and CONTRIBUTING GUIDELINES 🚀
Don’t Forget to ⭐ our GameZone🎮
Make sure you join our Discord🕹

/assign

Hey @manishh12 ! Thank you so much for your raising the issue💗
It’s all yours, you can come anytime again and make some contributions! 🚀
Alone, we can do little, but together we can do so much! 😇


MRS1000 Connection problem with ROS2

Hello,
i am trying to get laser data from a MRS1104C Scanner with the library. I tried two different systems with ROS2 foxy (Ubuntu 20.04) and humble (Ubuntu 22.04) but i am getting the following error on both every time i connect:
[WARN] [1722428354.953188512] [sick_scan_xd]: Error Sopas answer mismatch: Error unexpected Sopas answer for request <STX><STX><STX><STX><Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01..., received answer: "sFA\x00\x03", expected patterns: "sWA ScanLayerFilter","sAN ScanLayerFilter"
[WARN] [1722428359.953888461] [sick_scan_xd]: Timeout during waiting for new datagram
[WARN] [1722428359.954051081] [sick_scan_xd]: Error Sopas answer mismatch: Error unexpected Sopas answer for request <STX><STX><STX><STX><Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01..., received answer: "", expected patterns: "sWA ScanLayerFilter","sAN ScanLayerFilter"
I configured the scanner via SOPAS ET to use the IP address <IP_ADDRESS>,  the Host Port (Parameters) to CoLa Binary for Port 2112, then saved to EEPROM, restarted and used the following launch command:
ros2 run sick_scan_xd sick_generic_caller ./src/sick_scan_xd-develop/launch/sick_mrs_1xxx.launch hostname:=<IP_ADDRESS>
By the looks of the output it can communicate with the scanner but there is a receive error. Changing to ASCII mode produces the same error. In SOPAS ET i can see the laser data and the scanner LEDs are green. The moment i start the ROS2 node the LEDs turn red and i get the mentioned error. Here is the full output:
scanner_type                   string     sick_mrs_1xxx
min_ang                        double     -2.3998277
max_ang                        double     +2.3998277
intensity_resolution_16bit     bool       false
hostname                       string     <IP_ADDRESS>
port                           string     2112
timelimit                      int        5
cloud_topic                    string     cloud
laserscan_topic                string     scan
frame_id                       str        cloud
sw_pll_only_publish            bool       true
use_generation_timestamp       bool       true
min_intensity                  double     0.0
scandatacfg_timingflag         int        -1
scandatacfg_azimuth_table      int        1
imu_enable                     bool       true
imu_enable_additional_info     bool       True
imu_topic                      string     imu
range_min                      double     0.05
range_max                      double     100.0
range_filter_handling          int        0
ang_res                        double     0
scan_freq                      double     0
scan_layer_filter              string     4 1 1 1 1
add_transform_xyz_rpy          string     0,0,0,0,0,0
add_transform_check_dynamic_updates bool       false
start_services                 bool       True
message_monitoring_enabled     bool       True
read_timeout_millisec_default  int        5000
read_timeout_millisec_startup  int        120000
read_timeout_millisec_kill_node int        150000
client_authorization_pw        string     F4724744
lfp_meanfilter                 int        -1
lfp_medianfilter               int        -1
ros_qos                        int        -1
tf_base_frame_id               string     map
tf_base_lidar_xyz_rpy          string     0,0,0,0,0,0
tf_publish_rate                double     10.0
tick_to_timestamp_mode         int        0
[INFO] [1722428352.112609501] [sick_scan_xd]: SickTransformPublisher: broadcasting TF messages parent_frame_id="map", child_frame_id="cloud", (x,y,z,roll,pitch,yaw)=(0.0,0.0,0.0,0.0,0.0,0.0), rate=10.0
[INFO] [1722428352.112937357] [sick_scan_xd]: Range filter configuration: range_min=0.05, range_max=100, range_filter_handling=0
[INFO] [1722428352.113138147] [sick_scan_xd]: Found emul_sensor overwriting default settings. Emulation:False
[INFO] [1722428352.113229835] [sick_scan_xd]: Found sopas_protocol_type param overwriting default protocol:
[INFO] [1722428352.113252745] [sick_scan_xd]: Binary protocol activated
[INFO] [1722428352.113404279] [sick_scan_xd]: PointCloudMonitor started.
[INFO] [1722428352.113442560] [sick_scan_xd]: Start initialising scanner [Ip: <IP_ADDRESS>] [Port:2112]
[INFO] [1722428352.113542220] [sick_scan_xd]: PointCloudMonitor: subscribing to topic cloud, qos=0
[INFO] [1722428352.113707145] [sick_scan_xd]: ScanLayerFilterCfg: filter_settings="4 1 1 1 1", 4 layers, layer_activation=[1,1,1,1], first_active_layer=0, last_active_layer=3
[INFO] [1722428352.114294562] [sick_scan_xd]: Publishing lidar pointcloud2 to cloud
[INFO] [1722428352.114325070] [sick_scan_xd]: Publishing on topic "cloud", qos=0
[INFO] [1722428352.114914599] [sick_scan_xd]: Publishing on topic "sick_mrs_1xxx/imu", qos=0
[INFO] [1722428352.115338145] [sick_scan_xd]: Publishing on topic "sick_mrs_1xxx/encoder", qos=0
[INFO] [1722428352.115818132] [sick_scan_xd]: Publishing on topic "scan", qos=0
[INFO] [1722428352.116046985] [sick_scan_xd]: SickCloudTransform: add_transform_xyz_rpy = (0,0,0,0,0,0)
[INFO] [1722428352.116075252] [sick_scan_xd]: SickCloudTransform: azimuth_offset = 0 [deg]
[INFO] [1722428352.116108591] [sick_scan_xd]: SickCloudTransform: additional 3x3 rotation matrix = { (1,0,0), (0,1,0), (0,0,1) }
[INFO] [1722428352.116126657] [sick_scan_xd]: SickCloudTransform: apply 3x3 rotation = false
[INFO] [1722428352.116148991] [sick_scan_xd]: SickCloudTransform: additional translation = (0,0,0)
[INFO] [1722428352.116166449] [sick_scan_xd]: SickCloudTransform: check_dynamic_updates = false
[INFO] [1722428352.116207255] [sick_scan_xd]: sick_scan_xd: Tcp::open: connecting to <IP_ADDRESS>:2112 ...
[INFO] [1722428352.116794866] [sick_scan_xd]: sick_scan_xd Tcp::open: connected to <IP_ADDRESS>:2112
[INFO] [1722428352.116819839] [sick_scan_xd]: SickThread TcpRecvThread started.
[INFO] [1722428352.116923821] [sick_scan_xd]: Parameter setting for <active_echo: 0>
[INFO] [1722428352.117039077] [sick_scan_xd]: Sending  : <Len=0017>sRN SCdevicestate CRC:<0x30>
[INFO] [1722428352.120167201] [sick_scan_xd]: Receiving: sRA SCdevicestate \x00
[INFO] [1722428352.120215995] [sick_scan_xd]: checkColaDialect: lidar response in configured Cola-dialect Cola-B
[INFO] [1722428352.320984944] [sick_scan_xd]: Sending  : <Len=0023>sMN SetAccessMode 0x03 0xf4 0x72 0x47 0x44 CRC:<0xb3>
[INFO] [1722428352.322755390] [sick_scan_xd]: Receiving: sAN SetAccessMode \x01
[INFO] [1722428352.523369995] [sick_scan_xd]: Sending  : <Len=0015>sWN EIHstCola 0x01 CRC:<0x09>
[INFO] [1722428352.524816606] [sick_scan_xd]: Receiving: sWA EIHstCola
[INFO] [1722428352.725293619] [sick_scan_xd]: Sending  : <Len=0015>sMN LMCstopmeas CRC:<0x10>
[INFO] [1722428352.727292671] [sick_scan_xd]: Receiving: sAN LMCstopmeas \x00
[INFO] [1722428352.927756265] [sick_scan_xd]: Sending  : <Len=0025>sRN SetActiveApplications CRC:<0x08>
[INFO] [1722428352.929303814] [sick_scan_xd]: Receiving: sRA SetActiveApplications \x00\x01\x52\x41\x4e\x47\x01
[INFO] [1722428352.929545767] [sick_scan_xd]: response to "sRN SetActiveApplications": \x02\x02\x02\x02\x00\x00\x00\x21sRA SetActiveApplications \x00\x01RANG\x01\x3d
[INFO] [1722428352.929666176] [sick_scan_xd]: FieldEvaluationActive = false
[INFO] [1722428353.130492332] [sick_scan_xd]: Sending  : <Len=0015>sRN DeviceIdent CRC:<0x25>
[INFO] [1722428353.132056453] [sick_scan_xd]: Receiving: sRA DeviceIdent \x00\x08\x4d\x52\x53\x31\x78\x78\x78\x78\x00\x08\x31\x2e\x34\x2e\x30\x2e\x3...
[INFO] [1722428353.132323978] [sick_scan_xd]: Deviceinfo MRS1xxxx V<IP_ADDRESS>R found and supported by this driver.
[INFO] [1722428353.333160421] [sick_scan_xd]: MRS1xxx firmware version 1.4.0
[INFO] [1722428353.333396917] [sick_scan_xd]: Sending  : <Len=0033>sWN SetActiveApplications 0x00 0x01 0x46 0x45 0x56 0x4c 0x00 CRC:<0x35>
[INFO] [1722428353.334776853] [sick_scan_xd]: Receiving: sWA SetActiveApplications
[INFO] [1722428353.535197212] [sick_scan_xd]: MRS1xxx firmware version 1.4.0
[INFO] [1722428353.535447464] [sick_scan_xd]: Sending  : <Len=0033>sWN SetActiveApplications 0x00 0x01 0x52 0x41 0x4e 0x47 0x01 CRC:<0x37>
[INFO] [1722428353.536914101] [sick_scan_xd]: Receiving: sWA SetActiveApplications
[INFO] [1722428353.737577405] [sick_scan_xd]: Sending  : <Len=0016>sRN SerialNumber CRC:<0x4c>
[INFO] [1722428353.739014136] [sick_scan_xd]: Receiving: sRA SerialNumber \x00\x08\x31\x38\x34\x30\x30\x30\x30\x31
[INFO] [1722428353.939675512] [sick_scan_xd]: Sending  : <Len=0019>sRN FirmwareVersion CRC:<0x24>
[INFO] [1722428353.941142554] [sick_scan_xd]: Receiving: sRA FirmwareVersion \x00\x09\x56\x20\x31\x2e\x34\x2e\x30\x2e\x30
[INFO] [1722428354.141616891] [sick_scan_xd]: Sending  : <Len=0017>sRN SCdevicestate CRC:<0x30>
[INFO] [1722428354.142798374] [sick_scan_xd]: Receiving: sRA SCdevicestate \x00
[INFO] [1722428354.343329790] [sick_scan_xd]: Sending  : <Len=0010>sRN ODoprh CRC:<0x41>
[INFO] [1722428354.345009562] [sick_scan_xd]: Receiving: sRA ODoprh \x00\x00\x0b\x07
[INFO] [1722428354.545965771] [sick_scan_xd]: Sending  : <Len=0010>sRN ODpwrc CRC:<0x52>
[INFO] [1722428354.547628596] [sick_scan_xd]: Receiving: sRA ODpwrc \x00\x00\x03\xd0
[INFO] [1722428354.748570682] [sick_scan_xd]: Sending  : <Len=0016>sRN LocationName CRC:<0x55>
[INFO] [1722428354.750288656] [sick_scan_xd]: Receiving: sRA LocationName \x00\x0b\x53\x4e\x20\x31\x38\x30\x33\x30\x30\x31\x30
[INFO] [1722428354.951215341] [sick_scan_xd]: ScanLayerFilterCfg: filter_settings=" 4 1 1 1 1", 4 layers, layer_activation=[1,1,1,1], first_active_layer=0, last_active_layer=3
[INFO] [1722428354.951463963] [sick_scan_xd]: Sending  : <Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01 0x01 0x01 0x01 CRC:<0x32>
[INFO] [1722428354.952904635] [sick_scan_xd]: Receiving: sFA\x00\x03
[WARN] [1722428354.953188512] [sick_scan_xd]: Error Sopas answer mismatch: Error unexpected Sopas answer for request <Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01..., received answer: "sFA\x00\x03", expected patterns: "sWA ScanLayerFilter","sAN ScanLayerFilter"
[WARN] [1722428359.953888461] [sick_scan_xd]: Timeout during waiting for new datagram
[WARN] [1722428359.954051081] [sick_scan_xd]: Error Sopas answer mismatch: Error unexpected Sopas answer for request <Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01..., received answer: "", expected patterns: "sWA ScanLayerFilter","sAN ScanLayerFilter"
[ERROR] [1722428359.954289314] [sick_scan_xd]: Error unexpected Sopas answer for request <Len=0026>sWN ScanLayerFilter 0x00 0x04 0x01..., giving up after 1 unexpected answers.
[INFO] [1722428359.954447128] [sick_scan_xd]: Failed to init scanner Error Code: 1
Waiting for timeout...
If the communication mode set in the scanner memory is different from that used by the driver, the scanner's communication mode is changed.
This requires a restart of the TCP-IP connection, which can extend the start time by up to 30 seconds. There are two ways to prevent this:

[Recommended] Set the communication mode with the SOPAS ET software to binary and save this setting in the scanner's EEPROM.
Use the parameter "use_binary_protocol" to overwrite the default settings of the driver.
[ERROR] [1722428359.954560568] [sick_scan_xd]: ## ERROR in mainGenericLaser: init failed, retrying...
[INFO] [1722428359.954658692] [sick_scan_xd]: Start initialising scanner [Ip: <IP_ADDRESS>] [Port:2112]
[WARN] [1722428359.954764570] [sick_scan_xd]: Disconnecting TCP-Connection.
[ERROR] [1722428359.955101558] [sick_scan_xd]: Tcp::readInputData: Read 0 bytes, connection is lost!
[INFO] [1722428359.955233208] [sick_scan_xd]: SickThread TcpRecvThread finished (flags: threadShouldRun=0, endThread=0).
SickScanCommon closed.

Thank you for the quick response. After setting the scan_layer_filter to "" it started working and i can receive data via rviz2. Thank you very much.
Regarding the firmware update:
The only firmware files i found for download are SDD files but SOPAS will not let me update the scanner with those ones via the Firmware update option. Where can i find the 2.3.0 firmware?

Thank you for your quick reply. If a firmware update with SOPAS ET does not work, please contact SICK support.


chore: revert changes

I'm very sorry but the last two commits should have gone to my fork only. This reverts to the previous state.
PS: @juanpicado could you please check in the branch protection rules that everything has to go via PR i.e. no direct commits (at least for me)?

Suggest merging but please double-check. Thank you

🤔 ok I'll check but not sure what setting was, but yeah there were few things disabled I just enabled. No issue :) always we can revert

Fyi, this was the PR that caused the problem. It says "from verdaccio into my fork" so I'm not sure how the changes ended up here. Sorry again for the trouble.


is a bug?

ViewVolume.cpp
void ViewVolume::SetAxes(Vector4 const& dVector,
Vector4 const& uVector, Vector4 const& rVector)
if (std::fabs(1.0f - det) > epsilon)
I think is    if (1.0f - std::fabs(det) > epsilon) det maybe -1

I know you closed the issue. For completeness, the camera direction vectors must form a right-handed orthonormal basis. That is, the vectors D, U, and R must be unit length and mutually perpendicular. For right-handedness, if you were to create a rotation matrix whose columns are D, U, and R, the determinant must be +1 (a determinant of -1 makes the matrix a reflection). So in the code, 'det' must be close to 1. The test 'std::fabs(1.0f-det) > epsilon' says that the determinant is not close to 1.
Thank you for the feedback!


DEEP DISTINCT

I think we can add option flag should AlaSQL make
a) slow deep distrinct operation for nested JSON objects
b) fast distinct operations which will check only first level objects
We can use flag:
SET DEEPDISTINCT ON

to turn it on.
For example:
    var data = [{a:{b:1}},{a:{b:1}}];
    alasql('SET DEEPDISTINCT ON');
    var res = alasql('SELECT DISTINCT * FROM ?',[data]);
    // returns [{a:{b:1}];
    alasql('SET DEEPDISTINCT OFF');
    var res = alasql('SELECT DISTINCT * FROM ?',[data]);
    // returns [{a:{b:1}},{a:{b:1}}] - because objects {b:!} are different

Another crazy idea: add special keyword, like:
    SELECT DEEP DISTINCT * FROM @[{a:{b:1}}, {a:{b:1}}];
    ASSERT @[{a:{b:1}}];
    SELECT DISTINCT * FROM @[{a:{b:1}}, {a:{b:1}}];
    ASSERT @[{a:{b:1}}, {a:{b:1}}];

The same for: DEEP UNION, DEEP INTERSECT, and DEEP EXCEPT...


Add syntax highlight to code examples

You can add syntax highlight by adding js in the beginning of code block like here

See an example: https://raw.githubusercontent.com/ai/nanoid/main/README.md

@ai Hey! Thank you for the tip! Fixed the issue.


BitcastConvert verifier restricts some valid cases where operands have same rank but different number of elements

What happened?
The following IR is valid:
func.func @foo(%arg0: tensor<1xi32>) {
  %0 = stablehlo.bitcast_convert %arg0 : (tensor<1xi32>) -> tensor<2xi16>
  return
}

The following IR is (I believe) equivalent for the purposes of bitcast_convert, but deemed invalid when run through stablehlo-opt:
func.func @foo(%arg0: tensor<1xi32>) {
  %0 = stablehlo.bitcast_convert %arg0 : (tensor<1xi32>) -> tensor<2xi16>
  return
}

Indeed, this produces the following error: rank of smaller element type (1) should be 1 more than rank of larger element type (1), but 1 != 1 + 1.
Note that this check precludes other valid cases, e.g. tensor<2xi64> -> tensor<2x2x2xi16>
I believe the correct check should be: numElements(input) * bitWidth(input) == numElements(output) * bitWidth(output), in other words, the total number of bits stays the same.
Steps to reproduce your issue
See previous section.
Version information
No response

After looking at the spec, it seems that when the number of bits is the same, the shapes should be the same. So the above examples are invalid, but for a different reason than the error message suggests.

I tried another invalid example, and the error message is also confusing:
func.func @foo(%arg0: tensor<2xi32>) {
  %0 = stablehlo.bitcast_convert %arg0 : (tensor<2xi32>) -> tensor<4xi32>
  return
}

yields: error: operand and result shapes must match except for the innermost dimension of the shape with the smaller element type. Got: 'tensor<2xi32>' and 'tensor<4xi32>'.
The element types are the same, so the smaller element type is i32. The error message says there is no expectation for the innermost dimension to match, and it doesn't, but an error is still raised.
It's unclear to me what the correct error message would be in this case. I'm a bit confused by the meaning of : in the spec, e.g. I'm not sure what bits(result[i0, ..., iR-1, :]) = bits(operand[i0, ..., iR-1]) means.


Adding UnImplicit to dates.md

adding the dates for the UnImplicit 2024 workshop to the table in dates.md

One small change - could you move it above NAACL? (that way the dates are in order)
Also, when just an FYI, your profile affiliation in Github is out of date.

@esteng Checking in on this - do you still want to add these dates? Let me know if you need help with the requested changes.


Console spam , and not working with newest MFR

As the title says
http://pastebin.com/tgeC5VAS
Thank you!
-Crunk

What versions of CoFH Core and MFR are you using? From the log it seems like you are using versions of them that are incompatible with each other.

It is all the latest DEV versions as of right now on curse.

This isn't a bug in NEI Integration. It's that the alpha version of MFR didn't adapt to a change in the alpha version of CoFH Core.
You really shouldn't be using the alphas unless you like having stuff break routinely.

Tonius, the new Version of CoFH Core and MFR are now released and no longer in alpha stage.
Would be nice if you can update soon :)

What is there to update? As I said, the crash in this issue was caused by an interaction between alpha versions of MFR and CoFH Core. NEI Integration isn't responsible for that.

Well when I click to create a new world And get tossed into the new world with this mod installed the menu is up right when starting you know the menu u see when hitting ESC button in game , and when I click back to game I am kicked out of the game and put in the multiplayer menu . WTF un installing this mod stopped that totally .

This happens with the newest stable versions of MFR and CoFHCore
(MFR RC6-5, CoFHCore RC1-181)


Scenarios module

Remove runs from main loop, make (think about it!)

loopEpisodes -- loop over episodes
loopSteps -- loop over steps (innermost loop)
loopUpdates -- loop over policy and/or objective updates (outermost loop)


Panic Button

Describe the feature
When someone presses the panic button make it where they can put the location so its Realistic, & Easier for the LEOS/Dispatch.
Additional Context
No response

The panic-button isn't connected to the game 😅. This won't be done unfortunately

The panic-button isn't connected to the game 😅. This won't be done unfortunately

I don't mean connect it to the game, but make it where when they press it they have to type out the location, Like a Spot for Postal, a Spot for Road, a Spot for sub-road, etc.


Add Reviews_Duration as a detailed metric

We already accepted Reviews_Duration in a past pull request.
This patch adds it to the corresponding focus area file.

Any comment on this one?


Return key release is sent after dmenu closes, resulting in bugs especially on websites

Pressing Return to select the pass entry in dmenu results in a key-release event being sent to whatever application is focused next. Some websites run javascript that detects these events and usually breaks. I.e. by validating/submitting a login field or switching between user/password fields. This seems to happen before xdotool types user/pw.
This also seems to happen when using dmenu without the script, so it may not actually be something that can be fixed in passdmenu...

Hello,
I'm not sure the problem is not in passdmenu. I have written the following script:
#!/bin/zsh

prompt=$(echo "Email" | dmenu -p "Hello:")

xdotool type --clearmodifiers 'username'
xdotool getactivewindow key Tab
xdotool getactivewindow type --clearmodifiers "password"

It doesn't exactly what you do, but if you select the entry "Email", the username and password are entered in the boxes without a problem. Did I miss something or does it mean, there is something wrong in passdmenu ?

Interesting. I've been testing calling various dmenu scripts with a key combination defined in the i3 config - while focusing an xev window. I tested dmenu_run(sh), i3-dmenu-desktop(perl), j4-dmenu-desktop(compiled) and some simple test script I wrote, which all exhibit the KeyRelease event with a Return/Esc when selecting/escaping from dmenu respectively. In fact, this also seems to happen in passdmenu when gpg-agent asks for the passphrase and one presses Return.
Such an event looks like this:
KeyRelease event, serial 32, synthetic NO, window 0x3800001,
    root 0x8d, subw 0x0, time 41152557, (116,427), root:(1080,449),
    state 0x10, keycode 36 (keysym 0xff0d, Return), same_screen YES,
    XLookupString gives 1 bytes: (0d) "^M"
    XFilterEvent returns: False

However, you are right and your script does not produce this behaviour. I'm stumped and currently do not have the time to work on this - sorry. I'll have look at this again next week.

Ok, no problem. If I can help somehow, for example with testing there is no problem.

So I tested some more and this is certainly a general problem with the way most X11 applications handle a KeyPress that closes the application and not consuming the KeyRelease.
Of course it's mostly a bug in the javascript on those websites which should not do anything on a keyUp without a corresponding keyDown - but well, we can't fix all those websites and there's no reason to keep that KeyRelease around anyway.
So, how do we capture that event without any other window somehow getting it (i.e. by grabbing focus)? I thought it should be possible with key grabbing from xlib using the python bindings, but could not get it to work.
I'll keep at it, but it may take some time - still swamped.

use rofi instead of dmenu. it has this fixed with next release: https://github.com/DaveDavenport/rofi/issues/167

Totally awesome! I use rofi instead of dmenu for a while already, so that's great.
I had investigated this, but really couldn't find a way to do this from the python script.

I have discovered something interesting. With the browser qutebrowser there is no problem. At least with a shell script I have written. Qutebrowser is a python project. Perhaps the developper has also an idea what can be done. But as said, rofi is also a fix.

it also works with chrome

So I switched this issue to 'enhancement' and will close it. We could provide a workaround, but I'd rather see this being fixed in other software which is either responsible for sending or mishandling this. There are workarounds (use rofi, another browser), although they might not be for everyone and in general it's also mishandled by the application/website which should be fixed.
If anyone wants to implement a workaround however, I'm not against including it.