1282 table manage views dropdown

Closes #1282
Summary
As part of #1210 we need to create a custom dropdown component that can manage the table views. Once the different components of #1210 are finished a full table story example will be created.
Change List (commits, features, bugs, etc)

Instead of adding additional complexity to the TableComponent itself a ViewDropdown component was implemented as an external table sub component that the application must pass in via a render prop (customToolbarContent).

Created a new folder called TableSubcomponents for this purpose. The ViewDropdown component got its own folder with code, styles, tests.

Unlike the underlying Dropdown the ViewDropdown component is stateless. The rationale is that the Application will most likely want to be able to change the selected item dynamically. E.g. when a user saves a new view, that view should probably be selected automatically.

A new story for TableSubcomponents was created showing how to use the ViewDropdown in a an application that handles the state.

The ViewDropdown was implemented to be highly configurable by using a lighter version of the emerging "Overrides Pattern" used by Uber. https://medium.com/@dschnr/better-reusable-react-components-with-the-overrides-pattern-9eca2339f646

A ViewDropdownItem component was created to handle the special rendering requirements. We are forced to use the itemToString function to show the selected item they way it was designed, that is the cause of some of the complexity of the ViewDropdownItem. See closed PR https://github.com/carbon-design-system/carbon/pull/5578

Added unit tests

Acceptance Test (how to verify the PR)

Go to story https://deploy-preview-1296--carbon-addons-iot-react.netlify.app/?path=/story/watson-iot-tablesubcomponents--viewdropdown
Check that all items are rendered correctly
Check that there is a "View all" default
Check that "Save as new view" and "Manage views" are available
Select "Save as new view" and make sure the corresponding action is called but that the selected item is not changed.
Select "Manage views" and make sure the corresponding action is called but that the selected item is not changed.
Verify that the selected view has postfix "- edited"
Uncheck the knob activeViewEdited and verify that the postfix "- edited" is removed.
Select the option "My saved 3 with a very long name.." and make sure it is rendered correctly
Use the knob to change the wrapper width to '100px' and verify that the icons of selected item and the Manage Views is removed. Verify that the "View" prefix is removed for the selected item.

Looks good! A few thoughts and questions for clarity before we merge:
I'm not sure that we should have a table subcomponents folder and section of the storybook. If a component is exported, it's worth having it's own individual entry with 1 to n stories. If a component is exported and intended to be used with another parent/sibling component (loose coupling of sorts), we've named/prefixed them similarly (Table, TableBodyRow, this could be TableViewDropdown).

There is however a crucial difference between the ViewDropdown and the TableBodyRow, TableToolbar etc. The Table component is in charge of importing and creating the TableBodyRow so the implementation details are hidden from the app developer. He/she does not have to know about the TableBodyRow component. However, all the actions and and configurations will have to go via the Table props, so I would say this coupling is very strong.
ViewDropdown on the other hand requires the app developer to import it, write the JSX to use it and serve it to the table using a node prop like the customToolbarContent. The table does not have to know about the ViewDropdown, so here I would say the coupling is low.

If a component is intended to only be used within another component and is not exported, it should probably be placed in a story variation of that parent/coupled component.

Tricky. This component should be exported, but only makes sense within the table context. The rationale for creating a new stories section was that the table is extremely crowded as is which is becoming a problem. For the the full "manage views" #1210  delivery I am planning on adding a table story that ties it all together, but the individual pieces I thought would better be exemplified outside the table story.

What if these two components lived in their own TableViewDropdown folder at the components level and we renamed to TableViewDropdown(Item)?

That works well, but then there will also be a TableSaveViewModal and a TableManageViewsModal as part of the "manage views" feature. And if we continue on the more decoupled approach when adding features to our table then the component root folder will contain even more of them. That doesn't have to be a problem, but that was the reason that I choose a separate folder to put them all in.

The PR doesn't modify index.js to export ViewDropdown or ViewDropdownItem, though I'm not sure if they're intended to be exported? In theory we wouldn't have to export it since it's only intended to be used within the table? I'm not sure - let me know what you think.

Good point. Since the app developer will have to create the ViewDropdown (at least for a non stateful table) it needs to be exported in index.js. I will fix this.

I don't mind the overrides pattern, but I question if it's needed for this component. Is there a requirement to support alternate layouts beyond the one we're providing by default?

The spec does not require it. Currently. But that is also part of the point with the pattern as I envision what our usage could be. Most of the times the specs are not 100% complete (or the programmer misses something), and additional requirements/bug fixes are being added to our existing components. The overrides pattern can work as an escape hatch for critical modifications that we did not expect in advance which will allow our clients to move faster. They could still create an issue to have the modified functionality added to our component, and once we add that, they can upgrade and close the escape hatch. In theory this sounds bad, since it could involve double work, but in practice I think it could save scope and deadlines. From what I understand Uber does not see it as an escape hatch but relies on it as the standard way of allowing modifications.

I am concerned that the pattern could increase the surface of our API making it more difficult to iterate on component architecture without a major version bump.

I think your concern is valid. That is why I wanted you and David and the other seniors discussing this.

It seems in this case if we didn't have to rely on the itemToString "hack" we could invert control and just provide all these as individual composable pieces?

Not sure I understand what you mean here. I think the ViewDropDownItem would have to be a render function prop of the ViewDropdown in that case and how would we expose that as composable piece? The app developer could place a ViewDropDownItem that we offer in a render function that he/she writes, but that can also be done with the itemToString...

Sorry for the long brain dump 😅
Happy to hop on a webex or slack call to chat through - I am not opposed to merging this as-is!

I love the brain dump! This is the kind of discussion I was looking for. Like I told @davidicus  regarding the override pattern; if we think that using the pattern the way described above would make sense as a general rule for our components then this could be a start. But if we think that we probably aren't going to adopt this pattern, then I should remove it from this PR as well. Only having it on 1-2 components would probably just add confusion.

I think we’re on the same page. That’s a good distinction between the ViewDropdown and TableBodyRow and I agree it’s more loosely coupled to Table.
To recap this:

The component is exported, and will not be baked into the Table.
The intended use here however is only to be used with/provided to the Table.

I think this further confirms for me that we should prefix the names of these components with Table, like TableViewDropdown. Also put them in their own folder, or in ./src/components/table, either is fine.
For the stories - we can add another layer of nesting within the Table section by using the hierarchy separator: storiesOf('Watson IoT/Table/TableViewDropdown’, module)
I know the Table section is already huge, but I think nesting stories into logical component groups or breaking subpieces out into their own section is how we solve the problem of being overloaded with confusing and unhelpful stories in sections.
I'm interested in exploring this pattern in selective places. Table and it's subcomponents is a great place to start. 👍

I think we’re on the same page. That’s a good distinction between the ViewDropdown and TableBodyRow and I agree it’s more loosely coupled to Table.
To recap this:

The component is exported, and will not be baked into the Table.
The intended use here however is only to be used with/provided to the Table.

I think this further confirms for me that we should prefix the names of these components with Table, like TableViewDropdown. Also put them in their own folder, or in ./src/components/table, either is fine.
For the stories - we can add another layer of nesting within the Table section by using the hierarchy separator: storiesOf('Watson IoT/Table/TableViewDropdown’, module)
I know the Table section is already huge, but I think nesting stories into logical component groups or breaking subpieces out into their own section is how we solve the problem of being overloaded with confusing and unhelpful stories in sections.
I'm interested in exploring this pattern in selective places. Table and it's subcomponents is a great place to start. 👍
Edit - also re-reading the spec and internal convo for the full manage views flow - it sounds like the TableSaveViewModal and TableManageViewsModal should be provided at the application level. We might have example ones in the storybook, but I believe the intent there is to not add those to our exports.

Very good, I will

remove the TableSubComponents and move the ViewDropdown folder to the table folder
rename the ViewDropdown to TableViewDropdown
make the story a nested story of the table
add some smaller changes based on new info from Luke https://github.com/IBM/carbon-addons-iot-react/issues/1210#issuecomment-645534391

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Strategic No Government when Braun is President

You should be able to strategically choose not to form the government when Braun is president in order to seize emergency power solely for the SPD (at significant cost, of course).
Feel free to play around with the actual costs of doing so, but there's no reason not to allow this as a gambit, it was clearly just as legal as any other (I believe it also needs a check to ensure both that I didn't break anything and also an additional one needs to be added to ensure that no other government can be formed.

This is a good idea. I'll try to have a slightly different implementation of this concept in the next version...


Add At The Speed Of Light X You See My Face Going Skibidi by RamBT

Song Name
At The Speed Of Light X You See My Face Going Skibidi
Artist Name
RamBT
Source
Youtube
Youtube Link
NnSA0lj4HsE
Direct File Link
https://cdn.discordapp.com/attachments/1277408455166005340/1277810529385054208/467339.mp3?ex=66ce854a&is=66cd33ca&hm=e05d0964b5652bb9d08466bdb942c7dc75b489ecaa713034ced1950e9dcbbba7&
Song ID
467339
Start Offset [ms]
0
Extra
Created from Auto Nong.
Created for level: 10565740
Downloaded: Yes

accept


Add azurestaticapps.net to Public Suffix List

https://twitter.com/marvelade/status/1304741329558278144

I was just exploring your preview of Azure Static Apps and noticed that the domain http://azurestaticapps.net is not yet added to the Public Suffix List (https://publicsuffix.org/learn/). Please add it, analogous to http://azurewebsites.net as IMO the same risks apply.

Done https://github.com/publicsuffix/list/pull/1133!


✨ Absolute position for Image

🔖 Feature description
Currently, positioning the picture is quite complicated.
✔ Solution
Would you kindly consider the absolute position for image like in quarto?

❓ Alternatives
No response
📝 Additional Context
No response

most of the time, when I need to absolutely position an image, I use the grid layout. Is that what you're finding complicated?

I think so. The grid it self is a bit hard to use for me.
Beside that, there are other use case.
Such as when I want to put some picture that will use as cue for when i presenting, within the text.
These picture may be at the corners or on the sides.
so in this case, i think absolute position is easier to use.

I sympathize, but have to be honest that this will be low priority for me.
Grid can put images in the corners and can be intermixed with text in the slide if you prefer; it can also be used with fragments.
I'll think about how to improve docs for grid (as I fix those), but I'm not inclined to add a new mechanism when grid can already do what you need it to.

This is fair. Thank you!

closing for now, but the label will make it findable.


Changelog for first 2.1.0 pre-release

What was the end-user problem that led to this PR?
The problem was that I want to release a first pre-release of bundler 2.1.0, but I don't have a changelog for it.
What was your diagnosis of the problem?
My diagnosis was that I needed to compile a changelog.
What is your fix for the problem, implemented in this PR?
My fix is write the changelog.
Why did you choose this fix out of the possible options?
I chose this fix because we used to have some automated change log handling, but I'm not sure how it work, so I instead just through each PR including user facing changes manually, with the aid of some helper tasks we have in our Rakefile.
This is still a WIP, because I might include some more PRs, and I also want to elaborate a bit on the deprecations that will get enabled, but it should be ready for an initial review.

The initial draft is ready. I added an upgrading guide where I explain the deprecations, their motivations, and how to fix them.
Not sure whether that kind of document might be a better fit for a blog post or somewhere else.
What do you think?

It's okay to the initial pre-release. We can copy the guide to bundler blog after that.

Thanks @hsbt! I'll update this with the latest PRs and get it merged later today! :+1:

@bundlerbot r+


[5.0] View composer class should implement interface

It's just a suggestion, think it would be better if view composer class will be forced to implement some interface like ViewComposerInterface or something like this.

We're not forcing this, the same for even the middleware. This will allow people to use method injection.

Aw, got it, thanks for response :)


[FLOC-1787] Make functional cloud testing variables explict.

https://clusterhq.atlassian.net/browse/FLOC-1787
This is based on #1347 since the code this is touching is refactored there. (relative diff)

https://github.com/ClusterHQ/flocker/pull/1347/files#r29920904 is perhaps a relevant comment here.

https://github.com/ClusterHQ/flocker/pull/1347/files#r29921512

@tomprince and I agreed upon a slightly different format for the acceptance.yml file, in which the top level keys represent environments in which we want to run our functional tests.
And each of these may specify a provider subkey.
The expected environment will be supplied as an environment variable to the test runner.
The tests will fail if the actual test environment does not match that expected environment.

A buildslave called clusterhq-buildslave-cust0, has

a config file  /home/buildslave/acceptance.yml, containing

cust0:
platform: "openstack"
region: "RegionOne"
auth_plugin: "password"
auth_url: "http://<IP_ADDRESS>:5000/v2.0"
tenant_name: "tenant123"
username: "joebloggs"
password: "foobarbaz"
 * The buildslave is started with the following environment variables

export FLOCKER_FUNCTIONAL_TEST_CLOUD_PROVIDER=cust0
export FLOCKER_FUNCTIONAL_TEST_CLOUD_CONFIG_FILE=$HOME/acceptance.yml

* The tests extract the `cust0` authentication parameters and supply them to an IBlockdevicAPI factory function for the `openstack` platform.

* The `openstack` factory function checks the `auth_plugin` value and chooses a suitable Keystone plugin, supplying the remaining auth parameters.

* Existing aws and rackspace authentication parameters will continue to work with the acceptance tests which will not make use of all the parameters.

Additionally, this branch now needs merging forward against the https://github.com/ClusterHQ/flocker/pull/1388 branch.

I guess this probably wants some docs, before it lands.

Thanks.  Address inline comments and make sure the existing docs for the config file cover everything going on here, then merge.


deleting the most recent item on the server causes hang

Following a successful sync, if the most recent item is deleted from Google Photos, the next sync hangs indefinitely after "Marking https://photos.google.com/photo/xxxxxxxxxxxxxx" without timing out (xxxxxxxxxxxxxx is the deleted item).
Uploading more items hence creating a new most recent item in the feed won't fix the problem. Only restoring the deleted item from the trash enables successful completion.
Looks like if the program can't find the last item it synced in the previous iteration on the server, it just hangs.

Can you file this on the http://github.com/perkeep/gphotos-cdp project? This repo is just a Docker container which wraps that tool.

done

Thanks!
(https://github.com/perkeep/gphotos-cdp/issues/17 for anyone following along)


Support for chrome/chrome_extensions externs

Hey there,
We have some interest in building a Chrome extension with the elemental2/J2CL stack. However, we can't yet use elemental2 to great effect because there isn't a chrome and/or chrome_extension package that brings those extern files into Java.
I know this project is quite early, but we wanted to file this to track progress against this goal. We are also happy to propose PRs to introduce this functionality.
Thank you for this awesome project and we're excited to help make it better how we can

This is a good idea but I think this should not be part of Elemental2 as Elemental aims to provide standardized javascript apis.

I wonder about that. The "chrome" extension API is supported by Chrome, Opera and Firefox and presumably the new chromium based edge (although I have not checked this). While it is true that the "cross-platform" standardized API is meant to have a symbol named "browser" rather than chrome (and a few other changes IIRC), I don't believe there is any browser except Firefox that supports it? Presumably other browsers will in the future although I don't know when that will be.
I say this as I have the need to write a browser extension in closeish the future and would love to see it somewhere easy to collaborate. Anyhoo I would love to see mapping worked out and a simple example of an app if/when you get it going ;)

@realityforge great point. in fact, the Chrome APIs have support outside of the traditional web platform. there are also Chromebooks, and so on.
it would be really cool to architect and distribute apps in Java for those platforms. i feel like elemental2 is basically a perfect container for it, especially since it is authored in a modular way that would require a user to opt-in to the Chrome APIs.
i may investigate forking elemental2, but I want to be careful to keep things easy to maintain. if anybody here has ideas about a good way to approach this, i'm all ears

I had a poke around the API docs and it seems that the set of browser specific APIs is not as simple as those in one particular namespace or not.
I believe it would be possible that rather than forking elemental2 you could use the targets from the elemental2 project and then reference them from within a new elemental2-chrome project (or whatever) so you could reference the original types in elemental2 and the new project. It may require a little more bazel-fu than I have at the moment but it looks doable.

You don't need to fork elemental2. Elemental2 is built on top of JsInterop-generator that is public.
You just need to move your pr #120 in your own repository and it should work. If something is missing (like the patch process maybe), ping me.

Maybe we can have elemental2-contrib-xxx. As Julien pointed, it is not technically necessary but it might be worthwhile since it simplifies discoverability and avoid any duplications.

yep and we are fine to list any elemental2-contrib-xxx from main page of this project

@gkdn i would love that, if i can help make it a reality let me know how

@realityforge, do you happen to know the RFC that defines the browser symbol? it is very hard to find that on google

Hmm ... poking about it looked like the standardization process kinda stalled from the post [1]. I tried to google around but ran into the same sorts of issues ;) The best I found was Mozilla's [2] and Microsoft's [3] browser extension docs.
HTH
[1] https://lists.w3.org/Archives/Public/public-browserext/2017Jul/0001.html
[2] https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions
[3] https://docs.microsoft.com/en-us/microsoft-edge/extensions

https://browserext.github.io/browserext/ ? (linked from the Mozilla doc linked above)

We may consider to create a contrib directory that will contain project like this one that is created by the open source community but not officially maintained by the Google J2CL team. I created https://github.com/google/elemental2/issues/124 for that purpose.
Now I recommend you first to create you own repo containing your code and get ride of the extern diff file (fix directly the extern file in closure compiler repo).
Then if we get more request like this one, I'll create the contrib directory

@jDramaix this had the effect of stopping our use of elemental2, which is sad, because chrome extensions are perhaps a perfect place to deliver Java-authored JavaScript
i understand you are wanting to wait until there are other requests, but that doesn't really help us. yes, we could avoid forking the project and just make our own project, but that's a little ridiculous when Bazel, Chrome, Chrome Extensions, Closure Compiler, and indeed all the glue between them are authored and kept up to date by Google
thanks but no thanks, we wish elemental2 the best of luck and we'll try to use it if we can find a case for it in the future

i am not entirely sure the internal need or direction behind elemental2. if the idea is to help add bricks to the open source community, which we can use, then why say no when we want to use them?
yes, browser/chrome isn't yet a standard. that never stopped google from shipping code before when it served google3
look, with all due respect, why even release this open source, if you aren't going to accept contributions? so you don't want people writing high-quality, high-performance Chrome extensions? it just strikes me as confusing.

Sam, I started on this a while ago because I agree it seems like the perfect use case for j2cl/gwt. If memory serves, you're mostly interested in it working bazel (rather than maven, where I do most of my work), if so I think we could collaborate on that?

@sgammon, why is this had the effect of stopping your use of elemental2? Our recommendation was just to put the chrome target to somewhere else for now.

@niloc132 sweet, i think it would be really awesome. i am indeed working from Bazel in this case. i'd be happy to collaborate with you on it.
@gkdn because while i understand the JS generator is open source, we would first have to figure out how to use it, then we'd have to inline the externs in our own codebase, or create some external add-on contrib project which we would by definition be responsible for maintaining. i've tried, and merging it with our project's structure, or creating a fork, or creating a small container project that works from this one, inevitably creates surface area with tight coupling (that is, if we want to use Bazel's pin-to-commit and hash features). so, it just occurs to me, that it would be easiest to place it in the automated extern gen process that seems to take place in elemental2, since after all, Google is the one authoring Chrome, the Chrome Extension APIs, Bazel, J2CL, GWT, elemental2, rules_closure and all the components that go with them.
it has been awhile since i filed this issue, but i believe a PR came along with it. i'd be happy to try again, but there's no sense in us adopting elemental2 as a tiny startup if we'd have to accept the burden of maintaining Chrome Extension externs along with it. it is a surefire way for our code to break silently as Google pushes updates to any one of (1) Bazel, (2) J2CL, (3) elemental2, (4) Chrome or (5) Chrome Extensions. some of that is handled by the pin-and-hash technique, but a good deal of it is not.
it is just strange to me, all-around, that J2CL and other tools like it inside Google don't work or interoperate with other Google products or platforms. here we are, a small developer, who wants to build a high-performance extension. but you are asking us, rather than the $300bn/yr company you work for, to accept the maintenance burden it incurs.
re/it stopping our use of elemental2, as i mentioned, our Chrome Extension is the only place we're able to use this stack for now. other than these issues getting suggestions merged (here, also here), it has been great, and we really appreciate the hard work Google puts into releasing this stuff. we just wish we could use it effectively.

@gkdn / @jDramaix i am going to assume that you guys have seen this comment and remain unchanged in your opinion here. i understand your motivations and can see why you made the decision you did, but it is sad and unfortunate for devs like us, nonetheless.
we are hoping over here that elemental2 gets to a point of maturity where you can accept contributions. until then, good luck, and thank you for the code and effort behind this and all of google's open source work.

@sgammon As we said, we would be happy to review and submit an external contribution for that.
Just fork this repository and create a directory named contrib/chrome_extension and create the build file needed for invoking the jsinterop generator (you can use this BUILD file as an example ). Then create a PR in this repo.

as a tiny startup if we'd have to accept the burden of maintaining Chrome Extension externs along
You will not need to. You just need to refer to the extern file defined in the closure compiler project. They (closure compiler guys) are maintaining this files if something change on the chrome side.

Most of the rest of the maintenance you mentioned (Bazel, J2CL) will occur in JsInterop Generator project and will be done by us as we maintain the core of Elemental2.

@jDramaix no worries. i'd be happy to do that.
thank you for pointing me in the right direction with these links as well. my concern was keeping the contrib targets in a separate repo, which is where that additional surface area of maintenance might be introduced. with your comment here, you've addressed it, and i very much appreciate your willingness to do that.
i'll tag this issue from the PR when it is pushed, thank you again

Following up on this: I spent a few hours a week ago and got a couple of "contrib" sorts of externs building into apparently usable jars - though I haven't done more than a very simple smoke test. These include:

google maps api v3 - several small changes required, enums+unions don't play nice, and something isn't right about typedefs, but I'm still debugging that.
ace editor v1.2.3 - a @const namespace object is required by jsinterop-generator (but not by closure) to actually be initialized, just change var ace; to var ace = {};
chrome, chrome-extensions api - this requires the "nonstandard_fileapi.js" and "w3c_webcrypto.js", and as above you have to hide away all of the typedefs. There is also another issue around putting a function(...):... in a template param when extending something, my workaround for that isn't as workable, but likewise I'm hoping to dig a bit deeper before filing something. Only the chrome.js part is usable, I'm still iterating on extensions.

@niloc132 that's awesome and honestly i would totally use it as soon as chrome becomes a priority for us again (everything is on pause as you might imagine)

https://github.com/Vertispan/gwt-ace/
https://github.com/Vertispan/gwt-googlemaps-api/ (note that this does not build presently since elemental2 master doesn't either, and that's how bazel plays. the gwt-ace project has a workaround that I'll move over here once i finish getting gwt-ace's CI going)
The idea seems sound, just need to iterate on a few setup issues. Once we've got those in better shape I'll move to chrome+extensions, but as you say, other things are presently taking priority when I do happen to find free time...

https://github.com/Vertispan/gwt-googlemaps-api/ (note that this does not build presently since elemental2 master doesn't either, and that's how bazel plays. the gwt-ace project has a workaround that I'll move over here once i finish getting gwt-ace's CI going)

Why don't you depend on 1.0.0 branch of elemental2 instead of master? Do you need something that is not in the 1.0.0 branch ?

https://github.com/Vertispan/gwt-googlemaps-api/ (note that this does not build presently since elemental2 master doesn't either, and that's how bazel plays. the gwt-ace project has a >workaround that I'll move over here once i finish getting gwt-ace's CI going)

Why don't you depend on 1.0.0 branch of elemental2 instead of master? Do you need something that is not in the 1.0.0 branch ?

Note that in Bazel, you can also directly depend to a commit hash of an external repo and not necessarily wait to have a tag. Look at what we do in j2cl: https://github.com/google/j2cl/blob/master/build_defs/repository.bzl

Sorry, lost track of this.
Depending on releases is a non-starter, since j2cl "release" would need to be a specific sha (better to "just use latest" until there is a specific release that you tell us to use, right?). Updating j2cl means keeping to latest closure-compiler, latest closure-library, and in turn that means using latest elemental2 builds, since closure-compiler keeps updating and releasing with externs removed, while elemental2 releases are less frequent (and sometimes don't correctly pick up changes?).
Plus, https://github.com/google/elemental2/issues/141, just filed now after making sure the dates do seem to be wrong.
So, we've tried to just sit on top of latest of each repo and hope that these build - and when they fail, we incrementally have been moving to our own forks that build in open source consistently, though we do need to keep them rebased so we have upstream changes.
Using a sha instead of a tag is doable, but as in #141, it does mean some guesswork/bisecting to find the "right" combination, and means that in updating we have to incrementally move all commits up to a certain point and then walk them backward until everything builds again. If we get to the point where that is easier than forking, we'll probably switch to that.

Updating j2cl means keeping to latest closure-compiler, latest closure-library

Not usually true. J2CL is generally backward compatible for a while with closure releases unless we need modification in both but that's not common.


Programming Exercises: Display checkout directories in build plan preview for localCI

Checklist
General

[x] I tested all changes and their related features with all corresponding user types on a test server.
[x] Language: I followed the guidelines for inclusive, diversity-sensitive, and appreciative language.
[x] I chose a title conforming to the naming conventions for pull requests.

Server

[x] I strictly followed the server coding and design guidelines.
[x] I added multiple integration tests (Spring) related to the features (with a high test coverage).
[x] I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
[x] I documented the Java code using JavaDoc style.

Client

[x] Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data.
[x] I strictly followed the client coding and design guidelines.
[x] I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
[x] I documented the TypeScript code using JSDoc style.
[x] I added multiple screenshots/screencasts of my UI changes.
[x] I translated all newly inserted strings into English and German.

Motivation and Context
With the introduction of localCI it is now opaque where the repositories are actually checked out. This information was previously available when viewing the respective build plan in Bamboo (or Jenkins).
The information can currently only be found by reading the documentation and referring to the actually used code.
Description
Client

Added checkout directory information to the programming exercise detail page
Added checkout directory information to the programming exercise create/edit page (in the preview section)
Removed method call from html in programming-exercise-plans-and-repositories-preview.component.ts
Added undefined checks in programming-exercise-update.component.ts since console errors were displayed in the console when adding auxiliary repositories
Introduced shared constant instead of duplicated RegEx
Moved build-log-statistics-dto.ts to the entities folder, as we seem to store all dtos there in the client side
Introduced new shared Module and Components for the repository + checkout directory table
Removed method calls from the re-used repository + checkout directory table code

Server

Added missing checkout directory information for the solution repository of some programming languages (changes in ContinousIntegrationService)
Added endpoint to get the checkout directories for a programming exercise in a certain programming language

Steps for Testing
Prerequisites:

1 Instructor

Create a new programming exercise
Define the exercise title and short name
See that the checkout directories will be displayed in the preview
Change the programming language and see that the checkout directories will be updated accordingly (e.g. Java -> OCaml)
Add an auxiliary repository (e.g. name: sut, checkoutDirectory: assignment/sut)
See that the checkout directory will be displayed aswell (it is intended to add a / for the root directory for consistency if e.g. the test repository is checked out in the root repository)
Remove the checkmark for Check out repository of sample solution (only available for OCaml and Haskell)
See that the solution repository is not checked out during template build
Save the exercise
See that the checkout directories are displayed in the details view of the exercise

If you additionally want to verify that the displayed information is checked you can set a breakpoint in BuildJobContainerService.populateBuildJobContainer and then look at the docker if container is build as expected from the information displayed in the new UI.
You will find the testing directory under /var/tmp/testing-dir/ in the docker container.
(Note: some build scripts only have images for amd, which will early abort as the image will be pulled first - either define an existing image for the exercise or change you application-local.yml accordingly, e.g. continuous-integration.image-architecture: amd64)
Testserver States

[!NOTE]
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked

Review Progress
Performance Review

[ ] I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance

Code Review

[x] Code Review 1
[ ] Code Review 2

Manual Tests

[x] Test 1
[ ] Test 2

Test Coverage
Client

Class/File
Line Coverage
Confirmation (assert/expect)

programming-exercise-detail.component.ts
85.6%
✅

repositories-checkout-directories-dto.ts
0%
❌ (simple DTO without further logic)

programming-exercise.service.ts
88.02%
✅

programming-exercise-plans-and-repositories-preview.component.ts
96.15%
✅

utils.ts
95.52%
✅

Server

Class/File
Line Coverage
Confirmation (assert/expect)

ContinuousIntegrationService.java
100%
✅

LocalCIService.java
98%
✅

RepositoriesCheckoutDirectoryDTO.java
100%
❌ (simple DTO without further logic)

ProgrammingExerciseResource.java
81%
✅

Screenshots
Change Comparison

Change
Before
Now

Added checkout directories to preview

Added checkout directories to details view

Adjusted tooltip for LocalCI setup

Further Tooltips

Screencast

The screencast may take some time to load 🐌

Regarding https://github.com/ls1intum/Artemis/pull/8597#issuecomment-2119239075
The values are not hard-coded, so they change if the programming language is changed. Below, you can see how it is displayed for Haskell and Ocaml - does that resolve the issue you had in mind @Strohgelaender?
Haskell Exercise

Ocaml Exercise

Changes since last reviews:

verified checkout directories, noticed that solution will not be checked out in two repositories for the solution build plan => adjusted the DTO accordingly (no string array anymore)
endpoint now considers if the solution checkout directory shall be checked out or not (for Haskell and OCaml)

Sorry for the confusing diff in the .spec.ts files, I already contacted @undernagruzez as I think these findings are false positives.


Minor changes for APEX support

There are two minor changes - one is the removal of a duplicate #define, the other is a missing namespace for a spin lock.

There are more modifications to come - I added this pull request prematurely. They will be in later this morning...


test with vstest.console.exe

Hey Guys,
I'm trying to get this working with vstest.console.exe and some VC++ MSTest tests. I believe this is a delegate chosen by dotnet test.
I've tried playing with /TestAdapterPath and /TestAdapterLoadingStrategy, but I just cant seem to get your dotnet assembly's on the PATH sufficiently for this executable.
The best I;ve been able to get is
vstest.console /TestAdapterPath:C:\Users\geoff\Code\HelloStaticLib\JunitXml-TestLogger-3.0.124 /ResultsDirectory:vs-test-results /Logger:junit ./x64/Debug/HelloStaticLibTests.dll

to produce
Could not find a test logger with AssemblyQualifiedName, URI or FriendlyName 'junit'.

Is dotnet test simply entirely different from vstest.console.exe and thus my usage simply isnt supported?

@Groostav dotnet test uses vstest console internally. However assembly resolution may be slightly different. Can you please share the logs by running with vstest.console - - diag:log.txt?

Closing due to inactivity.


How to solve the problem with lazy load?

Hi, I got a new problem.
I accessed this link: https://www.bestbuy.com/site/searchpage.jsp?st=TV&_dyncharset=UTF-8&_dynSessConf=&id=pcat17071&type=page&sc=Global&cp=1&nrp=&sp=&qp=&list=n&af=true&iht=y&usc=All+Categories&ks=960&keys=keys
I found this page has lazy load for some elements. In Chrome, I scroll to bottom slowly, they loaded. And if I use js code like this: window.scrollTo(0, document.documentElement.scrollHeight);
Nothing to work. So I think, this page, use this rule:
If the elements in the view? Yes, load it. Or without loading.
I want to ask you for help, how could I use HtmlUnit to get informations in the lazy loaded elements?
Thanks

Emmm, after some exprenence, this page: https://www.bestbuy.com/site/searchpage.jsp?st=TV&_dyncharset=UTF-8&_dynSessConf=&id=pcat17071&type=page&sc=Global&cp=1&nrp=&sp=&qp=&list=n&af=true&iht=y&usc=All+Categories&ks=960&keys=keys
in the chrome, I could use this javascript code to make all lazy load element loaded.
let runTimes=0;
let a = document.querySelectorAll("li.sku-item")
let id=setInterval(function(){
    a[runTimes].scorllIntoView(true)
    runTimes++
    if (runTimes===a.length){
       clearInterval(id)
    }
 }, 5000)

But what sould I do by HtmlUnit? I used HtmlPage.executeJavaScript(codeString); . This way doesn't work. And, it executed too fast, a.length===24, so in chrome it used 2 mins, but use HtmlUnit, maybe just 2 secs.
These are my codes.
public void test() {
     WebClient webClient = new WebClient(BrowserVersion.CHROME);
      webClient.getOptions().setJavaScriptEnabled(false);
      webClient.getOptions().setCssEnabled(false);
      webClient.getOptions().setRedirectEnabled(true);
      webClient.getOptions().setThrowExceptionOnScriptError(false);
      webClient.getOptions().setActiveXNative(false);
      HtmlPage page = webClient.getPage("https://www.bestbuy.com/?intl=nosplash");
      webClient.getOptions().setJavaScriptEnabled(true);
      webClient.setAjaxController(new NicelyResynchronizingAjaxController());
      ScriptResult result = htmlPage.executeJavaScript("let runTimes = 0;" +
              "let a = document.querySelectorAll(\"li.sku-item\");" +
              "let id=setInterval(function(){\n" +
              "    a[runTimes].scrollIntoView(true)\n" +
              "    runTimes++\n" +
              "    if (runTimes===a.length){\n" +
              "        clearInterval(id)\n" +
              "    }\n" +
              "},5000)");
      htmlPage = (HtmlPage) htmlPage.getEnclosingWindow().getEnclosedPage();
      Document document = Jsoup.parse(htmlPage.asXml());
      Element element = document.select("ol.sku-item-list > li.sku-item").get(0);
      String strongString = element.selectFirst(".fulfillment-fulfillment-summary div > strong").text();   // NullPointerException
   }

Thanks

You have the javascript support disabled
webClient.getOptions().setJavaScriptEnabled(false);

Just a guess: because you have javascript support disabled while loading the page, all the page elements dynamically generated via js are not there. Maybe you can do page.asXML() after the getPage call to get an idea

I think you are right, I will try this way to solve my problem. Thanks for your advice.


Errors in openfl.geom Matrix and Point

On line 187 of openfl.geom.Matrix in the createBox method, b = rotation; should be rotate(rotation);. This should be applied to openfl._v2.geom.Matrix also.
In openfl.geom.Point, the method copyFrom is missing. It could easily be copied over from openfl._v2.geom.Point.

Another issue with openfl(._v2).geom.Matrix in createBox, identity() should be called at the beginning of the method, see here.

Another issue with openfl(._v2).geom.Matrix in createBox, identity() should be called at the beginning of the method, see here.

Thanks!
I just updated it, based on that documentation. I tried to decompose it to gain a little bit of performance. Please give it a try, to make sure I didn't miss something:
https://github.com/openfl/openfl/commit/79fd4c1ec5f346e33c0b900af88a1b772f62e913

Thanks!
I just updated it, based on that documentation. I tried to decompose it to gain a little bit of performance. Please give it a try, to make sure I didn't miss something:
https://github.com/openfl/openfl/commit/79fd4c1ec5f346e33c0b900af88a1b772f62e913

Looks like it is, I'll mark this as closed :)

Looks like it is, I'll mark this as closed :)


Release of Altair 5 means we can get rid of VegaliteNoValidate class

We use Altair's rendering logic so that vega-lite charts display nicely across dev environments (vs code, jupyter, etc.)
However, some of our chart specs are vega-lite v5, which has not been supported by Altair.  This has led to a nasty hack where I had to subclass VegaLite and remove validation:
https://github.com/moj-analytical-services/splink/blob/835b782055d31c49aff9f36f4d47b350a5e30acc/splink/charts.py#LL16C11-L16C40
Altair v5 release candidate has just been released.  Once it gets a full release, we can get rid of this code and use the VegaLite class from Altair directly

Altair 5.0 is now properly released:
https://twitter.com/jakevdp/status/1656709961479761920


release binary for 1.18.2

The binary in Releases is only for 1.18.1, it would be nice if it was updated to 1.18.2

Or possibly instructions on how to build from source would be nice.

I'll see if I can compile it.


added "to" as a shortcut for "takeoff"

I don´t know if "to" should also be added to
var DEFERRED_COMMANDS = ["takeoff"];

What is the purpose of this?
It is pushed to "deferred" afterwards, passed to "run()", passed to "runTakeoff()" but I don´t see it being used there.

deferred commands are run after all other commands in the current chain; for example:
BAW123 climb 250 turn right 090

would run the following, in this order:
climb turn

However, the command
BAW123 takeoff climb 250

would run in this order:
climb takeoff

because takeoff needs an altitude set (with the climb command), and I often typed takeoff climb 10 instead of climb 10 takeoff.
To answer your question, since deferred is generated before the commands are shortened (i.e. tax is the same as taxi), to does have to be added to DEFERRED_COMMANDS.


Validate and decode LNURL using phoenix: scheme prefix on Android

I can send an LNURL withdrawal request using a deep link directly to Phoenix using something like the following "lightning:LNURL123...123". However anyone with more than one lightning wallet finds it impossible to have the URI open the correct wallet since the OS (especially iOS) just opens the last wallet installed which supports the "lightning:" url scheme.
On iOS I can open Phoenix directly, and have the wallet process the invoice successfully using the following url scheme "phoenix:lightning:LNURL123...123". I can see in the code this was a requested feature:
As well as adding both "lightning" and "phoenix" into the Info.plist CFBundleURLTypes; in SceneDelegate.swift you have:
func handleExternalURL(_ url: URL) {
	log.trace("handleExternalURL")

	var urlStr = url.absoluteString

	// We support phoenix-specific URLs:
	// phoenix:lightning:lnbc10u1pwjqwkkp...
	//
	// As per issue #186:
	// > Anyone with more than one lightning wallet on iOS has a hard time
	// > having the URI open the correct wallet...
	//
	let trimMatchingPrefix = {(prefix: String) -> Void in

		if urlStr.lowercased().starts(with: prefix.lowercased()) {

			let startIdx = urlStr.index(urlStr.startIndex, offsetBy: prefix.count)
			let substr = urlStr[startIdx ..< urlStr.endIndex]
			urlStr = String(substr)
		}
	}

	trimMatchingPrefix("phoenix://")
	trimMatchingPrefix("phoenix:")

	AppDelegate.get().externalLightningUrlPublisher.send(urlStr)
}

However on Android I'm afraid this method doesn't work.
I can see in AndroidManifest.xml within phoenix-legacy you have set the Intent filter for "lightning", however it does not contain "phoenix". Can I assume this code might be old now since I can see a new Kotlin project in the phoenix repo?
<!-- handle payment uris -->
<intent-filter android:label="@string/app_name">
  <action android:name="android.intent.action.VIEW" />

  <category android:name="android.intent.category.BROWSABLE" />
  <category android:name="android.intent.category.DEFAULT" />

  <data android:scheme="bitcoin" />
  <data android:scheme="lightning" />
  <data android:scheme="lnurl" />
</intent-filter>

Would it be possible to allow either the "phoenix:" or "phoenix:lightning:" scheme to decode and process the invoice in the Android version? This would allow us at THNDR Games to add support for Phoenix wallet for our sats prize payments on Android.
Thanks!

Related to issue #186
@dpad - As noted above, on the iOS side I:

Added support for "phoenix:" URLs to Info.plist
Added code to trim the "phoenix:" prefix before sending it to Kotlin layer

Step 2 can be moved into the Kotlin layer when you're ready.

This has been fixed in the legacy app and will be available in the next release of Phoenix android.

Available with v1.4.26 (android)

Thank you for fixing this @dpad85  🙏
I have re-enabled Phoenix wallet (Android) in all our games at THNDR today 🔥

Great 🥳 ! Thanks for the update.


Initial support for a monitoring issue

monitoring_issue@474 aka 20200413.2 vs master ewma over 9 builds from 445 to 471

Merging this now for testing in the cimetrics repo, and ideally in CCF as well. This needs refinement, but I think it's already basically useful and that can be done in later PRs.


Floating point properties can be parsed incorrectly

When Windows regional settings do not have '.' as the decimal symbol - as is common in many European countries, for example - floating point properties such as OpenSlideImage.MicronsPerPixelX and OpenSlideImage.MicronsPerPixelY are parsed incorrectly from their string equivalent properties. This stems from the use of the double.TryParse(string, out double) method which is culture sensitive.
The OpenSlide library uses the g_ascii_dtostr method to convert doubles to strings which ensures that '.' is used as the decimal point.
The properties should parse the string using the invariant culture in double.TryParse(string, NumberStyles, IFormatProvider, out double) where IFormatProvider is CultureInfo.InvariantCulture which uses '.' as the decimal symbol.
Consider doing similar for the float and double GetProperty extension methods too.

Thanks, had the same problem and solved it by using the method above.


Add support for Minio S3

Cain currently supports AWS S3.
Support for Minio S3 has already been added to skbn, so adding support to cain would be fairly simple - update Gopkg.toml and Gopkg.lock to the latest skbn version (0.4.0).
This will probably require changing additional dependencies in Gopkg.toml to match the same dependencies versions as in skbn.
Once a PR is merged and version is tagged, we can update the official incubator/cassandra image tag and docs to contribute it to the community.

Hi Maor,
I have tried updating manually skbn in Gopkg.toml to tag 0.4.0 (not sure probably there is a better way to do this) but all I get is:
dep ensure
Solving failure: No versions of github.com/nuvo/skbn met constraints:
        0.3.0: Could not introduce<EMAIL_ADDRESS>as it is not allowed by constraint ^0.4.0 from project github.com/nuvo/cain.
        0.4.0: Could not introduce<EMAIL_ADDRESS>as it has a dependency on k8s.io/apimachinery with constraint release-1.13, which has no overlap with existing constraint kubernetes-1.12.2 from (root)
        0.2.0: Could not introduce<EMAIL_ADDRESS>as it is not allowed by constraint ^0.4.0 from project github.com/nuvo/cain.
        0.1.1: Could not introduce<EMAIL_ADDRESS>as it is not allowed by constraint ^0.4.0 from project github.com/nuvo/cain.
        0.1.0: Could not introduce<EMAIL_ADDRESS>as it is not allowed by constraint ^0.4.0 from project github.com/nuvo/cain.
        master: Could not introduce github.com/nuvo/skbn@master, as it is not allowed by constraint ^0.4.0 from project github.com/nuvo/cain.
make: *** [bootstrap] Error 1

any hint? I see that skbn 0.4.0 Gopkg.toml has two constraints on k8s.io/apimachinery

Try matching apimachinery version to the one in skbn and run dep ensure ;)

Thanks! that worked now in Gopkg.toml there is:
[[constraint]]
  branch = "release-1.13"
  name = "k8s.io/apimachinery"

However after running the container with (still using skbn serviceaccount) I'm facing this issue:
kubectl run cain --labels='app=skbn' --serviceaccount='skbn' -i --tty --restart=Never --rm --image-pull-policy=IfNotPresent  --image nuvo/cain --command -- '/bin/sh'

~ $ export AWS_ACCESS_KEY_ID=minio-cfs
~ $ export AWS_SECRET_ACCESS_KEY=61Vulcan0
~ $ export AWS_S3_ENDPOINT=http://minio-svc.default.svc.cluster.local:9000
~ $ export AWS_S3_NO_SSL=true
~ $ export AWS_S3_FORCE_PATH_STYLE=true
~ $ cain backup -n default -l app=cassandra -k keyspace --dst s3://cassandra
2018/12/25 12:22:03 Backup started!
2018/12/25 12:22:03 Getting clients
2018/12/25 12:22:03 Getting pods
2018/12/25 12:22:03 Backing up schema
2018/12/25 12:22:05 error in Stream: command terminated with exit code 1

Could be a cqlsh error?

i see that you use nuvo/cain as the image, which will not work since the latest version does not use the updated skbn version.
I suggest you try to run the code:
export ...
go run cmd/cain.go backup -n default -l app=cassandra -k keyspace1 --dst s3://cassandra

works as usual for me. you could check the pod itself, to see if you can perform exec with cqlsh.

Sorry, forgot to mention that I'm using local compiled cain image generated by the make command.
Also, I'm using a cassandra image 3.11.2 from gcr.io + cqlsh Dockerfile .
I suppose that cqlsh is a bit faulty I guess.
I will update you after lunch. Thanks

Feel free to create a PR already.
If skbn worked - this is most probably a cqlsh issue, as you suspect.

PR created

I have merged it, and will now create a 0.4.0 tag.
Will you be interested in contributing this to the official cassandra helm chart?

Thanks ! Sure, I'm not that much into helm but if I understand correctly, you want update env vars in the backup chart?

Not the env vars, but the version of cain to use, along with everything else that is required.
If you are not into it, that's ok. I can do it myself.
Let me know ;)


Nightly Tex Table

This PR generates a tex table similar to what nightlies have on our site, except latex. It also pushes the line count table generator into the nightly infra.
Currently the blocker on this PR would be installing tokei which is a line counting too. Should be easily installed with cargo install tokei, but I'm unsure how best to get it installed (run it across the system? run it in our script?)

If cargo install tokei in the nightly script just works that sounds good to me


How to change the font family and stylings of the content?

I need to change the font size and the font family of the content rendered through the library (content rendered other than latex). Found a way to change the scale of the math content but tried a lot and couldn't find a way to change the stylings of the other content rendered through the library. Can someone help me?

Same question. @isuruaxis do you mind sharing how you scaled the math content?

@isuruaxis Are you trying to scale the \text{} portion of the display? If that is the case, it is not possible. Even the MathJax library itself doesn't have that I think.


how calculate bandwidth for sending TRX

Hello!
Is there any way to calculate the bandwidth of a TRX transaction before it is sent?
In order to be able to calculate what the fee will be based on this value.
There is no separate method for calculating this value(bandwidth) or estimating the required amount of badwidth for sending TRX tokens..

The bandwidth is calculated based on the transaction raw data length, you can get the length of transaction raw_data to get the estimated bandwidth.


Discussion: Confusion about installing old versions of formula

Firstly, thanks for homebrew! It's a great project.
I've been looking through documentation / stack overflow / google searches for information on how to install older versions of formula. Based on searches it seems like this is a fairly common use case scenario, but there doesn't seem to be a best practice on how to do this. From what I can gather homebrew/versions has been deprecated, so it's not clear to me how to best do this. I see http://docs.brew.sh/Versions.html talks about having multiple active versions, but doesn't mention legacy versions.
In short, is there a best practice way of installing older versions of applications? Is this documented somewhere that I missed? What is the projects' take on older application versions?
Many thanks.

In short, is there a best practice way of installing older versions of applications? Is this documented somewhere that I missed? What is the projects' take on older application versions?

This isn't something that's generically supported but just provided for certain applications. It's not completely ready yet so not completely documented yet. We'll likely announce it in the blog post for a later release.


Add tooling badges

Not super important, but I stumbled upon tooling badges:

In case you like them (I am personally not entirely convinced yet ^^), here they are added to the README with the if statements corresponding to the correct tool. :)

I don't know that I'd recommend them by default in a readme ...
I can see them going into the top level readme of this repo (since it's explicitly about tooling), but i likely would delete in my own repos

I think that's also how I feel!


Initial skeleton commit

WIP

looks like we also need these change for a new connector:

pkg/secretless/plugin/sharedobj/internal_plugins.go - add the connector to GetInternalPluginsFunc() under the relevant map


Change mouse mode cursor to the default cursor

On my linux machine, the Arrow cursor is this very rarely used Xorg cursor:

However, changing the cursor to Default gives me the default mouse cursor I'm used to:

@zacps, @dm1try and @sodiumjoe could you guys check to that this doesn't mess it up on Windows/Mac?

Added to change log

Can't test because of https://github.com/jwilm/alacritty/issues/1938 shrugs.


Support for Rasa Core Interactive Learning?

I'm wondering if this project will also support Rasa Core, especially the interactive learning part. Currently Rasa Core uses command line for such interactive learning, and a user-friendly UI for this will be really helpful and completes the whole chatbot pipeline.

@crownpku - we need Rasa Core to support learning from their HTTP API's, then we could add support in Rasa UI.

That would be amazing ! :smile:

I would love that!

+1

Is this supported now?

Looks like its enabled using http APIs.
https://github.com/RasaHQ/rasa_core/blob/master/rasa_core/training/interactive.py
To support this Rasa ui should support Core latest release (atlease 0.11) which added Action server component.

any updates on this?

This would be a good feature. Any update?


Not discovering binary.

So, after building the binary, the plugin is unable to find the binary.  The default location is supposed to be `~/.local/share/zsh-histdb-skim/bin``, but it does not recognize the plugin there. I have also moved it to $PATH, which since it is not told to look there, it does not find it.
Just a point of information, that if you install this plugin with a plugin manager, such as zplug, then the binary will never be in the default location.
Finally, you didn't include BSD in your definitions of operating systems. Looks like a PR...

After tinkering with the code, I discovered the errors of my ways, and that I had placed the binary in the wrong folder. The correct folder is: $HOME/.local/share/zsh-histdb-skim/.
Don't you just love it when a plan comes together.


Examples | Sound Effect
Actual Behaviour

Sound also plays when mouse is clicked near the circle but outside it.
Expected Behaviour

Sound should only play when mouse is clicked inside the circle.
Steps to reproduce it

1 .Bring your mouse near to the circle boundary but do not overlap it.
2. The circle's fill changes to a darker indicating that the function contains() return true. This is the part where the issue lies.
3 . If you press your mouse button, sound will play.
Screenshots of the issue

The red line indicates the position of the mouse cursor.

The sketch is mainly using radius as a measurement while ellipse() by default accepts diameter for its size so the hit area is larger than the drawn area. To fix this we can just add ellipseMode(RADIUS) and reduce the hard coded radius number from 64 to 32.


Revert "[AKS] add apiServerAuthorizedIPRanges property"

Reverts Azure/azure-rest-api-specs#5101
The feature is not available in production and will need a new API version. The previous merge was a mistake.

Automation for azure-sdk-for-js

Can one of the admins verify this patch?

Automation for azure-sdk-for-ruby

Automation for azure-sdk-for-node

Automation for azure-sdk-for-go

Automation for azure-sdk-for-java


Fix empty XML tag doc in XMLParser.xml

Fix doc to show how an empty XML tag is appropiately closed.

Thanks!

Cherry-picked for 4.1.3.


Alt screen in :terminal changes cursor shape

Steps to reproduce

Run vim
:terminal
run a program that uses the alternate screen in the terminal (e.g. less, mc)

What happens

Terminal cursor (which is usually a block) changes to an underline, and this change persists when you quit less/mc, the shell session in vim's terminal, or vim itself

What I expect

Terminal cursor to stay in block shape, or at least go back to block shape when you quit the program using the alternate screen.

Additional info

I'm on Linux with gnome-terminal 3.20.2, libvte 0.44.2.

Marius Gedminas wrote:

Steps to reproduce

Run vim
:terminal
run a program that uses the alternate screen in the terminal (e.g. less, mc)

What happens

Terminal cursor (which is usually a block) changes to an underline, and this change persists when you quit less/mc, the shell session in vim's terminal, or vim itself

What I expect

Terminal cursor to stay in block shape, or at least go back to block shape when you quit the program using the alternate screen.

Additional info

I'm on Linux with gnome-terminal 3.20.2, libvte 0.44.2.

Thanks for reporting.  It's caused by libvterm using "int" for a one bit
bitfield, which turns a value into -1.
--
No man may purchase alcohol without written consent from his wife.
[real standing law in Pennsylvania, United States of America]
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Fixed in 8.0.0920 (893029ab20a06da9c0cf29661c9f6e2ec5583dce).


Cannot resolve module [object Object]

Hi there! I'm trying to execute a webpack with extract-text, but I'm getting "Cannot resolve module '[object Object]'".
Here is a fragment.
    loaders: [{
      test: /\.css$/,
      loader: ExtractTextPlugin.extract({
        notExtractLoader: "style-loader",
        loader: "css-loader"
      })
    }]

Version of this plugin: 1.0.1
Node: 6.2.0. Tested in 4.4.0. And the same.

Well, for some reason version 1.0.1 doesn't works with webpack 1.x
I've upgraded to<EMAIL_ADDRESS>and<EMAIL_ADDRESS>and worked perfectly.

Hi I'm having the same issue. I also use version 1.0.1 and my node version is 6.2.2.
Using v2.0.0-beta.2 or v2.0.0-beta.3 won't work for me because of #214
Here's the loader config for the plugin:
{
  test: /\.css$/,
  loader: ExtractTextPlugin.extract({
    fallbackLoader: 'style-loader',
    loader: 'css-loader!postcss-loader'
  })
}

Please let me know if I can supply any additional information for resolving this issue.

I managed to fix it by changing my loader config to
{
  test: /\.css$/,
  loader: ExtractTextPlugin.extract('style', 'css-loader!postcss-loader')
}

Still I think there is an issue that should be resolved, because my initial config was pretty similar to what you have in the README.md

You have to upgrade both extract-text-webpack-plugin to ^v2.0.0-beta.3 and webpack to ^v2.1.0-beta.19 to fix #214.

@Kovensky I know that #214 would have been fixed if I switched to the newest webpack beta but I don't like using beta versions of packages in production if I can avoid it.
And ExtractTextPlugin.extract('style', 'css-loader!postcss-loader') works without problems in<EMAIL_ADDRESS>

@Kovensky doesn't ExtractTextPlugin.extract accepts only a single config argument ?

@narek11 yes, as of the version 2 beta, and it complains at you if you do give more than one argument. Previous versions accept (up to) 3 arguments.

I'm having this issue as well on<EMAIL_ADDRESS>and<EMAIL_ADDRESS>I would rather not upgrade to either beta right now (upgrading webpack broke my build). Is there a workaround for this issue? Should I revert the plugin to an earlier version? @Eschon 's proposed fix didn't seem to do it for me.

Use the documentation from the webpack-1 branch when using the 1.x version: https://github.com/webpack/extract-text-webpack-plugin/blob/webpack-1/README.md

I'm in exactly the same position as raphaklaus was Jul 17: Node 6.2.0<EMAIL_ADDRESS>using the same fragment he used, and getting the same error message. I'm also in the same position as arahansen on Jul 27: I need to use a stable release in production. Is there a workaround?

New report. I got a workaround to work. See my documentation here.

I got into this same bind, wasn't able to update to the latest v of webpack and @Prairie-Falcon's guide saved me.  Kudos!!

Not sure if this will help, but in my case this was caused by having these lines in webpack config:
module.exports = {
  resolve: { fallback: path.join(__dirname, "node_modules") },
  resolveLoader: { fallback: path.join(__dirname, "node_modules") }}
...

Removing them fixed the problem.

@raphaklaus not work when i update extract-text-webpack-plugin to 2.0.0-beta.2,show errors

having issue with webpack v1.14.0 & extract-text-webpack-plugin v1.0.1 on windows when running webpack --watch within my react application .jsx file
// webpack.config.json
{
  // . . .
  module: {
     loaders: [
      {
        test: /\.jsx?$/,
        loader: 'babel-loader'
      },
      {
        test: /\.scss$/,
        loader: ExtractTextPlugin.extract({
          fallbackLoader: 'style-loader',
          loader: 'css-loader!sass-loader'
        })
      }
    ]
  },
  plugins: [
    new ExtractTextPlugin('./public/style.css')
  ]
}

Error output in terminal:
ERROR in ./src/Index.jsx
Module not found: Error: Cannot resolve module '[object Object]' in C:\Users\ALilland\Documents\application\src
 @ ./src/Index.jsx 15:0-26

@TNT-Likely Did you add the ExtractTextPlugin plugin to the list of plugins? Do something like this in your webpack.config.js:
config.plugins = [
    new ExtractTestPlugin('css/[name].[hash].css'),
    <other plugins>
]

@aronlmin You are using the wrong syntax for the extract method call. The syntax you are using is for the latest version of the extract-text-webpack-plugin. For version 1, change it to look like this:
loader: ExtractTextPlugin.extract('style-loader', 'css-loader!sass-loader')


Added new action to upload dSYM files to crashlytics

Added tests
Added docs

Hey @KrauseFx! This looks good to me! Just take a look at the few questions from @armcknight and we will be good to go! :rocket:

@ohwutup @armcknight I updated the PR with the new docs and platform option, can you do a final review before I squash?

Changes look good! :shipit:

Great, thanks @armcknight :+1:

:key:


Renaming a variable is opening a copy of the file

I am using typescript. When I use F2 to rename a variable, it is opening a new file with the same contents but with the new variable name change. The location of that new file is the same except some of the folders are lowercased for some reason. I've only seen a similar issue where ctrl+p opens a file with that weird location that has the same contents as the other file.

I closed vscode and opened it again and now it works. Not sure why


Blank option for filter

active_interaction is designed for web, but lacks support for blank values. In web everything passed as a string, so when user wants to clear input the value will be empty string and not nil.
For example user wants to leave birthday field on the form as blank:
class DateInteraction < ActiveInteraction::Base
  date :birthday, default: nil

  def execute
  end
end

# this should be a valid option
DateInteraction.run!(birthday: '')

Right now it will complain that empty string is not a date.
As a proposed solution there could be an additional option allow_blank: true.

In validations, :allow_blank let's blank values skip the normal validation and pass on through. We don't want that because we want to guarantee that :birthday is a Date (or nil). We could add an option that turns blank strings into the default value.
You could strip the blank values from the params before sending them to the interaction. Something like:
params.reject { |k, v| v.empty? }.to_h

We could add an option that turns blank strings into the default value.

That's what I'm after. That feature would be very useful for all web use cases.

You could get this done with callbacks. Something like this (untested):
set_callback :type_check, :before, -> { inputs.transform_values(&:presence) }

This sounds like a good idea. It would certainly make using ActiveInteraction as a form object easier. How would this interact with :strip? Should we check to see if the value is empty after we've dealt with :strip? I think that's the right way to go. It'll also need to work with and without :default set. If no default is set then it would act like you passed nil and throw an error. Also we'd need a better name than allow_blank. Something like :treat_empty_as_nil.

Something like :treat_empty_as_nil.

@AaronLasseigne  Should that be a default behaviour for the all filters except string?

I went ahead and built :blank_as_nil but I'm starting to think that might not be the right approach. Maybe I should make blank strings always behave like nil (with the exception of string filters). This also makes me think that maybe I should also strip all strings (again not on string filters).

I've gone ahead and made this the default behavior on all filters that previously accepted stings with the exception of string and symbol filters. Floats, numbers, and date/times will now treat a blank string as though it's nil. This will be released with 4.0.0.


Opening a window fails on Ubuntu 22.04

Summary of your issue
Can't open a window in Ubuntu.
Environment
Ubuntu 22.04.3 (LTS)
net7.0
csproj dependencies:
<PackageReference Include="OpenCvSharp4" Version="4.6.0-SNAPSHOT" />
<PackageReference Include="OpenCvSharp4.runtime.ubuntu.22.04-x64" Version="4.6.0-SNAPSHOT" />

Example code:
using OpenCvSharp;

Cv2.NamedWindow("debugFrame");

Console.WriteLine("Press any key to quit");
Console.ReadKey();

Output:
/home/tuure/Documents/GraphicTest/GraphicTest.csproj : warning NU1603: GraphicTest depends on OpenCvSharp4 (>= 4.6.0-SNAPSHOT) but OpenCvSharp4 4.6.0-SNAPSHOT was not found. An approximate best match of OpenCvSharp4 <IP_ADDRESS>20608 was resolved.
/home/tuure/Documents/GraphicTest/GraphicTest.csproj : warning NU1603: GraphicTest depends on OpenCvSharp4 (>= 4.6.0-SNAPSHOT) but OpenCvSharp4 4.6.0-SNAPSHOT was not found. An approximate best match of OpenCvSharp4 <IP_ADDRESS>20608 was resolved.
Gtk-Message: 21:40:15.764: Failed to load module "gail"
Gtk-Message: 21:40:15.764: Failed to load module "atk-bridge"

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.769: Unable to locate theme engine in module_path: "adwaita",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.771: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.772: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.772: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.772: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.773: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.773: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.773: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.774: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.776: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.776: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.776: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.777: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.777: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.777: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.777: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.778: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.778: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.778: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.779: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.779: Unable to locate theme engine in module_path: "pixmap",

(GraphicTest:12129): Gtk-WARNING **: 21:40:15.780: Unable to locate theme engine in module_path: "adwaita",
Gtk-Message: 21:40:15.787: Failed to load module "canberra-gtk-module"
Press any key to quit

What did you intend to be?
A window opening
What I've tried
I don't know if these are the right packages but I made sure the following are installed based on some discussions around similar errors in the Ask Ubuntu forum.
sudo apt install libatk-adaptor libgail-common libcanberra-gtk-module libcanberra-gtk3-module

And got the confirmation:
libatk-adaptor is already the newest version (2.38.0-3).
libgail-common is already the newest version (2.24.33-2ubuntu2).
libcanberra-gtk3-module is already the newest version (0.30-10ubuntu<IP_ADDRESS>).
libcanberra-gtk-module is already the newest version (0.30-10ubuntu<IP_ADDRESS>).

Any help or suggestions how to get it to work are welcome 😊

Never mind. My attempt at a minimal reproduction seemed to be the culprit. Opening a window does seem to work despite these gtk messages.

Never mind. My attempt at a minimal reproduction seemed to be the culprit. Opening a window does seem to work despite these gtk messages.


Add a Vezel.Novadrop.Cryptography library

This will cover:

The 256-bit XOR cipher used for resource container files.
The PIKE cipher used for network encryption.
The (incorrect) SHA-0 implementation used for the PIKE key exchange.
Maybe the modified CRC32 used for data center strings?

With the reorganization in df4c57c256ee2bade8d070e43a2fa9e9e532edfe, these algorithms will just live in the corresponding assembly (e.g. PIKE in Vezel.Novadrop.Net, XOR cipher in Vezel.Novadrop.Formats).


Upload handling

Supposedly this will be in par with our supporter system. Since we'll be allowing users to store their mods inside the same server Sayonika runs. But this presents serious scaling challenges to give such privelege.
I, however came up with a flow that emphasizes efficient use of storage while keeping with our scaling constraints. To do this we do the following:
On POST

We parse the ZIP from the multipart, and compress it in GZIP. GZIPs are notoriously known to keep things small, from a 226MB image to a 12MB archive.
Store it on S3 with its own file Snowflake as its name.

On GET
Now the download URL will be something like this https://sayonika.moe/api/v1/download/<mod_id>.
However, we only have two supported ways to distributed compressed GZIPs.
on Sayonika Frontend

Frontend is responsible to decompress the GZIP, and return it as a blob, then call the download as a blob stream.

This is quite useful for low-bandwidth users.

on Third Party

Third party is liable to decompress the GZIP by themselves, API shall return the GZIPped file.

Limits
To enforce limits, there would be only ONE FILE with ZIP extension per mod. All subsequent ZIPs will be treated as a new version of the file and will be saved, the old GZIPped archive will be overwritten.

Please do #17 and #33 first before this.


[Bug] after update 0.2.9 [ order page and total billing [fossbilling] site crashed to Gateway Error!

Describe the bug
updated the Fossbilling to 0.2.9
Tried to add a product from direct link and login with an already registered (registered before update) client account.
Got a message with no text ( just a black pop up on the right up corner) in it.
Then I tried to login from the client dashboard (Login or Register) to check if login works!
Entire site crashed to a Gateway Error.
Now unable to access the billing website [url : Mayoza Billing ]
To Reproduce
Steps to reproduce the behavior:

Go to 'main-fossbilling-installation.com'
Click on 'login'
See error

Expected behavior
I was looking to login as a client and make a sample order for a newly added product.
Screenshots

Desktop (please complete the following information):

OS: [Andoid 12]
Browser [Chrome]
Version [103]

Smartphone (please complete the following information):

Device: [Redmi 9A]
OS: [Android 12]
Browser [Google Chrome]
Version [103]

Additional context
I am looking at alternative or I will reinstall Fossbilling 0.2.7 back again.
Update 0.2.9 has lots of bugs out of the box.

Now it is loading,
But Login does not work again for client.
No message is showing in the popup message.

Make sure to clear the cache

The problem still persists!
It happens then and there,
Point to Note: other sites on my server still works good, but only fossbilling website and domain doesn't work it as intended with the above : Gateway Timeout error.

Check your error logs most likely you are using Hestia so https://forum.hestiacp.com/t/504-gateway-timeout/4819/3

The issue is still persisting.
Only when login the gateway error arises.

I'm quite unsure if this is an issue on our end. We also can't really help much without server logs and more details about your stack.

Closing, per your other comment things are working fine for you.

HestiaCP has options for caching the static files a bit to well:
https://github.com/jaapmarcus/web-templates/blob/master/templates/nginx/nocache.tpl
https://github.com/jaapmarcus/web-templates/blob/master/templates/nginx/nocache.stpl
Also if the the cronjob doesn't run properly the system will probably timeout due to php execution time.


something go wrong when cargo run show compiling error

Problem

Output of cargo version:

solved by updating kernel

linux related commit
read more


add script functionality

closes https://github.com/ericphanson/ExplicitImports.jl/issues/19
julia> print_explicit_imports_script("script.jl")
Script `script.jl` is relying on implicit imports for 1 names. These could be explicitly imported as follows:

```julia
using LinearAlgebra: norm
```

Additionally, script `script.jl` has stale explicit imports for these unused names:
- qr

I think this should also include using LinearAlgebra: LinearAlgebra, but that doesn't work, since which(Main, :LinearAlgebra) === Main (whereas I think it should be `LinearAlgebra). I filed https://github.com/JuliaLang/julia/issues/53576 for that.

Codecov Report
Attention: Patch coverage is 86.66667% with 2 lines in your changes are missing coverage. Please review.

Project coverage is 96.19%. Comparing base (fb39a47) to head (4af876f).

Files
Patch %
Lines

src/ExplicitImports.jl
86.66%
2 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #23      +/-   ##
==========================================
- Coverage   96.49%   96.19%   -0.31%
==========================================
  Files           5        5
  Lines         514      525      +11
==========================================
+ Hits          496      505       +9
- Misses         18       20       +2

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


⚠ Bofrost.at has degraded performance

In 304bb54, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1433 ms

Resolved: Bofrost.at performance has improved in 7d48295 after 7 minutes.


elasticsearch-jdbc 2.3.4  Postgres  configuration issue

Hi,
below is my setup for elastic with elastic jdbc 2.3.4 !
my postgresql-simple-example
https://gist.github.com/matt212/57e9d17b7afb98baadfca738d3173bd7
my elastic.yml configuration
https://gist.github.com/matt212/b2649dbe35def8eae4a7f8a376cff3fc
my jdbc log error
https://gist.github.com/matt212/1bdf5ce5b5e8434b835d48087d319ca1
my elastic version

my elastic jdbc version
2.3.4
Any recommendation how to resolve the issue.
Many thanks !

elasticsearch-jdbc does not support ES 5.5.0. The last version it officially supports is ES 2.3.4.


Fixing docs-push issues

Currently testing the after_success.sh scripts to see if pushes to S3 are getting through. Will merge once the commits are reaching the global bucket.

s3 push can't be checked until merge (since PRs aren't allowed to access encrypted travis vars). Everything else looks functional (although the docs still don't look great). Going to go ahead and merge to test s3 push.


it seems RECALLED: 10002 message dose't trigger on('message') event

i tested the ding-dong-bot and recalled some message , it dose not trigger the event.

Hi JasLin,
when you run ding-dong-bot, there should be a scan event first, with the login qrcode url that you need to scan to login.
the message event will be emitted after login, at the time when you receive a new message.

@zixia  thanks for your reply , actually , i had use wechaty in my programs. i wrote a robot to serve some business, and everything is ok , but the when i recalled message from my wechat in mobile, it never trigger the message event . the test code is simple:
...
.on('message', m => {
  m.ready()
  .then(msg => {
    log.info('Bot', 'recv: %s', msg.toStringEx())
    logToFile(JSON.stringify(msg.rawObj))
    // test recalled message
    if(m.type() === Message.Type.RECALLED){
        console.log('recalled a message')
        m.dumpRaw()
    }
    ...

  })
  .catch(e => log.error('Bot', 'ready: %s' , e))
})

there is no message receive after recalled from mobile.
BTW: thanks for wechaty again, it may be the best wecaht sdk i have seen in github. i had move my code from python to javascript after compare with wechaty and some python wechat sdk .

it may be the best wecaht sdk i have seen in github
相当高的评价，我也赞一个

@JasLin confirmed.
It seems the message of type RECALLED is not triggered in the current hook process.
It must has other hook point of this type message, will figure it out when I has time.
at last, thanks for your review, I'd like to write it to README :) and thanks @sjdy521, too!

@jaslin do u have any idea of how to fix this issue? i'm going to review it next week.

@zixia i haven't dig into this issue yet, this issue not so harmfull ,or i will going to see this next week too.

About the RECALL Message behavior of webwxApp:
Problem

RECALL Message does not like other messages:

https://github.com/wechaty/webwx-app-tracker/blob/06ba28a762e4f13d1710962577afb53017d2190f/formatted/webwxApp.js#L2007

It return instead of call addChatMessage():

https://github.com/wechaty/webwx-app-tracker/blob/06ba28a762e4f13d1710962577afb53017d2190f/formatted/webwxApp.js#L2034

So there will no message:add:success broadcast event fired for RECALL Message:

https://github.com/wechaty/webwx-app-tracker/blob/06ba28a762e4f13d1710962577afb53017d2190f/formatted/webwxApp.js#L1930

At last Wechaty will never get it.

Solution

Do the solutions above have not help?

Close this issue because the PR will be merged soon.


Is it possible to use this as a WASM module?

Other issues here mentioning wasm and the fact that I'm able to build a project using this via wasm-pack --target web made me think it's possible, but my lack of success and #15 being open made me ask this question to make sure.
I'm new to rust and haven't been having an easy time debugging or finding more info, so if it is possible to do this I'd appreciate any pointers on what to try.
cargo.toml
[package]
name = "test-lzma-wasm"
version = "0.1.0"
edition = "2021"

[dependencies]
console_error_panic_hook = "0.1.7"
liblzma = { version = "0.3", features = ["static"] }
wasm-bindgen = "0.2"

[lib]
crate-type = ["cdylib"]

lib.rs (example copied from the docs)
use wasm_bindgen::prelude::*;
extern crate console_error_panic_hook;
use liblzma::read::{XzDecoder, XzEncoder};
use std::io::prelude::*;

#[wasm_bindgen]
pub fn example() -> String {
    console_error_panic_hook::set_once();
    let data = "Hello, World!".as_bytes();
    let compressor = XzEncoder::new(data, 9); // ""Narrowed"" down the error to this line.
    let mut decompressor = XzDecoder::new(compressor);

    let mut contents = String::new();
    decompressor.read_to_string(&mut contents).unwrap();
    return contents;
}

index.ts I'm able to run other functions, like a simple hello world one, but if the XzEncoder::new() line is uncommented this errors.
I tried in node and also as a

Hi @DavidPHH
This issue may help you.
https://github.com/rustwasm/wasm-pack/issues/1389

That was it! Thank you very much


net: concurrent map write in DNS resolution

What version of Go are you using (go version)?

$ go version

1.17.5

What operating system and processor architecture are you using (go env)?
fatal error: concurrent map writes

goroutine 303 [running]:
runtime.throw({0x1801301, 0x8})
	/opt/hostedtoolcache/go/1.17.5/x64/src/runtime/panic.go:1198 +0x71 fp=0xc000508980 sp=0xc000508950 pc=0x434291
runtime.mapassign_faststr(0x15dce00, 0xc0003dc7e0, {0xc00003f200, 0x3a})
	/opt/hostedtoolcache/go/1.17.5/x64/src/runtime/map_faststr.go:294 +0x38b fp=0xc0005089e8 sp=0xc000508980 pc=0x412c4b
internal/singleflight.(*Group).DoChan(0xc000300370, {0xc00003f200, 0x1e4a805a7b18}, 0xc0003bcd40)
	/opt/hostedtoolcache/go/1.17.5/x64/src/internal/singleflight/singleflight.go:85 +0x213 fp=0xc000508a58 sp=0xc0005089e8 pc=0x5fbd53
net.(*Resolver).lookupIPAddr(0xc000300360, {0x1a0b028, 0xc0000b0000}, {0x17f1a5e, 0x0}, {0xc00003f180, 0x37})
	/opt/hostedtoolcache/go/1.17.5/x64/src/net/lookup.go:294 +0x50b fp=0xc000508bd8 sp=0xc000508a58 pc=0x6150cb
net.(*Resolver).internetAddrList(0x1a0b028, {0x1a0b028, 0xc0000b0000}, {0x17f1a5e, 0x2}, {0xc00003f180, 0x1a0b028})
	/opt/hostedtoolcache/go/1.17.5/x64/src/net/ipsock.go:288 +0x67a fp=0xc000508cf8 sp=0xc000508bd8 pc=0x6130da
net.(*Resolver).LookupIP(0xc000508e10, {0x1a0b028, 0xc0000b0000}, {0x17f1a5e, 0x2}, {0xc00003f180, 0x37})
	/opt/hostedtoolcache/go/1.17.5/x64/src/net/lookup.go:224 +0xf9 fp=0xc000508d90 sp=0xc000508cf8 pc=0x6148f9
github.com/ymatrix-data/matrixpod/dns.(*consistentIPChecker).WaitForIP(0xc000300360, {0x1a0b028, 0xc0000b0000}, {0xc00003f180, 0x37}, {0xc00031af80, 0x10, 0x10})
	/home/runner/work/matrixdb-ci/matrixdb-ci/dns/check.go:37 +0x155 fp=0xc000508e48 sp=0xc000508d90 pc=0x13b7b35
github.com/ymatrix-data/matrixpod/dns.WaitUntilResultAvailable({0xc00003f180, 0x37}, {0xc0003de4d0, 0x9})
	/home/runner/work/matrixdb-ci/matrixdb-ci/dns/check.go:78 +0xf4 fp=0xc000508ec0 sp=0xc000508e48 pc=0x13b7ef4
github.com/ymatrix-data/matrixpod/ssh.scanHostKeys.func1.1(0xc0002b3aa0)
	/home/runner/work/matrixdb-ci/matrixdb-ci/ssh/controller.go:35 +0x14b fp=0xc000508fc8 sp=0xc000508ec0 pc=0x145d04b
github.com/ymatrix-data/matrixpod/ssh.scanHostKeys.func1·dwrap·1()
	/home/runner/work/matrixdb-ci/matrixdb-ci/ssh/controller.go:48 +0x2d fp=0xc000508fe0 sp=0xc000508fc8 pc=0x145cecd
runtime.goexit()
	/opt/hostedtoolcache/go/1.17.5/x64/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc000508fe8 sp=0xc000508fe0 pc=0x464381
created by github.com/ymatrix-data/matrixpod/ssh.scanHostKeys.func1
	/home/runner/work/matrixdb-ci/matrixdb-ci/ssh/controller.go:29 +0x25e

What did you do?
Found in the process of github action ci/cd, no recurring method was found
What did you expect to see?
no panic.
What did you see instead?
concurrent fault in singleflight.

Does this happen repeatedly?  Can you show us code to recreate the problem?  Thanks.

This is odd.  The code is clearly using a lock around the map writes.  I don't see how this is possible.  Unless there is something corrupting memory.

Yep, I analyzed a simple code, but this is also the doubt。

2022年1月5日 下午1:38，Ian Lance Taylor @.***> 写道：
This is odd. The code is clearly using a lock around the map writes. I don't see how this is possible. Unless there is something corrupting memory.
—
Reply to this email directly, view it on GitHub https://github.com/golang/go/issues/50440#issuecomment-1005397621, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALFKFGI4MTXNRNPAGZADMNDUUPKNJANCNFSM5LJBCK2Q.
Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.
You are receiving this because you authored the thread.

Possibly related to #49075?

Possibly related to #49075?

Do you have the exact commit causing this ?

I don't think so, the only info above was that it was observed with go1.17.5. Very possibly not related to #49075 at all. But when I got the notification it was closed around the same time you were debugging #49075 I thought there could be some connection since this seemed so mysterious.


events: autogenerate fieldpath filters

To ensure consistent fieldpath matching for events, we generate the
fieldpath matching using protobuf definitions. This is done through a
plugin called "fieldpath" that defines a Field method for each type
with the plugin enabled. Generated code handles top-level envelope
fields, as well as deferred serialization for matching any types.
In practice, this means that we can cheaply match events on topic and
namespace. If we want to match on attributes within the event, we can
use the event prefix to address these fields. For example, the
following will match all envelopes that have a field named
container_id that has the value testing:
ctr events "event.container_id==testing"

The above will decode the underlying event and check that particular
field. Accordingly, if only topic or namespace is used, the event
will not be decoded and only match on the envelope.

@stevvooe also, the DCO is missing :scream_cat:

Codecov Report

Merging #1271 into master will not change coverage.
The diff coverage is n/a.

@@          Coverage Diff           @@
##           master   #1271   +/-   ##
======================================
  Coverage    23.7%   23.7%
======================================
  Files          40      40
  Lines        4526    4526
======================================
  Hits         1073    1073
  Misses       3251    3251
  Partials      202     202

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 bb7b41a...75e7b67. Read the comment docs.

LGTM


Is there a line restriction on the blacklist

I want to know if there are any restrictions on the number of rows of domains
For blacklist?
If there is a list of 1,000,000 lines this will affect speed?

Hes it has negative loading impact. That's why good filter list uses atomizing. See here. DNS/DnsCrypt was never developed to block such huge mass. Instead I always recommend to work with whitelist instead but that might be something for feature request.

And the developer said that Simple DNSCrypt does not work with whitelists
Or something I did not understand correctly

There shouldn't be any problems with dnscrypt-proxy and 1,000,000 names or IPs being filtered, unless wildcards a present both after and before a name (*example* requires testing every position for every potential match, which is slow, but filtering *.example.com or example.* is very fast).

And I do not download directly but through a file,
How do I specify a mask in the file?
Here is an example of a blacklist


Adds support for laravel 9

Description
Adds support for Laravel 9
Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Checklist:
Go over all the following points, and put an x in all the boxes that apply.
Please, please, please, don't send your pull request until all of the boxes are ticked. Once your pull request is created, it will trigger a build on our continuous integration server to make sure your tests and code style pass.

[x] I have read the CONTRIBUTING document.
[x] My pull request addresses exactly one patch/feature.
[x] I have created a branch for this patch/feature.
[x] Each individual commit in the pull request is meaningful.
[ ] I have added tests to cover my changes.
[x] If my change requires a change to the documentation, I have updated it accordingly.

If you're unsure about any of these, don't hesitate to ask. We're here to help!

Thank you @wilburpowery for the PR. I wasn't avare there is a new laravel release.
I hope you didn't wait too long for this.
I will extend the travis matrix some day to run the tests against laravel 9.


Make docs a badge link

Maybe it's just me preferring the badges but the docs link felt a bit lost on its own and it seems better with the badges up top.
Feel free to close if you disagree :green_heart:

Thanks, I went with documentation-gray that Phoenix & Ecto also use!


Question: What is maximum_sinking_velocity(bgc) expected behaviour?

Hi!
I'm working on implementing a biogeochemistry model using OceanBioME and have found it incredibly useful, so thank you!
I have a question about themaximum_sinking_velocity(bgc) method. I have noticed that NPZD and LOBSTER both define it but not PISCES. it is also implemented in the main Biogeochemistry class where it is set to return 0 and this is the method that seems to be called in the code.
Additionally, if I use the example in the README and try to call this method, it works if called on the biogeochemistry class (returning a 0) but gives an error if called on biogeochemistry.underlying_biogeochemistry (which is NPZD in this case):
julia> OceanBioME.maximum_sinking_velocity(biogeochemistry)
0.0

julia> OceanBioME.maximum_sinking_velocity(biogeochemistry.underlying_biogeochemistry)
ERROR: type Field has no field w

Is the expected behaviour that the returned value is always 0? What is this used for?

Hi @radka-j,
The intention of this function was always to return the maximum sinking velocity that a bgc model imposed, but it seems like it was never tested and then forgotten. They could then be used by the code you linked in a timestep wizard-like:
https://github.com/OceanBioME/OceanBioME.jl/blob/eb89012976f33bc50814ee6a297d2b6cdecdd32a/paper/figures/column.jl#L63
maximum_sinking_velocity(bgc) is hitting the fallback:
https://github.com/OceanBioME/OceanBioME.jl/blob/eb89012976f33bc50814ee6a297d2b6cdecdd32a/src/OceanBioME.jl#L163
because I never implemented:
maximum_sinking_velocity(bgc::CompleteBiogeochemistry) = maximum_sinking_velocity(bgc.underlying_biogeochemistry)

and at some point I forgot to update the NPZD and LOBSTER methods which should be like:
 @inline maximum_sinking_velocity(bgc::LOBSTER) = maximum(abs, bgc.sinking_velocities.bPOM)

not
https://github.com/OceanBioME/OceanBioME.jl/blob/eb89012976f33bc50814ee6a297d2b6cdecdd32a/src/Models/AdvectedPopulations/LOBSTER/LOBSTER.jl#L442
I can fix this at some point, or if you'd like to use it feel free to PR the changes if I don't get round to it soon enough!

The intention of this function was always to return the maximum sinking velocity that a bgc model imposed, but it seems like it was never tested and then forgotten. They could then be used by the code you linked in a timestep wizard-like:

That'd be appropriate to implement in Oceananigans if it is extending TimeStepWizard.

The intention of this function was always to return the maximum sinking velocity that a bgc model imposed, but it seems like it was never tested and then forgotten. They could then be used by the code you linked in a timestep wizard-like:

That'd be appropriate to implement in Oceananigans if it is extending TimeStepWizard.

That's probably a much better approach since it should just be able to return something like maximum(map(n->maximum(sinking_velocities[n].w), 1:length(sinking_velocities)), I guess this never actually needed to be defined for all models but we can just add methods to make it more efficient if we want to

I think the right solution is to use total_velocities to compute the CFL here:
https://github.com/CliMA/Oceananigans.jl/blob/5dd01ddfe73dd03515b52e6499b27c1b61c71364/src/Models/NonhydrostaticModels/nonhydrostatic_tendency_kernel_functions.jl#L259-L261
This is guaranteed to work universally I think and wouldn't require maintaining any code in OceanBioME specifically?


Modificaciones Varias

-Adaptacion para JsonObject
-Renombramiento de clase a Senia
-Reubicacion de package IBuilder.

Codecov Report

:exclamation: No coverage uploaded for pull request base (Algo2MasFachada@4ce05be). Click here to learn what that means.
The diff coverage is n/a.

@@                Coverage Diff                 @@
##             Algo2MasFachada       #1   +/-   ##
==================================================
  Coverage                   ?   20.92%
  Complexity                 ?       46
==================================================
  Files                      ?       49
  Lines                      ?      497
  Branches                   ?       17
==================================================
  Hits                       ?      104
  Misses                     ?      390
  Partials                   ?        3

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 4ce05be...c28414b. Read the comment docs.